窗口看门狗

STM32的两只狗儿——窗口看门狗

岁酱吖の 提交于 2019-12-17 22:22:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> STM32 窗口看门狗共三个寄存器,如下图: 看似简单,但设置及应用起来有不少玄机。 控制寄存器 (WWDG_CR) 中的值必须在 0xFF 与 0xC0 之间, 因为它的第 0 至第 6 位为递减计数器 CNT ,在它的第 6 位变为 0 时将产生复位,所以在初始化时需要为 1 ,第 7 位 WDGA 是用来设置启动或禁止窗口看门狗的,当为 1 进才会启动窗口看门狗,所以第 6 和第 7 位都需为 1 ,即 WWDG_CR 的值需要大于等于 0xC0 。 配置寄存器 (WWDG_CFR) 第 0 至第 6 位 是设置窗口边界值用的,只有当递减计数器 CNT 的值小于边界值时才可以喂狗,过早不行,狗还不饿,撑死了。并且 7 位递减计数器 CNT 减少到 0x3F 时即 T6 位变为 0 ,此时 MCU 也会复位,过晚了,狗饿死了。所以必须在指定的时间范围喂狗,过早或过晚都将产生复位,而这样设计可以减少软件跑飞了却仍能够歪打正着地喂狗的发生概率。 状态寄存器 (WWDG_CFR) 只用到了第 0 位, EWIF(Early wakeup interrupt flag ) 是提前唤醒中断标识,当递减计数器 CNT 的值到达 0X40( 若再减少一次则 T6 位变为 0 ,产生复位 ) 时此位由硬件置 1