这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【NUCLEO-F429ZI】IWDG外设使用

共1条 1/1 1 跳转至

【NUCLEO-F429ZI】IWDG外设使用

助工
2025-03-18 23:51:15     打赏

1、简介

IWDG(Independent Watchdog)独立看门狗定时器,是一种用于嵌入式系统中的硬件看门狗,主要用于防止系统死机或程序跑飞。IWDG 通过定期喂狗(重置计数器)来确保系统正常运行,如果超时未喂狗,IWDG 将触发 MCU 复位,从而使系统重新启动。独立看门狗有着独立的时钟源,即内部的32KHz低速晶振信号,即使系统所有时钟源全部瘫痪也不会影响到IWDG的运行。

2、IWDG 使用方法

以NUCLEO-F429ZI为例,新建MDK Keil工程

4VJZNXZ81Z%2]AQCMOAFD5C.png

时钟分频系数为32,计数值为1000

那么IWDG的溢出周期=1000*32(32KHz)=1s,因此系统上电运行后需要保证每间隔1s内不断将计数值设置为0初值,防止定时器计数溢出从而触发系统复位

main.c文件一览

@JIYOD3BMDQ]N4B2C)}9IHH.png

/* USER CODE BEGIN 2 */
	printf("系统重启完成\n");
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		
//		printf("IWDG计数值刷新前\n");
//		HAL_IWDG_Refresh(&hiwdg);//32KHz/64,1000=2s
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

  }

3、运行效果

由于没有及时复位IDWG计数初值,因此每间隔1s系统会发生重启

[$`XJ64SIM{_OXF2YS0[J%3.png

while循环间隔800ms,重置IDWG计数初值

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		HAL_IWDG_Refresh(&hiwdg);//32KHz/64,1000=2s
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		printf("系统正常运行中\n");
		HAL_Delay(800);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

TVTC17XWS@9]@D1J_P7}0UF.png

可见,及时刷新IDWG计数初值可以避免系统重启,如果程序跑飞则计时器刷新不能正常完成,看门狗就会强制触发系统复位。




关键词: IWDG外设    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]