Я хочу разорвать основной цикл после нажатия кнопки.
Поэтому я изменяю значение 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;
}