各位大佬,最近调试串口时,使用了HAL库的接收中断函数,发送顺序发,300ms测试发现偶尔出现不能进中断,但是能发送的问题。后测试确认为ORE报错。
在错误回调函数中加入了清标志,虽然可以让串口继续收数据,但是当前的数据还是丢掉了。
所以想请问各位大佬:
1.ORE的产生原因?能否不让它产生。
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
if(huart->ErrorCode != HAL_UART_ERROR_NONE)
{
//ERR_TRACE0("baseaddr = 0x%x, error code = 0x%x", huart->Instance, huart->ErrorCode);
__HAL_UART_CLEAR_OREFLAG(huart);
huart->RxState = HAL_UART_STATE_READY;
HAL_UART_Receive_IT(huart, (uint8_t*)&huart->rx_cache, 1);
}
} |