From e96acccce6b79d72cc59a11d918ebbeea6eb1075 Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Tue, 13 Oct 2026 16:09:21 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=B8=BB=E7=BA=BF=E5=BE=85=E5=90=88?= =?UTF-8?q?=E3=80=91=E5=A2=9E=E5=8A=A0=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bspMCU/bsp_uart.c | 19 +++++++++++++++++++ bspMCU/include/bsp_uart.h | 1 + project | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/bspMCU/bsp_uart.c b/bspMCU/bsp_uart.c index 5ef8a64..79dce8c 100644 --- a/bspMCU/bsp_uart.c +++ b/bspMCU/bsp_uart.c @@ -159,4 +159,23 @@ void UART_RX_IRQHandler(TComCtrl *_ptComCtrl) #endif } +void UART_RX_ERRORHandler(TComCtrl *_ptComCtrl) +{ + TUartUserData *ptUartUserData = (TUartUserData *)_ptComCtrl->m_pUserData; + if (NULL == ptUartUserData) return; + /* 先读 RDR,清除残留 RXNE */ + volatile uint32_t dummy = ptUartUserData->m_uart->Instance->RDR; + (void)dummy; + + /* 清除 ORE 等错误标志 */ + ptUartUserData->m_uart->Instance->ICR = USART_ICR_ORECF | USART_ICR_FECF | USART_ICR_PECF | USART_ICR_NECF; + + /* HAL 发生 ORE 时内部会锁住 huart,必须解锁后 + 才能重新启动 Receive_IT */ + __HAL_UNLOCK(ptUartUserData->m_uart); + + /* 重新启动中断接收 */ + HAL_UART_Receive_IT(ptUartUserData->m_uart, &ptUartUserData->m_temp, 1); +} + #endif diff --git a/bspMCU/include/bsp_uart.h b/bspMCU/include/bsp_uart.h index 3df9c50..dc4ea94 100644 --- a/bspMCU/include/bsp_uart.h +++ b/bspMCU/include/bsp_uart.h @@ -37,6 +37,7 @@ extern TUartUserData *UART_userdata_init(int _iID, int32_t _uiBaudRate, uint32_t extern void UART_IT_init(TComCtrl *_ptComCtrl); extern void UART_DMA_RX_IRQHandler(TComCtrl *_ptComCtrl); extern void UART_RX_IRQHandler(TComCtrl *_ptComCtrl); +extern void UART_RX_ERRORHandler(TComCtrl *_ptComCtrl); #endif #endif /* end of include guard: BSP_UART_H */ diff --git a/project b/project index 86e867c..bb250aa 160000 --- a/project +++ b/project @@ -1 +1 @@ -Subproject commit 86e867c5d8efd261ce78e0ee480771e8b6e8a7f7 +Subproject commit bb250aa22b82811f6f752bb266d19092e6a78b61