gpt4 book ai didi

c - 如何在 ISR(中断处理程序)中使用全局变量

转载 作者:行者123 更新时间:2023-11-30 20:31:30 26 4
gpt4 key购买 nike

目的是使用一个变量,一个 int 来计算中断的实例,并根据该值在 ISR 中执行相应的操作。因此,我将其声明为extern volatile int counter,然后还在我的interrupts.c 文件中声明了它(这是声明SysTick 等中断的地方)。但这在某种程度上不起作用。任何帮助将不胜感激,谢谢。

目前我有(在我的 main.c 文件中):

static volatile int i = 0; 
Interrupt_Handler() {
i++;
}
static int getValuei(void) {
return i;
}

在我的 Interrupt.c 文件中,我有:

extern void Interrupt_Handler(void);
extern int getValuei(void);

结果:i 在中断处理程序中未递增,代码停止。

最佳答案

我经常这样做,在中断例程中使用全局变量,例如定时器例程中使用的毫秒计数器。

我应该做的是在Interrupt.c文件中声明中断处理程序和全局变量。不要将变量设置为静态,您想在文件外部使用它。

最困难的一点是确保你的中断确实被调用。大多数时候,您必须启用该特定中断,但也必须启用全局中断。有时在中断结束时您必须再次启用它。

关于c - 如何在 ISR(中断处理程序)中使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50673925/

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