|
本帖最后由 ticat710 于 2019-7-23 17:16 编辑 当快速给串口发数据后,发现串口不再相应,即使数据慢下来也是,设断点后发现不在进中断,在串口实例 Uart_Handler中,发现TxXferSize ,RxXferSize有数值,并且Mask(UART Rx RDR register mask) = 0xff, ErrorCode = 0x00000008 (串口过载错误), 在串口中断中,判断串口过载错并把标志位清除,没有改善,请问怎么解决??? |
微信公众号
手机版
设置断点跟踪到 通用中断处理 HAL_UART_IRQHandler()中,发现发生ore错误后,不但把ErrorCode设置了,而且还关闭了接收中断,导致串口不在接收数据
static void HART_EndRxTransfer()
{
...
CLEAR_BIT(huart->Instance->CR1.(USART_CR1_RXNEIE | USART_FEIE));
}
在weak HAL_UART_ErrorCallback()函数中可根据相应错误,做出相应修改,虽然能再次触发中断并接收数据,但是由于数据发送太快,不可避免的要丢失数据,只能发送完毕后,稍等再发