【日拱一卒,脚踏实地】快速理解

阅读: 评论:0

【日拱一卒,脚踏实地】快速理解

【日拱一卒,脚踏实地】快速理解

目录

  • 1 如何定义看门狗
  • 2 怎么使用看门狗

1 如何定义看门狗

看门狗,英文名称为Watch Dog Timer,是设计者为了防止CPU死机而设计的一种定时器模块。有了它的存在,机器一般就不会死机了。

2 怎么使用看门狗

看门狗本质是一种定时器,但与一般定时器达到计时时间触发中断不同,看门狗会触发CPU的复位,也就是机器的重启。

下面,以一个简单的流水灯小程序,来说明如何使用看门狗。

While (1)
{
LED1=1;LED2=0;LED3=0;LED4=0;
Delay (10ms);
LED1=0;LED2=1;LED3=0;LED4=0;
Delay (10ms);
LED1=0;LED2=0;LED3=1;LED4=0;
Delay (10ms);
LED1=0;LED2=0;LED3=0;LED4=1;
Delay (10ms);
}

上述程序表示每隔10ms,依次轮流点亮4个LED灯。
由于程序是在while死循环里,所以会一直重复上面这个过程。

接下来,我们给它加入看门狗,程序变成下面这样:

WDT time =50ms; //设置看门狗的定时时间为50ms
WDT =1;				  //看启看门狗
While (1)
{
Clear WDT(); 		  //喂狗,给看门狗清零
LED1=1;LED2=0;LED3=0;LED4=0;
Delay (10ms);
LED1=0;LED2=1;LED3=0;LED4=0;
Delay (10ms);
LED1=0;LED2=0;LED3=1;LED4=0;
Delay (10ms);
LED1=0;LED2=0;LED3=0;LED4=1;
Delay (10ms);
}

上述程序加入看门狗后, 就开始计时了,只要时间到了50ms,机器就会进行重启。
进入死循环后,注意首先要进行喂狗,即对看门狗定时器进行清零操作,这样每个循环才能都从零开始计时。如果不进行喂狗,将会每过50ms,机器就会进行复位一次,如此高频的复位,所造成的后果将不亚于死机,此时看门狗就会变成一条疯狗了。
所以,在使用看门狗之前,一定要喂好狗。

上述看门狗程序运行机理如下:
由于一个循环轮流点亮流水灯用时40ms,此时距离看门狗复位还有10ms的时间,下个循环又进行了清零操作,所以只要程序正常运行(即不发生死机),看门狗就永远不会触发机器重启。
当程序发生死机之后,就不会回到while死循环第一步进行喂狗了,而是等50ms过去,看门狗就会触发机器复位,此时CPU虽然死机了,但看门狗模块不会受影响,还能正常运行,所以能触发机器复位。

CPU 死机 看门狗 复位

好了,以上内容,就是我对看门狗的理解,希望对大家有所帮助。

本文发布于:2024-02-02 10:03:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170683942243068.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23