STM32CubeMX | STM32独立开门狗(IWDG)HAL使用详解

HAL库STM32独立开门狗(IWDG)使用详解


看门狗介绍

介绍:看门狗其实就是一个定时器,给他设置一个定时值,它会逐渐递减,递减到0后就会进行芯片复位,在看门狗定时器还没到达0时重新给他赋值的这个操作就叫喂狗。其实不管是单片机这样,大多数带看门狗的芯片实现都是这样的。

作用:防止程序发生死循环,或者程序跑飞。


STM32看门狗介绍

STM32包含两种开门狗:

  • 窗口看门狗(WWDG)
  • 独立开门狗(IWDG)

两者区别是窗口开门狗如果超时没有喂狗是触发中断,而独立开门狗是直接进行芯片复位。

时钟来源:

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。

窗口看门狗(WWDG)由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

使用场合:

IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

IWDG功能描述:

在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗,此时计数器开始从其复位值
0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键寄存器IWDG_KR中写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位。

IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。 状态寄存器指示预分频值和递减计数器是否正在被更新。

IWDG超时时间:

F1系列:

F4系列:

由表可知,F1系列LSI给看门狗的时钟频率是40KHz,F4系列是32KHz。

超时时间计算公式:

超时时间Tout = 4 * 2^PR * (重载值 + 1) / LSI

重载值取值范围:0~4095

以F1为例,4分频时所对应的PR位为0,重载值为0时是最短的超时时间,套用公式后:
4 * 2 ^ 0 * (0 + 1) / 40000HZ = 0.0001s = 0.1ms

当重载值为4095时是最大超时时间,套用公式:
4 * 2 ^ 0 (4095 + 1) / 40000HZ = 0.4096s = 409.6ms


STM32Cube配置设置

以F1为例,开启看门狗:

配置时钟:

然后生成代码就可以了。

注意: 生成的IWDG初始化函数MX_IWDG_Init已经将看门狗启动了,如果不想这么早启动看门狗,可以将MX_IWDG_Init往后放。

喂狗函数:HAL_IWDG_Refresh(&hiwdg);


END…

  • 17
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

觉皇嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值