我有一个新手问题,关于如何将中断处理程序正确移动到包含文件。我的 main.c 文件中有一个 SysTick 处理程序,以这种方式定义:
volatile int systick_timer_counter = 0;
void SysTick_Handler(void) {
systick_timer_counter++;
}
我使用这个systick_timer_counter
,每 10 毫秒增加一次,在一段时间后触发一些检查,然后重置它。
我想要的是在某些函数中也使用此systick_timer_counter
,这些函数不在main.c
文件中,而是在另一个函数的.c
文件中。所以我想创建一个名为 systick_counter
的文件,以包含我需要使用它的位置。
我要问的是,我应该如何以正确的方式做到这一点?我可以创建一个.c
文件并将变量和中断标头放入其中,或者我应该添加更多内容或更改变量定义?
听起来你的意思是你想在可从其他模块访问的一个模块(源文件(。
假设我正确解释了你的问题,是的,这是可以做到的通过使用 extern
关键字。但是,这将是对我不负责任的并不是说不必要地使用全局变量是不好的做法。它导致难以维护的代码,因为外部全局可能是从代码库中的任何位置更改。您希望限制范围和尽可能多地查看您的标识符。
在这种情况下,我建议您保留 systick_timer_counter
定义它的模块的本地,并且使用该模块中的函数访问它。这就像定义一个类使用方法,使用没有显式类的语言。做起来这样,其他模块就无法更改该值,除非通过调用 reset_systick()
.
int systick_timer_counter = 0;
void reset_systick()
{
systick_timer_counter = 0;
}
void SysTick_Handler()
{
systick_timer_counter++;
}
int return_systick()
{
return systick_timer_counter;
}
static 关键字添加到您希望只能从文件中访问的变量也是一个好主意。
静态整数 systick_timer_counter = 0;