我有这个中断服务程序,其中有一个操作,我不太清楚它是如何工作的。我是C的初学者,所以任何人的帮助都会受到赞赏。
在ISR子程序中,我不确定“count ++”是如何工作的。它被比作“RESTART_COUNT”,现在我认为在一行代码中发生了两件事:“count”正在增加一次,而RESTART_COUNT正在与该增量之后进行比较。 “RESTART_COUNT”被定义为在代码的最开头的宏中等于10.
void __attribute__((interrupt, no_auto_psv)) _T3Interrupt(void)
{
int count;
IFS0bits.T3IF = 0; // clear Tmr3 interrupt flag
StopMotor();
IEC0bits.ADIE = 0; // disable ADC interrupt
IEC0bits.CNIE = 0; // disable CN interrupt
IEC0bits.T3IE = 0; // disable Tmr3 interrupt
T3CONbits.TON = 1; // restart tmr3
count = 0;
while (1)
{
if (IFS0bits.T3IF) //interrupt flag on?
{
IFS0bits.T3IF = 0; // clear flag
if (count++ >= RESTART_COUNT)
{
IEC0bits.ADIE = 1; // enable ADC interrupt
IEC0bits.CNIE = 1; // enable CN interrupt
T3CONbits.TON = 0; // stop tmr3
IEC0bits.T3IE = 1; // enable Tmr3 interrupt
return;
}
}
}
return;
}
答案 0 :(得分:1)
增量发生在count ++
的比较之后,另一种方式是++ count
。
另外,我认为通常count ++ <= RESTART_COUNT
会更有意义。
答案 1 :(得分:0)
count ++
是一个后增量,因此首先要做的就是比较
++ count
是一个预增量,因此增量将在比较之前发生