0%

stm32_note_阎同学的窗口看门狗

除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,
会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计
数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU复位。这表明递减计数器需要在一
个有限的时间窗口中被刷新
========================================================
递减计数器T6位变成0前刷新——当递减计数器的值小于 0x40产生复位。
递减计数器达到窗口寄存器数值之前不能被刷新
如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),
    它可以被用于重装载计数器以避免WWDG复位
========================================================


如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置’1’), 并且当7位(T[6:0])递减计数器从
0x40翻转到0x3F(T6位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄存器中的数
值时重新装载计数器,将产生一个复位。
==========================================================
WWDG_CR寄存器中的WDGA位被置’1’启动看门狗
递减计数器从0100 0000-->0011 1111会产生一个复位
计数器值大于窗口寄存器中的数值时重新装载计数器会产生一个复位
必须定期地写入WWDG_CR寄存器,必须在1111 1111(0XFF)和1100 0000(0XC0)之间
只有当计数器值小于窗口寄存器的值时,才能进行写操作。
==========================================================


递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门
狗被启用时,T6位必须被设置,以防止立即产生一个复位。
T[5:0]位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最
大值之间变化,这是因为写入WWDG_CR寄存器时,预分频值是未知的。
配置寄存器(WWDG_CFR) 中包含窗口的上限值:要避免产生复位,递减计数器必须在其值
小于窗口寄存器的数值并且大于0x3F时被重新装载,图155描述了窗口寄存器的工作过程。
另一个重装载计数器的方法是利用早期唤醒中断(EWI)。设置WWDG_CFR寄存器中的WEI
位开启该中断。当递减计数器到达0x40时,则产生此中断,相应的中断服务程序(ISR)可以
用来加载计数器以防止WWDG复位。在WWDG_SR寄存器中写’0’可以清除该中断。
注: T6位可以被用来产生一个软件复位(WDGA位被置位,T6位清零)
==========================================================
看门狗被启用时,T6位必须被设置
寄存器(WWDG_CFR) 中包含窗口的上限值递减计数器必须在
    其值小于窗口寄存器的数值并且大于0x3F时被重新装载
WWDG_CFR寄存器中的WEI位开启该中断,到达0x40时产生中断(ISR)可以用来加载计数器
    在WWDG_SR寄存器中写’0’可以清除该中断。
控制寄存器(WWDG_CR) 
    0~7位有效
    7号位控制看门狗的开启与关闭
        0:禁止看门狗
        1:启用看门狗
    6号位至0时产生中断
配置寄存器(WWDG_CFR) 
    0~9位有效
    9: 提前唤醒中断
        此位若置1,则当计数器值达到40h,即产生中断。
        此中断只能由硬件在复位后清除。
    7、8;时基预分频器的时基可根据如下修改:
        00: CK计时器时钟(PCLK1除以4096)除以1 
        01: CK计时器时钟(PCLK1除以4096)除以2 
        10: CK计时器时钟(PCLK1除以4096)除以4 
        11: CK计时器时钟(PCLK1除以4096)除以8 
    0~6: 7位窗口值
        这些位包含了用来与递减计数器进行比较用的窗口值。
状态寄存器(WWDG_SR) 
    0位有效
    0: 提前唤醒中断标志
        当计数器值达到40h时,此位由硬件置1。
        它必须通过软件写’0’来清除。对此位写’1’无效。
        若中断未被使能,此位也会被置’1’。

在总线图里知WWDG的时钟频率位36MHz