当 ISR 处理 P1.0上的中断时、在 P1.2和 P1.3上会快速而连续地发生中断。 能否确定最后两次中断的顺序?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
当 ISR 处理 P1.0上的中断时、在 P1.2和 P1.3上会快速而连续地发生中断。 能否确定最后两次中断的顺序?
速度有多快? 只要您重新启用诸如 Cash Hao11这样的中断、您就可以保存时间戳或设置标志:
volatile char flagP12WentFirst = 0;
volatile char flagP13WentFirst = 0;
P1.2中断
if (flagP13WentFirst = 0) flagP12WentFirst = 1
P1.2中断
if (flagP12WentFirst = 0) flagP13WentFirst = 1
请注意这些中断的执行速度。
这仅在计时完美时有效。
P1.0触发、ISR 开始并执行一个开关(P1IV)、有望在另一个中断发生之前。 该代码位的第一步是再次启用全局中断。 现在、如果发生另一个中断、它将被处理。
假设将触发 P1.1。 保存状态并返回到开关(P1IV)需要一些时间、此时另一个引脚可能已触发中断。 它们由 P1IV 按照优先顺序而不是按发生顺序提供服务。
对时间敏感、因此完全没有用处来决定首先发生的情况。 您将需要一些外部硬件来解决该问题。