C.中的基本中断操作



我有一个中断服务例程,里面有一个操作,我不太确定它是如何工作的。我是一个C语言的初学者,所以任何人的帮助都将不胜感激。

在ISR子程序中,我不完全确定"count++"是如何工作的。它被比作"RESTART_COUNT",现在我想在一行代码中发生了两件事:"计数"被增加一次,RESTART_COOUNT在增加之后被比较"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;
}

count ++的增量发生在比较之后,++ count的增量则相反。

此外,我认为count ++ <= RESTART_COUNT通常更有意义。

count ++是后增量,所以首先要做的就是比较
++ count是预增量,因此增量将在比较之前发生

最新更新