您好!
我在 IAR 中使用 MSP430FR2433。 我已将端口1.0设置为可中断输入(以每秒1个脉冲作为其输入)、设置为:ies = 0、DIR = 0、REN = 0、SEL0/1 = 00、IE = 1。
在我的中断中、我在下面进行了检查、以确认我的中断(1.0)已触发。 然后、我将增加我保留的时间、禁用中断、清除标志、然后重新启用中断。
根据我对数据表的理解、当我在 P1IV 中读取时、IFG 应自动清零。 但是、它不会自动清除。 当我在下面的 if 语句之后断点时、它仍然会被设置。 当我尝试自行清除标志时(如上所述)、它将不会从1变为0。
这会导致大量中断、从而使我无法进入代码的其余部分。 我很困惑。 我在这里缺少的东西是否会使我无法自动清除甚至直接清除标志?
请告诉我!
谢谢、
Natalie W
-------------- interrupts.c ----------------------------------------
#pragma vector=Port1_vector
_interrupt void Port1_interrupt (void){
/* SYS 1 PPS 中断*/
if (P1IV && 0x02){
CURRENT_PPS_TIME += 1;
天花板= TA1CCR0;
ADD_GGOS_PRODUCER_EVENT (SYS_1_PPS_TICK);
P1IE &=~(0x01);
P1IFG &=~(0x01);
P1IE |= 0x01;
LPM3_EXIT;
}
}