WDGT是硬件定时电路,用于检测软件故障导致的系统故障。WDGT在内部计数器值达到一个预设门限时触发一个复位(WWDGT触发中断)。
1.独立看门狗定时器(FWDGT)
- 独立时钟源(IRC32K)
- 12位向下计数器,计数器值到0时,产生系统复位
- 独立看门狗定时器硬件控制位,用来控制是否在上电时自动启动独立看门狗定时器;
- 控制寄存器(FWDGT_CTL) CMD[15:0] 只可写,写入不同的值来产生不同的功能 0x5555 :关闭 FWDGT_PSC 和 FWDGT_RLD 的写保护 0xCCCC :开启独立看门狗定时器定时计数器。计数减到 0 时产生复位 0xAAAA :重装载计数器
-
预分频寄存器(
FWDGT_PSC)
独立看门狗定时器计时预分频选择。写这些位之前要通过向 FWDGT_CTL 寄存器写0x5555去除写保护。在改写这个寄存器的过程中, FWDGT_STAT 寄存器的 PUD 位被置1,此时读取此寄存器的值都是无效的。 PSC[2:0] 000 : 1 / 4 001 :1 / 8
010 : 1 / 16 011 : 1 / 32 100 : 1 / 64 101 : 1 / 128 110 : 1 / 256 111 : 1 / 256 如果应用需要使用不同的预分频系数,改变预分频值之前必须等到 PUD 位被清 0 。更新了预分频寄存器中的值后,在代码持续执行之前不必等待PUD 值被清零(在进入省电模式前需要等待PUD 值清零)。 - 重装载寄存器(FWDGT_RLD) RLD[11:0] 独立看门狗定时器定时计数器重装载值,向 FWDGT_CTL寄存器写入0xAAAA的时候,这个值会被更新到看门狗定时器计数器中。 这些位有写保护功能。在写这些位之前需向 FWDGT_CTL 寄存器中写 0x5555 。在改写这个寄存器的过程中,FWDGT_STAT 寄存器的 RUD 位被置 1 ,从此寄存器中读取的任何值都是无效的。 如果应用需要使用不同的重装载值,改变重加载值之前必须等到 RUD 位被清 0 。更新了重加载寄存器的值后,在代码持续执行之前不必等待RUD 值被清零(在进入省电模式前需要等待RUD 值清零)。
- 状态寄存器(FWDGT_STAT) 1 RUD 独立看门狗定时计数器重装载值更新 FWDGT_RLD寄存器写操作时,该位被置1 ,此时读取 FWDGT_RLD 寄存器的任何值都是无效的。在FWDGT_RLD 寄存器更新后,该位由硬件清零。 0 PUD 独立看门狗定时器预分频值更新 FWDGT_PSC寄存器写操作时,该位被置1 ,此时读取 FWDGT_PSC 寄存器的任何值都是无效的。在FWDGT_PSC 寄存器更新后,该位由硬件清零。 1.独立看门狗定时器(FWDGT)
2.窗口看门狗定时器(WWDGT)
- 可编程7位向下计数器,计数值达0x3F时会系统复位(CNT[6]清零)。
- 当计数器的值大于窗口寄存器的值时,更新计数器会产生复位。
- 提前唤醒中断( EWI ):看门狗定时器打开,中断使能,当计数值达到 0x40 时将会产生中 断。
- 控制寄存器(WWDGT_CTL) 7 WDGTEN 开启窗口看门狗定时器,硬件复位的时候清 0 ,写 0 无效。 0 :关闭窗口看门狗定时器 1 :开启窗口看门狗定时器 6:0 CNT[6:0] 看门狗定时器计数器的值。当计数值从 0x40降到0x3F 时,产生看门狗定时器复位。当计数器值高于窗口值的时候,写计数器可以产生看门狗定时器系统复位。
- 配置寄存器(WWDGT_CFG) 9 EWIE 提前唤醒中断使能。如果该位被置 1 ,计数值达到 0x40(0100 0000) 时触发中断。该位由硬件复位清0 ,或通过 RCU 模块的 WWDGT 软件复位来清 0 。写 0 没有任何作用。 8:7 PSC[1:0] 预分频器,看门狗定时器计数器的时间基准 00 : PCLK1 / 4096 / 1 01 : PCLK1 / 4096 / 2 10 : PCLK1 / 4096 / 4 11 : PCLK1 / 4096 / 8 6:0 WIN[6:0] 窗口值,当看门狗定时器计数器的值大于窗口值时,写看门狗定时器计数器(WWDGT_CTL 的 CNT 位)会产生复位。
-
状态寄存器(
WWDGT_STAT)
0 EWIF 提前唤醒中断标志位。当计数值达到 0x40,即使中断没有被使能(WWDGT_CFG中的EWIE位为0)该位也会被硬件置1 。这个 bit 可以通过写 0 清零,写 1 无效。