1.串口过载逻辑及可能导致问题
GD32及STM32中USART大部分具有过载判断逻辑(ORE),且部分芯片内无法关闭,读取或者写入缓冲器Data后也无法清除该标志。在使能串口接收或者发送中断的情况下,这种工况下会一直进入串口中断。
2.处理对策
根据芯片手册,过载标志可通过读取对应状态寄存器清除;所以在中断处理代码,增加读取状态寄存器,清除此标志;
2023-4-8更新:
3.进一步优化:可以使用DMA传输数据
a)如果不校验帧头可以直接使用串口空闲中断,空闲中断内置位标志,主循环内复制缓存数据到处理数据;
b)校验帧头,可以使用接收中断,中断校验完成帧头后开启DMA搬运,主循环内做DMA传输的超时处理;