看门狗(IWDG/WWDG)+ CRC硬件校验 完全笔记【STM32F103 标准库实现】

📅 2026/7/8 14:51:08 👁️ 阅读次数 📝 编程学习
看门狗(IWDG/WWDG)+ CRC硬件校验 完全笔记【STM32F103 标准库实现】

一、看门狗是什么?先建立准确的直觉

1.1 为什么需要看门狗

嵌入式程序运行时,可能因为各种意外情况"跑飞"或者卡死: 外部干扰导致程序计数器PC跳到了错误的地址 某个外设操作卡在了死循环里等一个永远不会来的标志位 之前"内存管理笔记"提到的栈溢出踩坏了关键数据 第三方库或者自己代码里的隐藏bug,某些边界条件下进入死循环 这些情况一旦发生,产品可能就此完全失去响应, 如果是没人值守的现场设备(工业控制器、传感器节点), 没有人能随时跑去手动按复位键,产品会一直卡死在那里。 看门狗就是解决这个问题的硬件机制: 一个独立运行的计数器,program必须在计数器溢出之前"定期打卡"(俗称"喂狗"), 如果因为程序跑飞、卡死,导致长时间没有"打卡", 看门狗就会认定"程序已经失控",强制触发芯片复位,让系统重新启动、恢复运行 这不是"修复bug",而是一种"失控之后的兜底恢复手段"—— 出现异常时,与其让设备一直死机,不如自动重启,至少能恢复响应, 生产环境里能大幅降低"死机后需要人工现场处理"的概率。

1.2 STM32F103 的两种看门狗——对比清楚才不会用混

对比项IWDG(独立看门狗)WWDG(窗口看门狗)
时钟来源独立的内部低速时钟LSI(约40kHz)挂在APB1总线时钟(PCLK1)上
与主时