此内容由EEWORLD论坛网友tiankai001原创,如需转载或用于商业用途需征得作者同意并注明出处
msp430单片机开发实录(20)
现象:
关于msp430单片机的中断控制,能够控制所有可屏蔽中断的语句有两个_EINT();和_DINT();其中_EINT();是打开所有可屏蔽中断的使能,而_DINT();时关闭所有可屏蔽中断的使能。
试验:
程序中,如果使用了_EINT();语句,表明所有可屏蔽中断已被允许工作,但并不是说所有中断开始工作,如果想要让某个中断工作,还需要单独使能该中断的控制寄存器。
而使用_DINT();后,所有可屏蔽中断立即停止工作,此时即使单独使能某个中断控制寄存器,该中断仍不会工作,必须先用EINT使能所有中断后,才能通过使能某中断寄存器的方式让某个寄存器工作。
验证:
一般情况下,使用_EINT();和_DINT()语句后,最好过几个时钟周期再去配置具体的中断控制寄存器,可以在_EINT();和_DINT()语句后加几个NOP();语句。
备注:
MSP430单片机没有中断嵌套,程序进入某个中断程序后,系统会自动执行_DINT();操作,此时若想实现中断嵌套,必须先用_EINT();语句,然后再打开想要嵌套的中断。
|