微控制器中的中断处理和FSM示例
最初的问题 我对微控制器中的中断处理有一个一般性的问题。我正在使用MSP430,但我认为这个问题可能会扩展到其他uC。我想知道是否经常在代码中启用/禁用中断是一种好习惯。我的意思是,如果我有一部分对中断不敏感的代码(或者更糟糕的是,出于某种原因,一定不能监听中断),那么这样做会更好: 在关键部分之前禁用中断,然后在其后重新启用它们。 在相应的ISR中放置一个标志,并(而不是禁用该中断),在关键部分之前将标志设置为false,然后在紧要部分之前将其重置为true。防止执行ISR的代码。 两者都不提供,因此欢迎提出建议! 更新:中断和状态图 我将提供具体情况。让我们假设我们要实现一个状态图,该状态图由4个块组成: 过渡/效果。 退出条件。 进入活动。 做活动。 这就是教授在大学里教给我们的。遵循此方案可能不是最好的方法: while(true) { /* Transitions/Effects */ //---------------------------------------------------------------------- next_state = current_state; switch (current_state) { case STATE_A: if(EVENT1) {next_state = STATE_C} if(d == THRESHOLD) {next_state = STATE_D; a++} break; case STATE_B: // transitions and effects break; (...) } /* Exit activity …