小编cho*_*ger的帖子

使用中断处理程序时如何避免全局变量?

我大多是用C自学的。我对嵌入式微控制器进行编程。(例如,dsPIC33fj128gp804)我通常使用全局变量,而我曾经读过的所有内容都使用全局变量来谴责,因为它们就像瘟疫一样。我一直在努力减少使用,但是有一种情况我不知道如何不使用全局变量。

微控制器配有中断。中断是硬件外部触发的事件。触发中断后,将停止执行主代码,保存当前工作变量,执行预分配的功能,然后从停止的地方重新开始选择主代码。由于中断是一个独立的函数,可以随时触发,因此无法传入或传出任何函数。

例如,当UART硬件接收到一个字节的数据时,该数据需要先移出硬件缓冲区,然后才能被覆盖。

void __attribute__((interrupt, no_auto_psv)) _U2RXInterrupt(void)
{
    GlobalVariable = U2RXREG; // Move data to global variable
    IFS4bits.U2RXIF = 0; // Clear the UART2 Receive Interrupt Flag
}
Run Code Online (Sandbox Code Playgroud)

有没有全局变量的方法吗?还是这是例外?

c embedded global-variables microchip

8
推荐指数
2
解决办法
9668
查看次数

标签 统计

c ×1

embedded ×1

global-variables ×1

microchip ×1