昨天晚上睡前突然想起来这个,防为止以后遇到相同问题不记得解决方案故记录。
问题描述:校电赛时候的问题,我需要在触发一定条件的时候调用中断回调,驱动sim模块发送短信,但是这个短信是以指令形式发送的,也就是指令与指令直接需要一定等待时间,但是直接使用delay会导致程序宕机
尝试方案:
- 加一个flag,第一次进入发短信部分的时候置为1,发完了置为0,如果已经是1就不进入发短信部分
- 用一个不定长的接收来替代delay
都不可行。
原因分析:中断的优先级问题,当一个条件反复触发的时候,会多次进入中断回调函数,后来的中断会打断先来的中断,导致程序无法进行下去。
解决方法:
- 不要在中断里用delay。这也是实际上的解决方案。
- 改一下优先级,把sim模块发短信的部分的优先级调高,这样就打断不了了。
其实还是不要用delay啦