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