1. 程式人生 > >超時的2種方法

超時的2種方法

eva 超時時間 一點 long 定時器 2種 turn 大小 signed

在雙機通訊或者判斷晶振是否成功起振都會用到超時。

一 串口通訊的超時:定義一個全局變量,在發送函數中不斷將變量清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種方法