IWDG和WWDG介绍
概述
看门狗,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,输入叫做喂狗,输出一般连接到另外一个部分的复位端,复位端连接的就是要处理的部分,即MCU。
在MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给看门狗电路清零,如果在规定时间不喂狗,看门狗定时超时,就会回给一个复位信号到达MCU,使MCU复位,防止MCU死机。
独立看门狗(IWDG)
独立看门狗框图
原理描述
- 有IWDG_PR、IWDG_SR、IWDG_RLR、IWDG_KR四种寄存器,分别为分频寄存器、状态寄存器、重载寄存器和键寄存器;
- 有一个8位分频器、12位重载值以及12位减数器;
- 独立看门狗是一个递减计数器,当计数器的值减到0时,看门狗产生一个复位信号,系统复位重新启动;
- 为避免产生看门狗复位,则需在计数器减到0之前重载计数器,即“喂狗”,系统复位重新启动;
- 当程序出错时没有刷新计数器,计数器递减到0,系统复位重新启动,避免程序继续错误运行。
窗口看门狗(WWDG)
窗口看门狗框图
原理描述
- 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。
- 除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。
- 如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的 7 位递减计数器值,也会产生 MCU 复位。
- 窗口下限:WWDG递减计数,当减到固定值0x40时还不喂狗就会复位,这是固定值,不能改变;
- 窗口上限:窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。
- 窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗,这就是窗口看门狗中窗口两个字的含义。
IWDG和WWDG喂狗时间计算
IWDG
- prer:预分频系数;
- rlr:重载值
- 32kHz:LSI时钟频率
WWDG
- WDGTB:预分频洗漱
- T[5:0]:看门狗计数器的低六位
- RCC_PCLK3:PCLK3的时钟频率(kHz)