【发布时间】:2019-01-25 05:45:34
【问题描述】:
我想在按下按钮后打破主循环。
所以我更改了按钮按下中断中的isRunning 值。但它没有用。
当我将代码 if(!isRunning){break;} 更改为 if(0 == isRunning){break;} 时,它将在 70% 的时间内正常工作。
如果我在循环中输出isRunning 值。它每次都会起作用。但是我在等待someOtherSignal 时无法输出,因为它的任务太长,我在输出时可能会错过信号。
我想知道它为什么会这样。我该如何解决它。
在 main.h 中
extern UINT8 isRunning;
在 main.c 中
UINT8 isRunning;
....
//mainfunc
isRunning = 1;
output("before loop");
while(!someOtherSignal){
if(!isRunning){
break;
}
}
output("after loop");
....
在interrupt.c中
void buttonPress_Routine(){
isRunning = 0;
output(isRunning);//output 0 when button pressed;
}
【问题讨论】: