STM32 内部有两个看门狗,一个独立看门狗,一个窗口看门狗。这里先介绍独立看门狗。
独立看门狗的使用流程如下 :
l、独立看门狗配置
/* 使能寄存器访问 :向IWDG_KR 寄存器写入0x5555 */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* 设置预分频 :40KHz/64 = 0.625KHz, 周期为1.6ms */
IWDG_SetPrescaler(IWDG_Prescaler_64);
/* 设置初值为1000 : 1000*1.6ms = 1.6s */
IWDG_SetReload(1000);
/* 喂狗 :向IWDG_KR 寄存器写入0xAAAA */
IWDG_ReloadCounter();
/* 使能独立看门狗: 向IWDG_KR 寄存器写入0xCCCC */
IWDG_Enable();
2、喂狗
IWDG_ReloadCounter();
测试方式 :将看门狗设置为一个指定时间,例如 1.6s,每隔 1s 进行一次喂狗,然后再延时超过 1.6s 停止喂狗,看看系统是否会重启。
while(1)
{
for ( i = 10; i >= 0; i-- )
{
/* 喂狗 */
IWDG_ReloadCounter();
printf("倒计时 : %ds\r\n", i);
delay_ms(1000);
}
printf("系统即将重启!\r\n");
delay_ms(1000);
delay_ms(1000);
}
工程源代码 :点击打开链接