超時的2種方法
阿新 • • 發佈:2017-07-18
eva 超時時間 一點 long 定時器 2種 turn 大小 signed */
bool Judge_chaoshi( var_t)
{
bit flag_chaoshi=0;
unsigned int i=var_t /*需要估計或實驗值大小,要比正常所需稍長一點時間*/
do{
if(flag_XX)/*外部中斷觸發*/
break;
}while(i--);
if(i==0)
flag_chaoshi=1;
return flag_chaoshi;
}
在雙機通訊或者判斷晶振是否成功起振都會用到超時。
一 串口通訊的超時:定義一個全局變量,在發送函數中不斷將變量清0,在定時器中斷裏面不斷對該值加1,在超時判斷處結合數值和時間間隔計算得到一個時間(從結束發送開始到現在的事件)與超時標準時間對比看是否超時。
typedef timeout
{
bool flag_timeout;
unsigned long timecnt;
unsigned long timevar
}Timeout_TypeDef;
二 阻塞式的超時判斷:
/*功能:判斷超時
參數:超時時間
特點:阻塞式,需要結合外部中斷觸發改變flag_XX
bool Judge_chaoshi( var_t)
{
bit flag_chaoshi=0;
unsigned int i=var_t /*需要估計或實驗值大小,要比正常所需稍長一點時間*/
do{
if(flag_XX)/*外部中斷觸發*/
break;
}while(i--);
if(i==0)
flag_chaoshi=1;
return flag_chaoshi;
}
超時的2種方法