首页 > 代码库 > 超时的2种方法

超时的2种方法

在双机通讯或者判断晶振是否成功起振都会用到超时。

一 串口通讯的超时:定义一个全局变量,在发送函数中不断将变量清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种方法