[信息] stm32f103zet6串口通讯过程中报ORE错误

[复制链接]
539|1
 楼主| 豌豆爹 发表于 2021-3-17 14:40 | 显示全部楼层 |阅读模式
各位大佬,最近调试串口时,使用了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);        
    }  
}
香水城 发表于 2021-3-18 11:40 | 显示全部楼层
本帖最后由 香水城 于 2021-4-11 20:29 编辑

它产生 是因为 接收出现了溢出问题, 要想让他不产生 就别发生溢出错误。

可能的话将发送放慢点,接收处理程序尽量精简,别影响到数据的正常接收。
或者考虑DMA接收。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

534

主题

2316

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部