STM32--独立看门狗IWDG笔记 超详细!!必看!

STM32–独立看门狗IWDG笔记

一、看门狗是什么?

答:看门狗是一个12bit的递减计数器。当计数器的值从某个值一直减到0的时候,系统就会产生一个复位信号,CPU收到复位信号,系统复位重新运行。在计数没减到0之前,重置了计数器的值的话,那么就不会产生复位信号,CPU收不到复位信号,系统就会继续正常运行,并不会产生复位,这个重置计数器的动作就是我们说的 “喂狗”。

二、看门狗的作用是什么?

答:基本功能就是在发生软件问题和程序跑飞时使系统复位,重新启动。可以用于环境比较恶劣的情况下。

三、看门狗分类以其功能

答:看门狗分为两类:

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

区别在于:

窗口看门狗:假如没有定时喂狗,则触发一个中断或产生系统复位
独立看门狗:假如没有定时喂狗,会产生系统复位

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效
窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

四、原理框图

五、独立看门狗的四个寄存器

(1)预分频寄存器(PR)

(2)状态寄存器(SR)
RVU位为0时,才能设置重装载值。
PVU位为0时,才能设置预分配。

(3)重装载寄存器(RLR)

(4)键寄存器(KR)

  • 写入0xAAAA: 喂狗。
  • 写入0XCCCC:使能看门狗。
  • 写入0X5555: 解除预分频寄存器(PR)和重装载寄存器(RLR)的写保护。

    在这里插入图片描述

六、独立看门狗的溢出时间计算公式

#define IWDG_PRESCALER_4                0x00u            		/*!< IWDG prescaler set to 4   */
#define IWDG_PRESCALER_8                0x01U                  	/*!< IWDG prescaler set to 8   */
#define IWDG_PRESCALER_16               0x02U                   /*!< IWDG prescaler set to 16  */
#define IWDG_PRESCALER_32               0x03U 				  /*!< IWDG prescaler set to 32  */
#define IWDG_PRESCALER_64               0x04U                  /*!< IWDG prescaler set to 64  */
#define IWDG_PRESCALER_128              0x05U 				  /*!< IWDG prescaler set to 128 */
#define IWDG_PRESCALER_256              0x06U 				  /*!< IWDG prescaler set to 256 */

由上面代码可以看出,HAL库中宏定义IWDG_PRESCALER_32实际值是:0x03
IWDG_PRESCALER_32 此宏定义名字代表的意思是:独立看门狗预分频器设置为32分频

此处,设宏定义IWDG_PRESCALER_32实际值为prer,设独立看门狗预分频值为psc,则prer与psc之间有关系:

                         psc=2^(prer+2)
#define IWDG_PRESCALER_128              0x05U 

例:IWDG_PRESCALER_128宏定义的实际值prer=5,独立看门狗预分频值为psc=2^(5+2)=128分频,所以此宏定义名字中的x_xxx_128就是这么来的。

独立看门狗溢出时间计算公式:

在这里插入图片描述

代入psc=2^(prer+2)即:

在这里插入图片描述

Tout:溢出时间
prer:设置看门狗时钟预分频寄存器宏定义实际值
rlr:重装载寄存器设置的值
fIWDG:看门狗时钟源频率(LSI:32KHz)

在HAL库程序里如果初始化如下一句:

IWDG_Init(IWDG_PRESCALER_64,500);

看门狗时钟源频率LSI为32KHz的情况下

  • psc=64
  • rlr=500
  • fIWDG=32kHz=32000
    则根据公式计算得到此独立看门狗溢出时间Tout=64*500/32000=1秒

参考:https://blog.csdn.net/qq_48361010/article/details/134387093

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值