在中断函数中不使用任何函数调用,将中断函数尽可能地简化。例如,可以使用全局变量和标志来传递需要传递的参数,或使用无参宏来代替函数调用。示例代码如下:
volatile int flag = 0; // 定义全局标志
int main(){
...
while(1){
if(flag){
// 处理中断任务
flag = 0;
}
// 执行其他任务
}
}
void __interrupt isr(){ // 中断函数
...
flag = 1; // 在中断函数中修改全局标志
...
}