基于STM32CubeMX 实现窗口看门狗 WWDG
第一部分 基础理论
基础理论部分主要参考 STM32F10X 参考手册
1. WWDG 简介
(1)WWDG 窗口看门狗,所谓的 “Window 窗口”表示看门狗递减计数器只能在一个窗口时间内完成刷新,否则MCU将复位
(2)窗口看门狗一般用来监测由外部干扰或不可预见的逻辑条件造成的应用背离正常运行序列而产生的软件故障
(3)要求看门狗的递减计数器需要在一个有限的时间窗口被刷新
看门狗产生MCU复位的两种情况
(1)除非递减计数器的值在 T6位(WWDG_CR 寄存器第六位)变成0前刷新,看门狗到达预置的时间周期时,将会产生MCU复位
(2)在递减计数器到达窗口寄存器数值之前,如果7位的递减计数器数值(在WWDG_CR中)被刷新,那么也将产生MXU复位
2. WWDG 主要特性
(1)可编程的自由运行递减计数器
(2)条件复位
—— 当递减计数器的值小于0x40,将产生复位(若看门狗被启动)
—— 当递减计数器在窗口外被重新装载,将产生复位(若看么狗被启动)
(3)如果启动看门狗并且允许中断,当递减计数器等于0x40时产生 EWI (Early Wakeup Interrrupt),通过该中断可重新装载递减计数器以避免WWDG复位
3. WWDG 功能描述
(1)如果看门狗启动,即 WWDG_CR寄存器中 WDGA位置1,并且7位(位于WWDG_CR寄存器的0-6位)递减计数器从 0x40 转为 0x3F,即WWDG_CR 的 T6位置0,此时将产生复位。过程如下图蓝线所示。
(2)如果软件在递减计数器的值大于窗口寄存器的数值时,重新装载递减计数器,将产生一个复位。过程如下图红线所示。

应用程序在正常运行过程中必须定期写入 WWDG_CR 寄存器(即递减计数器的数值)以防止其变为 0x3F,产生MCU复位。且递减计数器只用当其值小于窗口寄存器(即WWDG_CFR)的值时,才能进行写操作。存储器在WWDG_CR寄存器中的数值必须在0xFF和0xC0之间(即可允许递减计数器刷新的时间窗口)。
—— 启动看门狗
在系统复位后,看门狗总是处于关闭状态,设置 WWDG_CR 寄存器的 WDGA 位能够开启看门狗,随后看门狗不再被关闭(即一直处于监测MCU的状态),除非发生复位(MCU 此时发生了故障)。
—— 控制递减计数器
递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍然继续递减计数。当看门狗启用时,T6 位必须被设置,以防止立即产生一个复位。
T[5:0]位包含了看门狗产生复位之前的计时数目。由于写入 WWDG_CR 寄存器时,预分频的值是未知的,所以复位前的延时时间在一个最小值(00 0000)和一个最大值(11 1111)之间变化。
配置寄存器(WWDG_CFR)中包含了窗口的上线值,为了避免产生复位,递减计数器必须在其值小于窗口寄存器的数值并且大于0x3F时被重新加载。
—— 高级看门狗中断特性
另一个从装载递减计数器的方法是利用早期唤醒中断(EWI)。在WWDG_CFR寄存器中

最低0.47元/天 解锁文章
2519

被折叠的 条评论
为什么被折叠?



