我正在执行一个简单的状态机、该状态机基于引脚更改进行步进、并在步进之间休眠。 在每次引脚更改时调用 ISR 的开销上花费了大量时间、这会增加延迟和功耗。 如果我只能让每个状态更新后进入睡眠状态、然后再进行下一次更新和睡眠等操作、效率会更高
一个非常简单的示例、用于在受监控的引脚上每次发生变化时切换 P1.1。
while (1) {
P1OUT ^= BIT1;
__bis_SR_register(LPM4bits+GIE)
P1OUT ^= BIT1;
__bis_SR_register(LPM4bits+GIE)
P1OUT ^= BIT1;
__bis_SR_register(LPM4bits+GIE)
P1OUT ^= BIT1;
__bis_SR_register(LPM4bits+GIE)
P1OUT ^= BIT1;
__bis_SR_register(LPM4bits+GIE)
}
我意识 到、我可以有一个空 ISR、其中只有一个功能相同的 RETI、但这会增加 PC 和 SR 不必要的入栈和 POP 所产生的大量开销。
是否有任何方法可以抑制这些器件在唤醒时进行的 ISR 调用?
谢谢!
