解决STM32G0B1 串口DMA 空闲中断接收数据中途失效问题

问题:使用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的波特率数据,稀稀拉拉,上一帧还没结束,下一帧就来了,担心是这样没有有效的空闲中断&

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值