结合上篇文章食用更佳。
传送门:STM32独立看门狗(宠物狗)
二、窗口看门狗
独立看门狗主要用来监测硬件,窗口看门狗主用来监测软件。
窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件(程序)造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的7位递减计数器值,也会产生MCU复位。这意味着必须在限定的时间窗口内刷新计数器(即喂狗)。
窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
1、主要特性
窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0X40 时还不喂狗的话,产生复位, 这个值叫窗口的下限, 是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。
窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗,这就是窗口看门狗中窗口两个字的含义,如果在窗口之外,那么会导致CPU复位。
2、功能说明
如果激活看门狗(WWDG_CR 寄存器中的 WDGA 位置 1),则当 7 位递减计数器(T[6:0]位)从 0x40 滚动到 0x3F(T6 已清零)时会引发复位。当计数器值大于窗口寄存器中所存储的值时,如果软件重载计数器,则会产生复位。
3、库函数接口
a.设置窗口看门狗分频值
- @brief Sets the WWDG Prescaler.
- @param WWDG_Prescaler: specifies the WWDG Prescaler.
- This parameter can be one of the following values:
- @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1
- @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2
- @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4
- @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
- @retval None
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler)
b.设置窗口看门狗窗口值
- @brief Sets the WWDG window value.
- @param WindowValue: specifies the window value to be compared to the downcounter.
- This parameter value must be lower than 0x80.
- @retval None
void WWDG_SetWindowValue(ui