IWDG使用的是32芯片内部的40k独立晶振,该晶振为rtc和iwdg提供时钟,即使是主时钟坏了也不影响它们。
主要用到三个寄存器,
IWDG_KR 键值寄存器
IWDG_PR 预分频寄存器
IWDG_RLR 重装载寄存器
使用步骤:
①往IWDG_KR寄存器中写入0x5555,取消IWDG_PR和IWDG_RLR的写保护
②设置IWDG_PR和IWDG_RLRD的值
③往IWDG_KR寄存器中写入0xcccc,启动看门狗
④定时往IWDG_KR寄存器中写入0xaaaa,重装载计数值,(会向下递减,若减到0则MCU复位)
实际上用stm32cube配置好IWDG后使用非常方便,只要调用HAL_IWDG_Start(&hiwdg);和 HAL_IWDG_Refresh(&hiwdg);这两个函数就可以了,前者是启动看门狗,后者是重装载。
另外需要注意的是,IWDG打开后就无法关闭,除非重新启动,并且重启后不能打开IWDG,否则还是会打开。