今天我发现是没有在ADCINTFLGCLR中进行清中断,但是我确实在服务函数中最后部分有清中断程序,具体为:
void fun(int a,int b)
{
.....
}
interrupt void isr(void)
{
.......
fun(a,b);
........
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE
}
然后我使用全局变量做了一个标志
Uint16 flag;
interrupt void isr(void)
{
flag=0;
.......
fun(a,b);
........
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE
flag=1;
}
这样就可以看看每次进入中断后有没有清中断。实验发现,即使不进入中断了flag也是1,也就是说确实是清了中断的,我再在CCS里面把ADCINTFLGCLR赋1,又可以进入中断了,但是程序跑了一会儿又不进中断了。
郁闷啊,也不知道是怎么回事。。。 |