STM32单片机独立看门狗IWDG使用CubeMX配置方法

一、IWDG 的概述

在嵌入式系统设计中,看门狗是一个可靠性保障机制,它能够在系统因软件故障等原因陷入异常状态时,自动触发复位操作,使系统恢复到正常工作状态。STM32的IWDG 是一个独立的看门狗,它的时钟源是 STM32 内部的低速 RC 振荡器(LSI),频率通常为 40 kHz 左右;

IWDG 的主要特点有:

  1. 独立时钟源 :由于使用独立的时钟源,即使主时钟出现故障,IWDG 依然能够正常工作,有效地提高了系统的可靠性;
  2. 超时时间可配置 :通过设置预分频器和重装载值,可以灵活地调整看门狗的超时时间,以满足不同应用场景的需求;
  3. 硬件复位 :当 IWDG 计数器减至 0 时,会触发硬件复位,确保系统能够重新启动并恢复到初始状态;
    本文以STM32F103C8T6为例,使用STM32CubeMX进行配置,自动生成代码,介绍IWDG的配置及使用方法;

二、STM32CubeMX配置方法

1.超时时间计算

手册中关于IWDG的寄存器设置及超时时间的主要介绍如下图中的表格所示:
在这里插入图片描述在这里插入图片描述例如IWDG时钟源频率为40kHz、分频系数为64时,每计数一次的时间为64/(40k)s,假设我们需要超时时间为1s,则需要计数625次,即
64×62540000s=1s \frac{\text{64} \times\text{625}}{{\text{40000}}}s= 1s4000064×625s=1s
可用以下公式计算:
Ttimeout=预分频系数×(重装载值+1)fLSI T_{\text{timeout}} = \frac{\text{预分频系数} \times (\text{重装载值} + 1)}{f_{\text{LSI}}} Ttimeout=fLSI预分频系数×(重装载值+1)

2. STM32CubeMX配置

在STM32CubeMX的Clock Configuration中,查看IWDG的时钟源和频率,STM32F103C8T6的IWDG模块的时钟频率是40KHz,如下图:
在这里插入图片描述
在System Core -> IWDG中,使能IWDG即选中Activated,在下方Parameter Settings中填入预分频值和重载值,此处以超时时间为1s为例,按照上一节的计算,填入相应的值,如下图所示:
在这里插入图片描述配置完成后,生成代码;

三、主要代码

STM32CubeMx生成的代码中,IWDG初始化的函数为

MX_IWDG_Init();

该函数位于iwdg.c文件中,函数的全部内容:

/* IWDG init function */
void MX_IWDG_Init(void)
{

  /* USER CODE BEGIN IWDG_Init 0 */

  /* USER CODE END IWDG_Init 0 */

  /* USER CODE BEGIN IWDG_Init 1 */

  /* USER CODE END IWDG_Init 1 */
  hiwdg.Instance = IWDG;
  hiwdg.Init.Prescaler = IWDG_PRESCALER_64;
  hiwdg.Init.Reload = 625 - 1;
  if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN IWDG_Init 2 */

  /* USER CODE END IWDG_Init 2 */

}

可看出,分频系数和重载值,与我们设置的一致;STM32CubeMX自动生成的代码,在main()函数中会自动调用该函数,我们需要在while(1)循环或者其他地方,在超时时间之内,调用喂狗函数,使IWDG重置,该函数为

HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
{
  /* Reload IWDG counter with value defined in the reload register */
  __HAL_IWDG_RELOAD_COUNTER(hiwdg);

  /* Return function status */
  return HAL_OK;
}

它在stm32f1xx_hal_iwdg.c文件中,调用喂狗函数需要包含相应的头文件,调用形式为

HAL_IWDG_Refresh(&hiwdg);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值