一、看门狗概念

1.在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) ,说白了,看门狗就是能够让CPU复位的一个硬件。在启动正常运行的时候,系统不能复位。在系统跑飞(程序异常执行)的情况下,系统复位程序重新执行。

2.看门狗( watchdog timer),是一个定时器电路, 一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给WDT清零,如果超过规定的时间不喂狗,(一般在程序跑飞时,不在程序正常的状态),WDT 定时超过,就会给出一个复位信号到MCU,使MCU复位. 防止MCU死机.看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗, 独立看门狗号称宠物狗,窗口看门狗号称警犬。

3.独立看门狗的初始化:初始化看门狗的超时时间,如果在规定的超时时间得不到程序“喂”操作,独立看门狗就立即复位系统。

4.独立看门狗的喂操作:重新刷新它的计数值,如果计数值减到0的时候,就立即复位CPU,为了防止复位CPU,程序必须每隔一段时间在它减到0之前刷新它的计数值,如此循环。

独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持工作状态。

5.主要特性
(1)自由运行递减计数器
(2)时钟由独立 RC 振荡器提供(可在待机和停止模式下运行)
(3)当递减计数器值达到 0x000 时产生复位(如果看门狗已激活)

当通过对关键字寄存器 (IWDG_KR) 写入值 0xCCCC 启动独立看门狗时,计数器开始从复位值 0xFFF 递减计数。当计数器计数到终值 (0x000) 时会产生一个复位信号(IWDG 复位)。任何时候将关键字 0xAAAA 写到 IWWDG_KR 寄存器中, IWDG_RLR 的值就会被重载到计数器,从而避免产生看门狗复位。

二、开发流程

简单的说,就是先看框图,然后使用库函数接口。

1.解锁独立看够寄存器保护,对IWDG->KR写入0x5555。

2.设置独立看门狗分频值

3.设置独立看门狗重载值

4.独立看门狗重载计数值

5.检查是否看门狗复位

6.计算超时时间

看数据手册,当前独立看门狗输入时钟源为32KHz,若然再经过256分频,此时独立看门狗时钟=32KHz/256=125Hz。

同时独立看门狗设置重载值为125,则溢出时间为1S。