独立看狗使用简单
一、STM32 的独立看门狗(IWDG)是一个基于 LSI(低速内部时钟)的内置硬件定时器,用于在程序出现异常(如跑飞或死循环)时自动复位系统,确保设备的可靠性。
二、好处:
独立时钟源:
使用 LSI(低速内部时钟),频率通常为 32kHz 或 40kHz(不同型号可能不同)
即使主时钟(HSE/HSI/PLL)失效,看门狗仍能正常工作。
并且是递减计数器:
12 位计数器(0-4095),从预设值递减到 0
当计数器减到 0 时触发系统复位
计算超时时间 = (重装载值 + 1) × (预分频系数 + 1) / LSI频率.
我这里想设置1S复位一次,
重装载值(999+1),
我的预分频是31+1
LSI频率32
超时时间 =1000*32/32000=1S
3时钟:
4设置参数,生成代码
5KEIL程序中断文件
6在while循环调用
齐活,我这里是做了LED闪烁,进了就闪烁,能观察
7常见问题与排查方法
1.原因:喂狗频率过高、配置参数错误、LSI 时钟未启动
排查:检查配置代码、测量 LSI 频率、临时注释喂狗语句测试
2.原因:喂狗间隔过长、程序卡在某个耗时操作中
排查:缩短喂狗间隔、优化程序逻辑、添加调试输出
3.调试时看门狗干扰:
解决:在调试模式下暂停看门狗
__HAL_DBGMCU_FREEZE_IWDG(); // 调试时冻结看门狗