工具/软件:TI C/C++编译器
在 MSP430 GCC 用户指南(修订版 C)的第7.2节中、有一个"关键"属性、记录为"进入时禁用中断、退出时恢复之前的中断状态"。 当我使用此属性编译 ISR 时、它会在 ISR 的开头添加一个 PUSH R2;DINT;NOP、并在末尾添加其他指令来撤消此操作。
但是、在《MSP430x5xx 系列用户指南》(修订版 Q)的第1.3.4.1节中、它指定了在进入用户 ISR 之前、"3. SR 被压入堆栈。" 此外,"6. 除了 SCG0、SR 的所有位都被清零、从而终止任何低功耗模式。 由于 GIE 位被清零、进一步的中断被禁用。"
这使得 MSP430 GCC 中的关键属性看起来是多余的。 有人能在这里解释一下这种冗余吗? 何时应将 ISR 标记为"严重"?