问题:使用STM32G0B1 串口3 接收GPS 串口数据,频率1HZ,波特率9600,GPS 数据一帧约760字节,GPS 刚启动前面数据接收正常,中途某个时刻开始串口接收数据失败,进入不了串口中断,重启MCU后能恢复,过段时间问题仍会复现;
尝试办法:0.首先监控串口GPS数据发送没停止,一直在发数据
1.怀疑是中断优先级过低,调整优先级后无效;
2.怀疑串口上下拉配置问题,改变配置后无效;
3.怀疑是串口1、串口2 干扰到UART3,屏蔽掉仍然无效;
4.怀疑是其他初始化代码和任务创建干扰,屏蔽掉仍无效;
5.怀疑是DMA 接收Buffer长度不够足够长,导致某次中断没有及时产生,串口数据累积,造成DMA 异常,将DMA 长度设置成4K,问题仍然复现;
6.屏蔽掉串口3的DMA 中断,问题仍复现;
7.怀疑是DMA 产生了某种错误没有清除,在DMA 中断处理中增加一些标记清除,问题仍复现;
8.监控GPS 串口数据,发现用串口工具接收到9600的波特率数据,稀稀拉拉,上一帧还没结束,下一帧就来了,担心是这样没有有效的空闲中断&