打印
[信息]

stm32f103zet6串口通讯过程中报ORE错误

[复制链接]
447|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接收。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

513

主题

1978

帖子

5

粉丝