diff --git a/libraries/SrcWrapper/src/stm32/uart.c b/libraries/SrcWrapper/src/stm32/uart.c index 187335521d..e762e007ab 100644 --- a/libraries/SrcWrapper/src/stm32/uart.c +++ b/libraries/SrcWrapper/src/stm32/uart.c @@ -68,6 +68,12 @@ typedef enum { #if defined(UART10_BASE) || defined(USART10_BASE) UART10_INDEX, #endif +#if defined(USART11_BASE) + UART11_INDEX, +#endif +#if defined(UART12_BASE) + UART12_INDEX, +#endif #if defined(LPUART1_BASE) LPUART1_INDEX, #endif @@ -339,7 +345,24 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par obj->irq = USART10_IRQn; } #endif - +#if defined(USART11_BASE) + else if (obj->uart == USART11) { + __HAL_RCC_USART11_FORCE_RESET(); + __HAL_RCC_USART11_RELEASE_RESET(); + __HAL_RCC_USART11_CLK_ENABLE(); + obj->index = UART11_INDEX; + obj->irq = USART11_IRQn; + } +#endif +#if defined(UART12_BASE) + else if (obj->uart == UART12) { + __HAL_RCC_UART12_FORCE_RESET(); + __HAL_RCC_UART12_RELEASE_RESET(); + __HAL_RCC_UART12_CLK_ENABLE(); + obj->index = UART12_INDEX; + obj->irq = UART12_IRQn; + } +#endif /* Configure UART GPIO pins */ #if defined(UART_ADVFEATURE_SWAP_INIT) uint32_t pin_swap = UART_ADVFEATURE_SWAP_DISABLE; @@ -660,6 +683,20 @@ void uart_deinit(serial_t *obj) __HAL_RCC_USART10_RELEASE_RESET(); __HAL_RCC_USART10_CLK_DISABLE(); break; +#endif +#if defined(USART11_BASE) + case UART11_INDEX: + __HAL_RCC_USART11_FORCE_RESET(); + __HAL_RCC_USART11_RELEASE_RESET(); + __HAL_RCC_USART11_CLK_DISABLE(); + break; +#endif +#if defined(UART12_BASE) + case UART12_INDEX: + __HAL_RCC_UART12_FORCE_RESET(); + __HAL_RCC_UART12_RELEASE_RESET(); + __HAL_RCC_UART12_CLK_DISABLE(); + break; #endif } @@ -1280,6 +1317,32 @@ void USART10_IRQHandler(void) } #endif +/** + * @brief USART 11 IRQ handler + * @param None + * @retval None + */ +#if defined(USART11_BASE) +void USART11_IRQHandler(void) +{ + HAL_NVIC_ClearPendingIRQ(USART11_IRQn); + HAL_UART_IRQHandler(uart_handlers[UART11_INDEX]); +} +#endif + +/** + * @brief UART 12 IRQ handler + * @param None + * @retval None + */ +#if defined(UART12_BASE) +void UART12_IRQHandler(void) +{ + HAL_NVIC_ClearPendingIRQ(UART12_IRQn); + HAL_UART_IRQHandler(uart_handlers[UART12_INDEX]); +} +#endif + /** * @brief HAL UART Call Back * @param UART handler