看门狗超时时间的理解
各分频系数的超时范围(LSI=40kHz)
| 分频系数 | 时钟频率 | 最短超时 | 最长超时 |
|---|---|---|---|
| WDT_CLK_DIV_4 | 10kHz | 0.1ms | 409.6ms |
| WDT_CLK_DIV_8 | 5kHz | 0.2ms | 819.2ms |
| WDT_CLK_DIV_16 | 2.5kHz | 0.4ms | 1.638s |
| WDT_CLK_DIV_32 | 1.25kHz | 0.8ms | 3.276s |
| WDT_CLK_DIV_64 | 625Hz | 1.6ms | 6.554s |
| WDT_CLK_DIV_128 | 312.5Hz | 3.2ms | 13.107s |
| WDT_CLK_DIV_256 | 156.25Hz | 6.4ms | 26.214s |
具体计算示例
最短超时计算(重载值=1)
c
// 分频8时: 时钟频率 = 40kHz ÷ 8 = 5kHz 最短超时 = (1 + 1) ÷ 5000 = 0.0004s = 0.4ms
最长超时计算(重载值=4095)
c
// 分频8时: 时钟频率 = 40kHz ÷ 8 = 5kHz 最长超时 = (4095 + 1) ÷ 5000 = 0.8192s = 819.2ms
实际配置意义
1. 选择合适的分频系数
c
// 需要约1秒超时: wdt_divider_set(WDT_CLK_DIV_16); // 范围:0.4ms - 1.638s wdt_reload_value_set(2500 - 1); // 2500/2500 = 1秒// 需要约10秒超时: wdt_divider_set(WDT_CLK_DIV_128); // 范围:3.2ms - 13.1s wdt_reload_value_set(3125 - 1); // 3125/312.5 = 10秒
2. 分频系数的选择策略
短时间监控:选择小分频系数,响应灵敏
长时间监控:选择大分频系数,避免频繁喂狗
精度要求:小分频系数的时间分辨率更高
3. 实际应用考虑
c
// 快速响应应用(电机控制等) wdt_divider_set(WDT_CLK_DIV_8); // 超时范围:0.2ms-819ms wdt_reload_value_set(100 - 1); // 20ms超时// 普通应用(UI、通信等) wdt_divider_set(WDT_CLK_DIV_32); // 超时范围:0.8ms-3.28s wdt_reload_value_set(1250 - 1); // 1秒超时// 长时间任务应用(数据记录等) wdt_divider_set(WDT_CLK_DIV_128); // 超时范围:3.2ms-13.1s wdt_reload_value_set(2500 - 1); // 8秒超时
总结:预分频系数决定了看门狗定时器的"时间量程",需要根据应用场景的超时需求来选择合适的分频系数,然后在可用范围内设置具体的重载值。
