由于软件模拟串口通信等种种原因,需要在一段代码的执行过程中暂时关闭中断,此前我使用如下代码
uint16_t x = _get_interrupt_state(); _disable_interrupts(); _set_interrupt_state(x);
在我的理解里,相当于如下指令
PUSH SR BIC #GIE, SR POP SR
但是我有了新的疑虑:
在入栈 SR 到复位 GIE 之间是否有可能触发中断?
如果可能触发中断,那么中断中对 SR 的修改将在执行完毕后对 SR 恢复而丢弃,但是此时中断已经被消耗,显然这个行为不符合预期。
我的疑虑存在吗,如果存在,应该如何正确地暂时关闭中断呢?

