summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Mason <c.mason@inchipdesign.com.au>2019-12-05 00:46:24 +1100
committerDamien George <damien.p.george@gmail.com>2019-12-05 15:31:41 +1100
commitd61e7a6d8a146f0dd528ebc398c576d69a78f41c (patch)
treeae4ea40662be28888e947654b55dbd3a10bc8fa8
parent9ca8a503ed3d7b31fc1cfe0e2e51925d3c0c3396 (diff)
stm32/uart: Add support for UART4/5 on L0 MCUs.
-rw-r--r--ports/stm32/mpconfigboard_common.h2
-rw-r--r--ports/stm32/stm32_it.c9
-rw-r--r--ports/stm32/uart.c8
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;