看门狗是一种用于监控系统运行状态的硬件或软件机制。其核心功能是通过定时器检测系统是否正常运行。若系统未在规定时间内响应,看门狗会触发复位信号,强制系统重启以恢复稳定状态。
窗口看门狗要求系统必须在预设的时间窗口内完成定时器重置操作。时间窗口通常由最小和最大时间界限定义,过早或过晚的重置均会触发复位。
以下是一个窗口看门狗的伪代码逻辑示例:
while (system_running) {
if (current_time > reset_window_max || current_time < reset_window_min) {
trigger_reset();
}
feed_watchdog(); // 重置看门狗定时器
}
独立看门狗通过固定超时周期工作,仅需系统在超时前重置定时器即可。其设计目标是确保极端故障下的系统恢复能力。
独立看门狗的配置示例(基于STM32 HAL库):
IWDG_HandleTypeDef hiwdg;
hiwdg.Instance = IWDG;
hiwdg.Init.Prescaler = IWDG_PRESCALER_256;
hiwdg.Init.Reload = 0x0FFF;
HAL_IWDG_Init(&hiwdg);
// 主循环中定期喂狗
HAL_IWDG_Refresh(&hiwdg);