【STM32】G030单片机的独立看门狗

目录

一、简单介绍

二、特性

三、窗口选项

四、cubeMX配置

不使用窗口功能

使用窗口功能

五、工程链接


一、简单介绍

独立看门狗,顾名思义,是不依靠系统而独立存在的看门狗

可以脱离应用运行,但缺陷在于时序精度比窗口看门狗低

主要是为了系统运行安全而设置的,时钟来源是专用的LSI

二、特性

启动看门狗后会从0xFFF开始递减计数,一旦减至零,就会触发复位

在减至零前进行喂狗,就能重新加载IWDG_RLR的值到计数器中

三、窗口选项

如果喂狗的时候,计数器的值比窗口值要大,那么也会触发复位。只有计数器值介于窗口值和0之间时喂狗才能正常运行

32kHz的LSI下,不同的分配系数和计数值对应不同的喂狗时间,详见下表

四、cubeMX配置

不使用窗口功能

笔者使用32分频,4095计数值,则喂狗时间为4095ms

直观起见,把剩余喂狗计数器的值显示在tft屏幕上

cpp 复制代码
sprintf(str, "%d   ", wdgCnt);
ST7735_ShowString(0, 0, str, Font_11x18, GREEN, BLACK);

PA6引脚连接外部按键,当按键按下时触发喂狗动作,重置剩余喂狗计数器值为4095

cpp 复制代码
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET)
{
   HAL_Delay(10);
   if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET)
   {
      HAL_IWDG_Refresh(&hiwdg);
      wdgCnt = hiwdg.Init.Reload;
   }
   while (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET);
}

这种情况下,只要在倒计时结束前单击按键,就可以喂狗,避免触发复位

使用窗口功能

设置窗口值为2000。如果当计数器的值介于2000和4095之间时喂狗,就会触发复位;只有计数器的值介于0和2000之间时喂狗才能正常运行。

实验现象是当计数值为3xxx时按下按键,立即复位

当计数值小于2000但高于0时按下按键,重新装载继续运行

当计数值小于0时立即复位

可见窗口选项为系统提供了较高的时序保障

五、工程链接

STM32G030单片机独立看门狗项目工程文件资源-CSDN下载