IWDG与WWDG (学习)

IWDG

Independent watchdog,即独立看门狗

IWDG:能产生系统复位信号的计数器

  1. 递减的计数器
  2. 时钟由独立的RC振荡器提供(可在待机和停止模式运行)
  3. 看门狗被激活后,当递减计数器计数到0x000时产生复位

喂狗:在计数器计数到0之前,重装载计数器的值,防止复位

系统复位

除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器以外,系统复位将复位所有寄存器至它们的复位状态。

当发送以下任一事件时,产生一个系统复位:

  1. NRST引脚上的低电平(外部复位)
  2. 窗口看门狗计数终止(WWDG复位)
  3. 独立看门狗计数终止(IWDG复位)
  4. 软件复位(SW复位)
  5. 低功耗管理复位

IWDG作用

异常:外界电磁干扰或者自身系统(硬件或软件)异常,造成程序跑飞,如:陷入某个不正常的死循环,打断正常的程序运行。

作用:主要用于检测外界电磁干扰,或硬件异常导致的程序跑飞问题。

应用:在一些需要高稳定性的产品中,并且对时间精度要求较低的场合。

独立看门狗是异常处理的最后手段,不可依赖,应在设计时尽量避免异常的发生。

IWDG与WWDG (学习)_第1张图片
CPU必须及时喂狗,否则系统复位重启!

HAL库相关函数介绍

  • HAL_IWDG_Init():主要寄存器IWDG_PR/RL/KR,使能IWDG,设置预分频系数和重装载值等。
  • HAL_IWDG_Refresh:主要寄存器IWDG_KR,把重装载寄存器的值重载到计数器中,喂狗。
typedef struct{
	IWDG_TypeDef *Instance; //IWDG寄存器基地址
	IWDG_InitTypeDef Init; //IWDG初始化参数
}IWDG_HandleTypeDef;

typedef struct
{
	uint32_t Prescaler; //预分频系数
	uint32_t Reload; //重装载值
}IWDG_InitTypeDef;

验证不及时喂狗,系统将复位重启

IWDG与WWDG (学习)_第2张图片

WWDG

Window Watchdog,即窗口看门狗。

WWDG本质:能产生系统复位信号和提前唤醒中断的计数器。

WWDG的特性:

  1. 递减的计数器
  2. 当递减计数器值从0x40减到0x3F时复位(64->63)
  3. 计数器的值大于W[6:0]值时喂狗会复位
  4. 提前唤醒中断(EWI):当递减计数器等于0x40时可产生

喂狗:在窗口期内重装载计数器的值,防止复位。

作用:用于监测单片机程序运行时效是否精准,主要检测软件异常。
应用:需要精准监测程序运行时间的场合

IWDG和WWDG的区别

IWDG与WWDG (学习)_第3张图片

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