我有一个工程,已经开了2个中断了,分别为定时器中断和UART接收中断,但我目前有一个新的需求,就是增加一个IO口的下降沿触发中断,且需要IO的中断的优先级是最高,需要在其他两个中断里嵌套。我的处理方式是,在定时器的中断里关闭UART的中断使能,开总中断,退出时再使能UART的中断;在UART的中断里关闭定时器中断使能,开总中断,退出时再使能定时器中断。但最终有2个问题:1、IO中断还是会有100次里,2次左右无法实时响应;2、程序容易跑飞。请问下我是否哪里配置有误,谢谢!
以下是我的嵌套程序:
1、定时器中断
#pragma vector = TIMER2_B1_VECTOR
__interrupt void Timer2_B1_ISR(void)
{
TB2CCTL1 &= 0xFFFE; //CCIFG bit is zero
EUSCI_A_UART_disableInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_INTERRUPT);
_EINT(); // 允许嵌套中断
。。。
。。。
EUSCI_A_UART_enableInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_INTERRUPT);
}
2、UART中断
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{
TB2CCTL1 &= ~CCIE; // TA1CCR1 interrupt enabled
_EINT();
。。。
。。。
TB2CCTL1 |= CCIE; // TA1CCR1 interrupt enabled
}
3、IO中断
#pragma vector=PORT4_VECTOR
__interrupt void FAULT_P4_1 (void)
{
P4IFG &= ~0x02; //清除中断标志
duty = 0;
DUTY = DUTY1 = 0;
only_once = only_once | set_b1;
}