STM32 中的看门狗(Watchdog Timer,简称 WDG)有两种主要类型:独立看门狗(IWDG) 和 窗口看门狗(WWDG)。它们的喂狗机制各有特点,主要区别如下:
1. 独立看门狗(IWDG)
喂狗模式:常规定时喂狗
-
喂狗方式: 调用
IWDG_ReloadCounter()函数,在任何时刻都可以重装载计数器,从而避免超时复位。 -
超时机制: 如果计数器倒计时到 0 且没有及时喂狗,系统会复位。
-
特点:
- 喂狗没有时间窗口限制,只要在超时时间之前喂狗即可。
- 由 内部低速时钟(LSI,约 32kHz) 提供时钟,不依赖主系统时钟。
- 无法被软件或调试工具停止,一旦启用只能通过硬件复位重启。
优点:
- 配置简单,适用于通用场景。
- 独立于主系统时钟(HCLK),可靠性高。
缺点:
- 无法防止程序在特定时间段反复喂狗(如错误逻辑进入喂狗环)。
2. 窗口看门狗(WWDG)
喂狗模式:窗口限制喂狗
-
喂狗方式: 调用
WWDG_SetCounter()函数时,喂狗必须在指定的时间窗口内完成。- 窗口时间是由 WWDG 的计数器和窗口寄存器共同决定的。
- 如果喂狗太早(计数器值大于窗口值)或太晚(计数器倒计时到 0),系统会复位。
-
超时机制:
- 必须在窗口时间内重装载计数器。
- 超过窗口的时间范围(太早或太晚)都会导致复位。
-
特点:
- 使用 APB1 时钟(PCLK1) 提供时钟源,依赖主系统时钟。
- 可以通过调试工具暂停计数。
- 可设置窗口值,要求喂狗在特定时间范围内完成,防止程序因逻辑错误频繁喂狗。
优点:
- 增强程序可靠性,防止错误逻辑无限循环喂狗。
- 支持更精确的复位条件控制。
缺点:
- 配置稍复杂,需要合理选择窗口值和计数器初始值。
- 依赖主系统时钟,可靠性略低于 IWDG。
两种模式的对比
| 特性 | 独立看门狗(IWDG) | 窗口看门狗(WWDG) |
|---|---|---|
| 时钟来源 | 内部低速时钟(LSI,32kHz) | APB1 时钟(PCLK1) |
| 喂狗机制 | 任何时间都可以喂狗 | 必须在时间窗口内喂狗 |
| 配置复杂度 | 简单 | 较复杂 |
| 适用场景 | 通用场景,保证基本的系统稳定性 | 高可靠场景,防止逻辑错误频繁喂狗 |

最低0.47元/天 解锁文章

962

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



