1. IWDG最适用于看门狗作为一个主程序之外,能够完全独立工作,并对时间精度要求较低的场合。
2. IWDG由LSI驱动,即使主时钟故障仍旧保持工作状态(F10x系列:LSI=40K,F4xx系列:LSI=32K)。
3. 寄存器
IWDG_KR:关键字寄存器(共16位有效位)
IWDG_PR:预分频器寄存器(共3位有效位)
IWDG_RLR:重载寄存器(共12位有效位)
IWDG_SR:状态寄存器(共2位有效位)
4. 功能说明
a. IWDG_KR写入0xCCCC启动独立看门狗,计数器从复位值0xFFF递减。当为0x0000时产生复位信号。
b. 任何时候IWDG_KR写入0xAAAA,IWDG_RLR值会被重载到计数器,避免复位。
c. IWDG_PR和IWDG_RLR具有写访问保护。在修改这两个寄存器之前,需向IWDG_KR写入0x5555。
5. 相关函数
/* Enable或Disable IWDG_PR和IWDG_RLR的写权限(即向IWDG_KR写入0x5555) */
void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
/* 设置预分频系数(4、8、16、32、64、128、256分频)*/
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
/* 向IWDG_RLR写入重载值(≤0xFFF) */
void IWDG_SetReload(uint16_t Reload);
/* 喂狗(即向IWDG_KR写入0xAAAA) */
void IWDG_ReloadCounter(void);
/* 启动独立看门狗(即向IWDG_KR写入0xCCCC)*/
void IWDG_Enable(void);
/* Flag management function */
FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
注:状态寄存器指示预分频值和递减计数器是否正在被更新。