1. 窗口看门狗的基本概念与工作原理
窗口看门狗(Window Watchdog,简称WWDG)是嵌入式系统中用于检测和恢复系统异常的重要硬件模块。与独立看门狗不同,窗口看门狗引入了"时间窗口"的概念,对喂狗操作有更严格的时间限制。
WWDG的核心是一个7位递减计数器(T[6:0]),其值存储在控制寄存器(CR)的位6:0。当计数器从初始值递减到0x40时,如果仍未收到喂狗信号,系统将产生复位。这个0x40就是窗口的下限值,是固定不变的。窗口的上限值(W[6:0])则可以通过配置寄存器(CFR)设置,必须在0x40到0x7F之间。
关键特性:必须在计数器值处于上窗口值(W)和下窗口值(0x40)之间时进行喂狗操作。过早或过晚喂狗都会导致系统复位。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. WWDG的时钟系统与时间计算
2.1 时钟源与分频
WWDG的时钟来源于PCLK1(APB1总线时钟),经过两级分频后得到计数器时钟:
- 固定预分频:PCLK1先被4096分频
- 可编程预分频:通过CFR寄存器的WDGTB[1:0]位设置,可选1/2/4/8分频
计数器时钟频率计算公式:
CNT_CK = PCLK1 / 4096 / (2^WDGTB)
2.2 超时时间计算
WWDG的超时时间由以下公式决定:
Twwdg = Tpclk1 × 4096 × 2^wdgtb × (T[5:0] + 1)
以PCLK1=54MHz为例,不同预分频设置下的时间特性:
| WDGTB | 分频系数 | 计数器周期(us) | 最小超时(us) | 最大超时(ms) |
|---|---|---|---|---|
| 0 | 1 | 136.5 | 136.5 | 8.74 |
| 1 | 2 | 273.1 | 273.1 | 17.47 |
| 2 | 4 | 546.1 | 546.1 | 34.95 |
| 3 | 8 | 1092.3 | 1092.3 |
