我正在努力從下面的switch語句中退出。任何幫助是極大的讚賞。開關語句在終止後不會重新啓動
我有幾個case語句,我的問題是如果中斷標誌從外部中斷變爲高電平,任何操作應該停止並返回到初始狀態,等待啓動標誌爲高電平。
當前所有描述的功能都在工作,除了在中斷標誌爲高電平之後回到其初始狀態。例如,當我按取消操作時操作終止。但是,取消後系統不會再次啓動。
在此先感謝。
while(1)
{
switch(state)
{
case STOPPED: // Master control
if(start_flag == true)
{
state = WAITING_FOR_SYNC;
start_flag = false;
}
break;
case WAITING_FOR_SYNC:
if(sync_flag == true) // waiting for input to be synchronised
{
state = SAMPLED_AND_PROCESSING;
sync_flag = false;
sampleCounter = 0;
samplingComplete = false;
}
break;
case SAMPLED_AND_PROCESSING:
if(samplingComplete == true) // samples to be loaded in a buffer
{
gpio_set_pin_low(AVR32_PIN_PA07);
windowing();
rms(x);
fft_run(window);
peak_search(fft_mag);
envelope_output(envelope);
state = LOOP;
}
break;
case LOOP:
gpio_set_pin_high(AVR32_PIN_PA07);
delay_ms(5);
loop++;
if(loop == 23)
{
state = RS485_OUT;
loop=0;
}
else
{
state = SAMPLED_AND_PROCESSING;
sampleCounter = 0;
samplingComplete = false;
}
break;
case RS485_OUT:
//SendTx();
state = STOPPED;
break;
}
} // switch statement close bracket
if(break_flag == true)
state = STOPPED;
}// while close bracket
顯示'break_flag'的聲明。它是不穩定的嗎? – chux