SoC

Watchdog

Watchdog

Posted by George Lin on May 12, 2025

Watchdog Timer(看门狗)

看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,本质是一个递增(或者递减)的定时器,程序开始执行的时候,看门狗的值就开始递增或者由某固定值递减,到达设定的值的时候单片机就触发中断或者产生系统复位,重新运行。是用来监测单片机运行状态和解决程序引起的故障的模块

防止系统跑飞

看门狗可用于受到电气噪音、电源故障、静电放电等影响(造成软件运行进入死循环,或者死掉)的应用,或需要高可靠性的环境。

通俗来讲,看门狗可理解为“看门”。一切正常就不会叫,一旦出现异常,就会叫,从而将信息反馈给我们。

必看:

简单理解,我设置了每天早上八点的闹钟,我每次都在七点五十分的时候醒来,提前把闹钟关了,手机闹钟就永远不会响,有一次喝醉了,睡到八点还没醒,手机闹钟就响了,强行让我醒来关闹钟

名词解释

1.喂狗:就是触发看门狗,计数器会被刷新,重新开始计算。

按照喂狗频率,喂狗分为快狗Fast-Mode与慢狗Slow-Mode,即快速喂狗与慢速喂狗。在实际使用中,考虑到初始化到周期任务的时间较长,在WDT 初始化后会先设置WDT的运行模式为Slow-Mode,在周期任务正式运行后再切换为Fast-Mode。

2.杀狗:禁用/关闭看门狗

3.咬狗:当看门狗启动后,计数器开始自动计数,经过一定时间,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)

分类

从软硬件控制类型划分,看门狗可分为硬件狗和软件狗。

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

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

独立看门狗由专用低速时钟驱动的,即使主时钟发生故障它依然有效。独立看门狗适用于看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合。

窗口看门狗由APB1时钟分频后得到的时钟驱动。通过可配置的时间窗口来检测应用程序非正常的操作。窗口看门狗适用于那些要求看门狗在精确计时窗口起作用的程序。