原创 软件看门狗

2009-1-20 21:44 3338 4 4 分类: MCU/ 嵌入式

http://www.21icbbs.com/club/bbs/showEssence.asp?id=10305


hotpower 发表于 2009-1-18 21:22 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


28楼: 关于23楼软件看门狗的问题


大致应该这样(测试速度比23楼快):
#define    SOFT_DOG_TIME  XX    // xx小于硬件狗溢出时间的一半
volatile bit   flg_soft_dog=1;//注意加volatile,好像Keil的bit不需要
main()
{
  ...
  while(1)
  {
     ...
     //-----------------
     flg_soft_dog = 1;
     //-----------------
     ...
  }
}

time_interrupt()    //通用定时器
{
static uchar soft_dog_timer=0;//应该用局部变量,最好少用全局变量
  ...
  //--------------------------
  if(flg_soft_dog)
  {
    flg_soft_dog = 0;
    soft_dog_timer = 0;
  }
  else
  {
    soft_dog_timer++;
    if(soft_dog_timer>=SOFT_DOG_TIME)
    {
      soft_dog_timer = 0;
      soft_reset();        //软件复位
    }   
  //--------------------------
  }
  ...    
}
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条