单片机的程序在运行过程中,为了增加系统的可靠性,防止芯片受到外界干扰而程序跑飞等系统异常,我们引入看门狗功能,Watch Dog Timer,简称为WDT。如图1.

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(1)

图1 看门狗监控单片机的程序

它本质上是一个递增定时器,它的工作原理很简单,当程序开始运行时,看门狗定时器的值从零开始向上递增,当到达预设值时,就会强制单片机复位,使系统程序从头开始运行。如图2.

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(2)

图2 看门狗本质上是一个定时器

那么我们如何使用它呢?我们的代码中,当看门狗定时器的值即将溢出时将其清零,使它重新从零开始计数,那么只要程序正常运行,看门狗就不会强制单片机复位。这样就实现了看门狗对程序的监控功能。如图3.

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(3)

图3 清零看懵定时器

上述方法实现的是软件看门狗功能,当然,我们也可以搭建硬件看门狗电路,同样实现超时强制单片机复位的功能。他的思路就是不断的给一个电容充电,在电容从满电状态放电至阈值电压前再次充电,就能保证电路不输出复位信号。从而实现硬件看门狗功能。如图4.

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(4)

图4 不断给电容充电

图5为电路原理图,它由两个与非门外加阻容器件串联而成。

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(5)

图5 硬件看门狗电路

当我们给第1引脚一个低电平,也就是喂狗的时候,A与非门输出高电平,此时电容C两端开始充电。同时,与非门B的两个输入端电平为高,那么输出端第4引脚就为低电平,不产生复位动作。如图6.

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(6)

图6 不产生复位信号

喂狗操作完毕之后,第1引脚为高电平,那么,A与非门输出低电平,此时电容C开始放电,当电容C的电量低于阈值时,第五,六引脚电平为低,则第4引脚输出高电平,产生复位。如图7。图8为产生复位时的时序图。

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(7)

图7 产生复位信号

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(8)

图8 复位时序

我们需要操作的是在电容C放电至阈值的时间段内给第1引脚一个低电平,也就是喂狗操作,保证第4引脚持续输出低电平,这样就实现了看门狗对电路的监控功能。如图9.

单片机看门狗是什么东西(单片机的看门狗是如何工作的)(9)

图9 正常情况下不产生复位的时序图

,