×
嵌入式 > 技术百科 > 详情

关于MSP430中断、中断嵌套的一些注意事项

发布时间:2020-06-05 发布时间:
|
1、MSP430默认的是关闭中断嵌套的,除非在一个中断程序里面再次开启了总中断EINT();2、当进入中断程序时,只要不在中断中再次开中断,则总中断总是关闭的,此时如果来中断,不管中断的优先级高还是低,都不执行。

3、如果在中断A中开放了总中断,则可以响应之后到来的中断B(无论B的优先级是高还是低),B执行完了,再继续执行A。

这里,进入中断B之后,总中断同样也会关闭的。如果中断B执行的过程中,还需要执行中断C,则此时也要在中断B中开放总中断。

若不需要响应中断,则不用开放总中断。B执行完以后,跳出中断程序,进入A程序执行的时候,总中断会自动打开。

4、若在中断之中开放了总中断,那么后来的中断同时发生多个的话,则会按照优先级的顺序来执行,即MSP430的中断优先级只有在

多个中断同时到来的时候才会起作用。

5、对于单中断源的中断,

只要响应中断,系统的硬件会自动的清除中断标志位。

对于TA、TB这样的定时器的比较、捕获中断,只要访问TAIV/TBIV标志位就会被自动清除。

对于多源中断,需要手动清除标志位。

比如:P1、P2的中断,需要手动清楚相应的标志位。

如果在这种中断中使用“_EINT();”,开中断,而在打开中断之前,没有进行原来中断标识位的清除工作,就会有相同的中断

不断的进行嵌套。而导致堆栈溢出引起复位,所以在这类中断中,必须先清除标志位,再打开中断开关。要不然等着死机吧。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Semtech的LoRa技术携手Chipsafer将牧场连接至云端