STM32 的 WWDG 窗口期是什么?

STM32 · 7 浏览
STM32 的 WWDG 窗口期是什么?

回答(4)

如果系统有低功耗模式,WWDG在睡眠时仍会递减,需在唤醒后立即检查计数器值,避免窗口错过。
电源控老王 · 2026-08-21
注意WWDG喂狗要写0x40~0x7F,不能直接写0x7F,否则可能触发提前复位。我踩过坑。
嵌入式小菜鸟 · 2026-08-21
窗口期太短容易误复位,太长则失去保护作用。建议先用示波器测实际喂狗间隔,再反推窗口值。
老电工阿强 · 2026-08-21
WWDG(窗口看门狗)的窗口期是一个时间区间,由配置寄存器(WWDG_CFR)中的W[6:0]位定义窗口上限,而窗口下限固定为0x40(即计数器值减到0x40时)。窗口期指计数器值从0x7F递减到0x40之间的这段时间。只有在窗口期内(计数器值在0x40到0x7F之间)喂狗,才能复位看门狗;若在窗口期外(计数器值小于0x40)喂狗,会立即触发复位。 实操建议:窗口上限W[6:0]应设为大于0x40的数值,例如0x5F,窗口期约为(0x7F-0x5F)*T,其中T为递减周期(由预分频器和时钟决定)。配置时需注意: ```c // 假设APB1时钟36MHz,预分频8,递减周期=8/36MHz≈222ns // 窗口上限设为0x5F,窗口期≈(127-95)*222ns≈7.1us WWDG_InitTypeDef WWDG_InitStructure; WWDG_InitStructure.WWDG_Prescaler = WWDG_Prescaler_8; WWDG_InitStructure.WWDG_Window = 0x5F; WWDG_InitStructure.WWDG_Counter = 0x7F; WWDG_InitStructure.WWDG_EWI = DISABLE; WWDG_Init(&WWDG_InitStructure); ``` 实际应用中,窗口期需覆盖主循环最坏执行时间,避免因中断延迟导致喂狗过早或过晚。建议在任务关键点喂狗,并预留余量。
mcuku 阿沐 · 2026-08-21