
你有没有想过一个问题:系统时钟停了(比如晶振失效),CPU不跑了。但看门狗还在不在?独立看门狗(IWDG)用的是内部RC振荡器(约40kHz)。 这个RC振荡器独立于系统时钟。即使主时钟停了,IWDG还在跑。它是系统最后的"守护者"。
**那个"独立"的含义,**IWDG有两个"独立":
- 独立的时钟源:LSI(低速内部RC),约40kHz
- 独立的使能:一旦使能,无法关闭,除非复位
系统其他部分死了,它还活着。那个"硬件"的启动, IWDG可以硬件启动 (通过选项字节)。上电后,IWDG自动开始倒计时,不需要软件使能。即使程序跑飞,来不及喂狗,它也会复位系统。最可靠的看门狗。

那个"访问"的限制, IWDG的寄存器受写保护。要修改,必须先解锁(写入0x5555)。防止程序跑飞时误操作看门狗。
IWDG->KR = 0x5555; // 解锁
IWDG->KR = 0xAAAA; // 喂狗
**双重保护。那个"超时"的范围,**IWDG的超时时间可配置:
- 预分频器:4、8、16、32、64、128、256
- 重装载值:0x000-0xFFF
最大超时约32秒,最小约100μs。灵活配置。
这个故事的启示, 为什么需要独立看门狗?因为系统时钟可能失效 。晶振坏了、PLL失锁、时钟配置错误------主时钟停了。但IWDG用独立的RC时钟,不受影响。它是"监工中的监工"。写在最后, 下次你做高可靠性产品,别只用窗口看门狗。想想独立看门狗。系统时钟停了,它还在倒计时。系统最后的"守护神"。

(本文灵感源于于振南《新概念ARM32单片机》教程中对独立看门狗的讲解,感谢作者将系统可靠性设计讲得如此通透。)
如果您觉得这个故事对您有启发,欢迎点赞、转发,让更多工程师看到这个藏在独立看门狗背后的"永不放弃"哲学。关注我,一起探索嵌入式世界里那些"最后一刻还在工作"的硬核真相。
