flash擦写操作会影响中断

博客讨论了在单片机程序升级过程中遇到的一个bug,即在Flash擦除期间,上位机发送的消息无法被正确接收,队列长度始终为0。问题根源在于Flash操作干扰了中断服务,导致中断函数未被调用。解决方案是调整程序流程,确保在Flash操作完成后执行向上位机发送请求,或者发送请求后适当延时。该问题的解决对于确保串口通信的稳定性和数据完整性至关重要。
摘要由CSDN通过智能技术生成

本来要实现的部分:在程序升级阶段握手成功后要实现flash片区的擦除和向上位机发送请求。然后对上位机发来的数据进行解析缓存。

bug现象:上位机通过串口给单片机发送消息,但是最后发现收到消息的队列长度为0(正常情况下接收中断会将收到的数据入队列)。

分析:经过检查发现接收中断里面的入队列函数和计算队列长度函数都是没有任何问题的。那么问题就可能是出在中断函数,最后发现在flash擦除期间确实没有进入中断函数。

修改:将向上位机发送请求放在擦写之后执行,或者给上位机发送完请求后延时一段时间。

在其他程序中将中断触发的时间点避开flash操作即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值