想象一下以下场景。微控制器是总线上的从机,比如SPI。一旦在总线上写入一个字节,它就想要睡眠,直到传输完字节为止。代码看起来像这样:
write_byte_to_bus(byte);
wait_for_interrupt(); /* a single assembly instruction */
既然微控制器不是主设备,理论上(并且可能是总线真的很快),字节可以在主设备请求时立即传输,因此会发生这样的事情:
write_byte_to_bus(byte);
interrupt arrives saying
that operations is done
wait_for_interrupt();
导致微控制器在中断到来后暂停中断。如何保护自己免受这种情况的影响?
答案 0 :(得分:1)
对于您的特定微控制器,您可以先使用SIM
禁用中断,然后执行write_byte_to_bus
,然后WFI
将重新启用中断。
其他微控制器可能有不同的方法来管理它。