1、概念

看门狗是用来检测单片机运行状态和解决程序引起的故障的模块。根据功能不同,通常分为独立看门狗和窗口看门狗。因为独立看门狗受工作场合因素的影响会多一点,仅适用于一些对时间精度要求较低的场合;窗口看门狗适用于对时间精度高的场合。

2、工作流程

什么是看门狗?如何操作?喂狗?工作流程?定时器,计数器,看门狗的关系。_看山_的博客

java看门狗机制while nodemcu看门狗_c语言

 3、硬看门狗和软看门狗

硬看门狗:独立CPU之外,由独立的时钟驱动。计数器初始值以及外部时钟驱动频率由器件本身决定,外部无法更改,此看门狗的输出信号和CPU上的RESET引脚连接,使CPU可以产生复位操作。

软看门狗是CPU的一个计数器模块,时钟频率由CPU本身决定,计数器初值由软件进行设置,超时时间可以在一定范围内变化。因为软看门狗位于处理器内部,需要产生CPU可以识别的信号,通过中断或异常,引起系统进行重启。

4、IWDG(Independent Watch Dog)独立看门狗

用来检测并解决由于软件错误导致的故障,计数器到达给定的超时值会触发一个终端或产生系统复位。独立看门狗的时钟是它专用的低速时钟LSI,所以它可以保持工作及时出现问题。IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。

4.1、独立看门狗的特点

①自由运行递减计数器

②时钟来自通过独立的RC振荡器(可以工作在待机和停止模式下)

③当向下计数器值达到0时,会产生复位(如果看门狗已经激活)

5、WWDG(Window Watch Dog)窗口看门狗

窗口看门狗(Window watchdog)通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的 7 位递减计数器值,也会产生 MCU 复位。这意味着必须在限定的时间窗口内刷新计数器

5.1、窗口看门狗的特点

①可编程自由向下计数器

②复位条件,激活看门狗的情况下,当递减计数器值小于 0x40 时复位;在窗口之外重载递减计数器时复位。

③提前唤醒中断 (EWI):当递减计数器等于 0x40 时触发(如果已使能且看门狗已激活)

窗口看门狗功能说明

如果窗口看门狗启动(WWDG_CR寄存器的WDGA位置1),7位向下计数器从0X40向0x3F滚动(T6已经清零),会导致一个复位。如果软件重载计数器,当计数器值大于窗口所存储的值时,就会产生复位

应用程序必须在正常操作期间写WWDG_CR寄存器去组织MCU复位。这个操作必须发生在计数器值小于窗口寄存器值。窗口寄存器值存储在WWDG_CR寄存器,必须在0XFF和0XC0之间