From f1e44c7c4f145f61dcedf97d0adff4587fd504cd Mon Sep 17 00:00:00 2001 From: cumin <13809292481@163.com> Date: Mon, 10 Aug 2026 15:55:05 +0800 Subject: [PATCH] fix(uart): support STM32C5 HAL v2 reset and IRQ handling --- libraries/SrcWrapper/src/stm32/uart.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libraries/SrcWrapper/src/stm32/uart.c b/libraries/SrcWrapper/src/stm32/uart.c index 62ae6bd200..d5558f12b9 100644 --- a/libraries/SrcWrapper/src/stm32/uart.c +++ b/libraries/SrcWrapper/src/stm32/uart.c @@ -692,9 +692,14 @@ void uart_deinit(serial_t *obj) #endif #if defined(USART6_BASE) case UART6_INDEX: +#if defined(USE_HALV2_DRIVER) + HAL_RCC_USART6_Reset(); + HAL_RCC_USART6_DisableClock(); +#else __HAL_RCC_USART6_FORCE_RESET(); __HAL_RCC_USART6_RELEASE_RESET(); __HAL_RCC_USART6_CLK_DISABLE(); +#endif break; #endif #if defined(LPUART1_BASE) @@ -725,9 +730,14 @@ void uart_deinit(serial_t *obj) #endif #if defined(UART7_BASE) case UART7_INDEX: +#if defined(USE_HALV2_DRIVER) + HAL_RCC_UART7_Reset(); + HAL_RCC_UART7_DisableClock(); +#else __HAL_RCC_UART7_FORCE_RESET(); __HAL_RCC_UART7_RELEASE_RESET(); __HAL_RCC_UART7_CLK_DISABLE(); +#endif break; #elif defined(USART7_BASE) case UART7_INDEX: @@ -1460,7 +1470,11 @@ void UART5_IRQHandler(void) #if defined(USART6_BASE) && !defined(STM32F0xx) && !defined(STM32G0xx) void USART6_IRQHandler(void) { +#if defined(USE_HALV2_DRIVER) + HAL_CORTEX_NVIC_ClearPendingIRQ(USART6_IRQn); +#else HAL_NVIC_ClearPendingIRQ(USART6_IRQn); +#endif HAL_UART_IRQHandler(uart_handlers[UART6_INDEX]); } #endif @@ -1490,7 +1504,11 @@ void LPUART1_IRQHandler(void) #if defined(UART7_BASE) void UART7_IRQHandler(void) { +#if defined(USE_HALV2_DRIVER) + HAL_CORTEX_NVIC_ClearPendingIRQ(UART7_IRQn); +#else HAL_NVIC_ClearPendingIRQ(UART7_IRQn); +#endif HAL_UART_IRQHandler(uart_handlers[UART7_INDEX]); } #endif