请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5529 工具/软件:Code Composer Studio
我基本上尝试使用这个进行嵌套中断。 我让 WDT ISR 在正确的时序下正常工作、但 port2_ISR 调用不当(或者我认为根本不正确)。 我可以取消注释第27行和注释第26行、LED 将会完美切换。 但是、当我尝试使用嵌套 ISR 执行它时、它不执行任何操作。
#include
int i = 0;
void main (void)
{
WDTCTL = WDTPW | WDTSSEL_SMCLK | WDTIS__512 | WDTTMSEL;//设置 WDT 0.5ms 间隔
P4DIR |= BIT7; //将 P1.0设置为输出方向(LED2)
P4OUT &=~BIT7; // LED2最初关闭
SFRIE1 |= WDTIE; //启用 WDT 中断
_BIS_SR (LPM0_Bits + GIE);//输入 LPM0、带中断
P2IE |= BIT1; //在 P2.1上启用中断
P2IES |= BIT1; //为中断启用 hi->lo 边缘
P2IFG &=~BIT1; //清除任何错误的中断标志
}
//看门狗计时器中断服务例程
#pragma vector=WDT_vector
__interrupt void watchdog_timer (void)
{
if (i < 1000)
i++;
其他
{
I = 0;
P2IFG |= BIT1;
//P4OUT ^= BIT7;
}
}
#pragma vector = port2_vector //SW1 ISR
__interrupt void port2_ISR (void)
{
P2IFG &=~BIT1;//清除标志
P4OUT ^= BIT7;//切换 LED2
}