diff options
author | Chris Mason <c.mason@inchipdesign.com.au> | 2019-12-05 00:46:24 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2019-12-05 15:31:41 +1100 |
commit | d61e7a6d8a146f0dd528ebc398c576d69a78f41c (patch) | |
tree | ae4ea40662be28888e947654b55dbd3a10bc8fa8 | |
parent | 9ca8a503ed3d7b31fc1cfe0e2e51925d3c0c3396 (diff) |
stm32/uart: Add support for UART4/5 on L0 MCUs.
-rw-r--r-- | ports/stm32/mpconfigboard_common.h | 2 | ||||
-rw-r--r-- | ports/stm32/stm32_it.c | 9 | ||||
-rw-r--r-- | ports/stm32/uart.c | 8 |
3 files changed, 18 insertions, 1 deletions
diff --git a/ports/stm32/mpconfigboard_common.h b/ports/stm32/mpconfigboard_common.h index e0c77719e..ce5c715ac 100644 --- a/ports/stm32/mpconfigboard_common.h +++ b/ports/stm32/mpconfigboard_common.h @@ -196,7 +196,7 @@ #define PYB_EXTI_NUM_VECTORS (30) // TODO (22 configurable, 7 direct) #define MICROPY_HW_MAX_I2C (3) #define MICROPY_HW_MAX_TIMER (22) -#define MICROPY_HW_MAX_UART (4) +#define MICROPY_HW_MAX_UART (5) // Configuration for STM32L4 series #elif defined(STM32L4) diff --git a/ports/stm32/stm32_it.c b/ports/stm32/stm32_it.c index 3a4709d9f..e12cf4bf2 100644 --- a/ports/stm32/stm32_it.c +++ b/ports/stm32/stm32_it.c @@ -731,6 +731,15 @@ void USART3_8_IRQHandler(void) { IRQ_EXIT(USART3_8_IRQn); } +#elif defined(STM32L0) + +void USART4_5_IRQHandler(void) { + IRQ_ENTER(USART4_5_IRQn); + uart_irq_handler(4); + uart_irq_handler(5); + IRQ_EXIT(USART4_5_IRQn); +} + #else void USART3_IRQHandler(void) { diff --git a/ports/stm32/uart.c b/ports/stm32/uart.c index 72bb53f80..d2d234a2c 100644 --- a/ports/stm32/uart.c +++ b/ports/stm32/uart.c @@ -247,6 +247,10 @@ bool uart_init(pyb_uart_obj_t *uart_obj, UARTx = USART4; irqn = USART3_8_IRQn; __HAL_RCC_USART4_CLK_ENABLE(); + #elif defined(STM32L0) + UARTx = USART4; + irqn = USART4_5_IRQn; + __HAL_RCC_USART4_CLK_ENABLE(); #else UARTx = UART4; irqn = UART4_IRQn; @@ -274,6 +278,10 @@ bool uart_init(pyb_uart_obj_t *uart_obj, UARTx = USART5; irqn = USART3_8_IRQn; __HAL_RCC_USART5_CLK_ENABLE(); + #elif defined(STM32L0) + UARTx = USART5; + irqn = USART4_5_IRQn; + __HAL_RCC_USART5_CLK_ENABLE(); #else UARTx = UART5; irqn = UART5_IRQn; |