项目中遇到的问题————Flash擦写

在断电保护的压力测试的过程中,不知道为什么,总是运行几十次就卡掉了。而且极其不稳定,有时几十次,有时几百次。用star抓包,发现所有包都很正常,就是在最后发送完以后,没有回状态字,而是直接卡死。刚开始猜想可能的原因,可能是误差累计造成的。因为记得以前在通信的时候晕倒过,如果每一个字节的传送,有时间误差,前几帧还能正常传送,但是随着误差的不断累计,就会造成字节不能正常传送,现在想想不可能是这个错误,因为到最后字节的传送都是正常的。然后发现把断电保护中的Flash操作屏蔽掉后就不会发生这样的错误,根据前人的经验,推测可能的原因,就是发送0x60的错误。因为在这里是通过定时器中断的方式进行发送60的,而Flash擦写又比较耗时,而且不可被打断,也就是会出现这样的一种情况,在Flash擦写还没有结束的时候,产生了中断,造成矛盾。解决方法:在Flash的擦写函数中,先保存中断的状态,关闭中断,处理完成后再恢复。

你可能感兴趣的:(单片机)