HAL独立看门狗使用

1.看门狗作用

当单片机的工作受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,发生不可预料的后果。
出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于检测单片机程序运行状态的模块或芯片,俗称 “看门狗。

2.看门狗工作过程

①.看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。
②. 看门狗设置一个计数值,按照设置的频率进行递减,当递减到0的时候会产生一个复位信号,从而重启程序,并复位计数器值。复位计数器的值的过程称为喂狗。

3.独立看门狗时钟

独立看门狗使用内部RC震荡时钟LSI,时钟频率为30KHZ~60KHZ,会受到温度及工作场合不同而漂移,因此一般计算计数频率时取40KHZ。是应于时间精度要求低的场合。由于使用内部低速时钟即便外部时钟穿线故障,也不会影响看门狗的正常工作。

4.独立看门狗寄存器

①.预分频寄存器

在这里插入图片描述

该寄存器PR[2:0]后三位提供了 8种分频方式,最低分频为4。那么频率计算为:
在这里插入图片描述
(其中:fp为分频后计数频率、fLSI为LSI时钟频率、PRV为PR[2:0]设置的值。
例如:PR[2:0]设置为010,为10进制2,取fLSI为40khz则公式变为
在这里插入图片描述
即为fp=2.5khz。

②.键值寄存器

键值寄存器,所谓键值即可理解为操作看门狗所使用钥匙或者一些指令,要想改变看门狗动作,必须先通过该寄存器设置一些命令进行操作。
该寄存器为只写寄存器,当读时读出的值为0。

该寄存器总共有三种操作方法:
在这里插入图片描述

③.重装载寄存器

在这里插入图片描述

该寄存器用于设置看门计数值,即设置多大的值看是递减,RL[11:0]总共有12位最大值为0xFFFh
当设置为4000(FA0h),则从经过在这里插入图片描述
后将进行发送复位信号(其中fp为2.5khz 上文示例值)。

④.状态状态寄存器

在这里插入图片描述

状态寄存器 SR 只有位 0: PVU 和位 1: RVU 有效,这两位只能由硬件操作,软件操作不了。 RVU:
看门狗计数器重装载值更新,硬件置 1 表示重装载值的更新正在进行中,更新完毕之后由硬件清
0。 PVU: 看门狗预分频值更新,硬件置’ 1’指示预分频值的更新正在进行中,当更新完成后,由
硬件清 0。所以只有当 RVU/PVU 等于 0 的时候才可以更新重装载寄存器/预分频寄存器。

在这里插入图片描述

CubeMX配置(F103ZET6演示)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相关接口

HAL_StatusTypeDef     HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg);//独立看门狗初始化
HAL_StatusTypeDef     HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg);//喂狗
__HAL_IWDG_START(__HANDLE__)//开始看门狗计数
__HAL_IWDG_RELOAD_COUNTER(hiwdg);//重载看门狗计数

常用代码段:

void MX_IWDG_Init(void)
{
  hiwdg.Instance = IWDG;//初始化看门狗句柄
  hiwdg.Init.Prescaler = IWDG_PRESCALER_4;//分频系数
  hiwdg.Init.Reload = 500;//重装载寄存器
  if (HAL_IWDG_Init(&hiwdg) != HAL_OK)//该接口内部将会调用__HAL_IWDG_START(__HANDLE__)从而开始
  {
    Error_Handler();
  }
}

void main(void)
{
	while (1)
	{
	    HAL_IWDG_Refresh(&hiwdg);//定时喂狗
	    HAL_Delay(1000);    
	}
}

说明:验证独立看门狗是否生效可以在STM32上电时延时一段时间点亮LED注意这个延时时间一定复位信号来到的时间。而main中while循环中不进行喂狗,可以看到LED进行闪烁,说明程序在循环复位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值