gpt4 book ai didi

c - C 中的基本中断操作

转载 作者:行者123 更新时间:2023-11-30 15:34:36 24 4
gpt4 key购买 nike

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

在 ISR 子例程中,我不太确定“count++”是如何工作的。它与“RESTART_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;
}

最佳答案

增量发生在对 count ++ 的比较之后,反过来 ++ count .

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

关于c - C 中的基本中断操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23224141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com