看门狗简介

独立看门狗,拥有独立的时钟LSI,主时钟故障依旧可以工作。
窗口看门狗,使用APB1时钟。
两种看门狗都是递减计数器,从特定值(独立看门狗为重装载寄存器的值,窗口看门狗无重装载寄存器,直接在CNT里写入的值)减到0时发送复位信号。
看门狗启动后无法关闭,但窗口看门狗发生复位时关闭。
IWDG介绍
1)IWDG结构:

看门狗功能处于VDD供电区,其寄存器处于1.8V供电区。
2)IWDG键寄存器

3)IWDG超时时间

这些时间是按照40kHZ时钟给出,事实上,MCU内部的RC频率会在30kHZ到60kHZ之间变化,因此在计算超时时间时,尽量留有空间。
WWDG介绍
1)WWDG结构:

PCLK1进入WDGTB分频器之前,会先进行4096分频,结构图中未体现。
CFR用于写入窗口值,即最早喂狗时间界限。
计数器最高位T6有两种理解,理解一:T6为溢出标志位,为0时代表溢出,不参与计数。此时代表计数器从111111值计数到000000产生复位信号。理解二:T6参与计数。此时计数器相当于从1111111计数到1000000产生复位信号。
写入CR控制寄存器的值时不仅相当于配置重装载值,也是喂狗操作。
窗口功能:1.CR计数值减到0时输出复位信号。
2.每次喂狗时,CFR都会和CR进行比较,若此时CR的值大于CFR,则意味着喂狗时间过早,输出复位信号。
窗口看门狗的递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数,同时当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。
2)WWDG工作特性

WWDG在超时复位之前会产生一次中断,称为早期唤醒中断(EWI),又称死前中断。
3)WWDG超时时间

IWDG和WWDG对比
硬件看门狗:开机自启动,防止程序在开启看门狗之前失效。需在选项字节里配置。
两种看门狗的计数器的值无法读写。

寄存器描述
1)IWDG




2)WWDG



窗口看门狗的控制寄存器低7位即为计数器,寄存器和计数器放在一起使开启看门狗和重装寄存器同时进行。
实验模块
实验一:独立看门狗
1)接线图

2)函数

1.启动或关闭写保护 2.设置预分频器 3.设置装载值 4.喂狗 5.启动独立看门狗


1.可通过标志位确认复位类型(如独立看门狗复位) 2.查看完需清除标志位。
3)代码
开启独立看门狗时,LSI会强制打开,因此无需手动打开LSI时钟。

原理配置流程:1.开启LSI(自动开启)2.键寄存器解除写保护 3.写入预分频器和重装寄存器 4.写入键寄存器(0XCCCC)启动看门狗 5.在主循环中不断地在键寄存器中写入(0xAAAA)喂狗。
喂狗或使能函数由于在键寄存器中写入了0X5555解除写保护之外的数值,自动开启了写保护,因此无需再手动开启写保护。



4)实验现象
OLED不断显示FEED喂狗,当按键按下超过200ms时,程序复位,OLED显示IWDGRST,此时实验成功。
实验二:窗口看门狗
1)接线图

2)函数

1.恢复缺省配置 2.设置预分频值 3.设置窗口值 4.使能WWDG死前中断 5.设置计数器的值,即喂狗
6.使能窗口看门狗
由于窗口看门狗为自由运行状态,因此使能时可能是任意值,所以在使能函数增加了可设置值的参数,防止刚使能便立即复位的情况。
3)代码
原理配置流程:1.开启APB1时钟 2.配置预分频器和窗口值 3.配置控制寄存器,包括看门狗使能,计数器溢出标志位和计数器有效位。



参数含义:窗口和喂狗参数中21与54为计算50ms超时时间和30ms窗口时间得到的对应参数值,0x40用于确保T[6]溢出位为1。
注:看门狗使能要与看门狗喂狗函数要与窗口距离,否则2次时间间隔过短会导致窗口复位,本函数中延迟函数写在喂狗函数之前就是这个目的。
4)实验现象
超时时间验证:OLED不断显示FEED表示已喂狗,当按下按键时显示WWDGRST表示触发复位。
窗口时间验证:修改延迟函数的值为30ms,则不断显示WWDGRST,说明实验成功。

(知识自学习专题,课程资料来源江协科技)