STM32-独立看门狗IWDG剖析与实例讲解

看门狗概述

看门狗定时器

        看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。

看门狗用途

它的主要功能是在发生系统软件故障时,将系统复位。也可以用于将系统从休眠或空闲模式唤醒。

STM32-独立看门狗IWDG剖析与实例讲解_第1张图片

STM32-看门狗简介

STM32 结合安全度、计时精确度和易用性提供了IWDG和WWDG两种看门狗

监测软件跑飞,或未按预想地运行的情况

触发系统复位或产生中断(中断仅针对窗口看门狗)

独立看门狗IWDG

专用时钟LSI

低功耗模式仍可运行

对定时的控制比较松

窗口看门狗WWDG

总线时钟APB1

对定时控制比较严

要求主应用程序在规定时间窗口内喂狗

独立看门狗

独立看门狗IWDG工作原理框图分析

STM32-独立看门狗IWDG剖析与实例讲解_第2张图片

独立看门狗的时钟

独立看门狗的时钟

        STM32F4 的独立看门狗由内部专门的 32Khz 低速时钟(LSI)驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,所以并不是准确的32Khz,而是在 15~47Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 32Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。

STM32-独立看门狗IWDG剖析与实例讲解_第3张图片

独立看门狗的寄存器

预分频器寄存器(IWDG_PR)

STM32-独立看门狗IWDG剖析与实例讲解_第4张图片

重载寄存器 (IWDG_RLR)

STM32-独立看门狗IWDG剖析与实例讲解_第5张图片

关键字寄存器 (IWDG_KR)

STM32-独立看门狗IWDG剖析与实例讲解_第6张图片

状态寄存器 (IWDG_SR)

STM32-独立看门狗IWDG剖析与实例讲解_第7张图片

IWDG的超时时间

STM32-独立看门狗IWDG剖析与实例讲解_第8张图片

STM32-独立看门狗实例讲解

实验要求:

开启STM32的独立看门狗,按键按下即喂狗,如果超时未喂狗,则看门狗复位系统,用指示灯指示系统复位

cubemx配置

配置三秒内喂狗,否则复位

STM32-独立看门狗IWDG剖析与实例讲解_第9张图片

	printf("this is IWDG test\n");
	
	HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, GPIO_PIN_SET);//灯熄灭
	
	HAL_Delay(500);
	
	HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, GPIO_PIN_RESET);//灯点亮
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
	
	
  while (1)
  {
		if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET){
			
			HAL_IWDG_Refresh(&hiwdg);//喂狗操作
		}
		
		
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

你可能感兴趣的:(stm32开发,stm32,嵌入式硬件,单片机)