本帖最后由 muyichuan2012 于 2021-5-20 09:41 编辑
中断处理技巧--连续进入两次中断
Q:
在处理中断函数时,有时会出现连续两次进入中断,与实际预期不符。
出现问题时的代码写法一般为,在中断函数最后一句才清中断标志位。
A:
如下图可以知道,这是基于ARM M3/M4内核的一个小知识点。
原因:在中断函数最后一句才清中断标志位时,其实硬件需要时间,可能导致在出中断后,清标志位的硬件行为还未完成,从未导致再次进入中断。
处理方法:
方式1 如下图STF407方法,在中断函数中将清除中断标志位放在前面,
方式2 在中断函数最后一句才清中断标志位,但在清除语句加入若干个NOP指令。
方式1/2的目的都是的清除标志位后,让MCU有足够的时间去执行硬件清除行为,从而避开重复进入中断的非预期行为。
|