串口突然接收不到数据:ORE:过载错误 (Overrun error)

        最近在使用串口DMA接收4G模块的AT指令回复时,一开始还能够接收到数据,后来运行到某个AT指令发送的时候,后面就接收不到数据了。进入内部的状态寄存器查看,发现接收数据过程中出现了错误:ORE:过载错误。

        当数据接收区或者FIFO区有数据或者满时,又有新数据进来,会导致发生溢出错误,一旦发生溢出错误,RX 移位寄存区虽然能有新数据不断的覆盖,但是数据不会到达RXR或FIFO(现象是:RXNE在ORE置位时不会被置位),导致程序中不能读到新的数据。只有通过ICR清除ORE才能使得RXNE在接收到新数据时置位。

       经过测试发现,即使在中断中清空了标志位,还是会出现这种情况,无奈之下只好增加了接收数组的容量,才解决了这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值