Interrupt handling 如何在msp430g2553中启用嵌套中断?
我想在msp430上启用嵌套中断,就像我想在定时器的ISR中使用UART一样。每当Interrupt handling 如何在msp430g2553中启用嵌套中断?,interrupt-handling,msp430,Interrupt Handling,Msp430,我想在msp430上启用嵌套中断,就像我想在定时器的ISR中使用UART一样。每当msp430微控制器即将开始执行中断处理程序功能时,它要做的第一件事就是禁用全局“interrupts enabled”(中断已启用)标志,这是状态寄存器r2中的一位。默认情况下,这实际上禁止了中断嵌套 要解决此问题,请在中断处理程序函数开始时将寄存器标志设置回1,以启用中断。为了简化语法,实际上有一个eint指令: asm("eint"); 通常,emnabe还有编译器特定的宏,可以避免编写汇编代码。这应适用于
msp430
微控制器即将开始执行中断处理程序功能时,它要做的第一件事就是禁用全局“interrupts enabled”(中断已启用)标志,这是状态寄存器r2
中的一位。默认情况下,这实际上禁止了中断嵌套
要解决此问题,请在中断处理程序函数开始时将寄存器标志设置回1,以启用中断。为了简化语法,实际上有一个eint
指令:
asm("eint");
通常,emnabe还有编译器特定的宏,可以避免编写汇编代码。这应适用于GCC和IAR:
__enable_interrupt();
(请不要滥用中断嵌套。在大多数情况下,绝对不需要它。几乎可以肯定,改变设计比使用它更好。)每当
msp430
微控制器即将开始执行中断处理程序功能时,它做的第一件事就是禁用全局设置“interrupts enabled”(中断启用)标志,该标志位于状态寄存器r2
中的一位。默认情况下,该标志有效禁止中断嵌套
要解决此问题,请在中断处理程序函数的开头将寄存器标志设置回1,从而启用中断。为了简化语法,实际上有一条eint
指令用于此操作:
asm("eint");
通常,emnabe也有特定于编译器的宏,可以避免编写汇编代码。这应该适用于GCC和IAR:
__enable_interrupt();
(请不要滥用中断嵌套。在大多数情况下,根本不需要中断嵌套。几乎可以肯定,改变设计比采用中断嵌套更好。)