STM32hal库学习(F1)-IWDG

本文介绍了IWDG(独立看门狗)的概念,其作为产生系统复位的计数器,用于检测电磁干扰和系统异常。文章详细讲解了IWDG的工作原理、寄存器配置、溢出时间计算以及在STM32F1中使用HAL库进行配置的步骤。
摘要由CSDN通过智能技术生成

IWDG简介

全称

Independent watchdog,独立看门狗

本质

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

特性

递减的计数器

时钟是由独立的RC振荡器提供(可在待机和停止模式下运行)

看门狗被激活后,当递减计数器到0x000时产生复位

喂狗

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

作用

当外界电磁干扰或自身系统(硬件或软件)异常,造成程序跑飞,如:陷入某个不正常的死循环,打断正常的程序运行,会无法喂狗,这时会触发IWDG

IWDG主要应用与需要高稳定性的产品,并且对时间精度要求较低

是处理异常的最后手段,但不可依赖,设计尽量想着避免异常发生

IWDG工作原理

启用IWDG后,LSI时钟会自动开启

但LSI时钟频率并不精准,F1用40kHz

IWDG寄存器

键寄存器IWDG_KR

此寄存器用于喂狗,解除PR和RLR寄存器写访问保护,以及启动看门狗工作

预分频器寄存器 IWDG_PR

重装载寄存器(IWDG_RLR)

该寄存器用于存放重装载值,低12位有效,即最大值为4096

状态寄存器(IWDG_SR)

用于判断预分频值和重装载值是否已经被更新

寄存器配置

1. 通过在键寄存器 (IWDG_KR) 中写入 0xCCCC 来使能 IWDG

2. 通过在键寄存器 (IWDG_KR) 中写入 0x5555 来使能寄存器访问。

3. 通过将预分频器寄存器 (IWDG_PR) 编程为 0~7 中的数值来配置预分频器。

4. 对重载寄存器 (IWDG_RLR) 进行写操作。

5. 等待寄存器更新 (IWDG_SR = 0x0000 0000)

6. 刷新计数器值为 IWDG_RLR 的值 (IWDG_KR = 0xAAAA)

IWDG溢出时间计算

寄存器计算公式

HAL库计算

最短最长时间(F1)

IWDG配置步骤

函数

主要寄存器

主要功能

HAL_IWDG_Init

IWDG_PR/RLR/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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

油门子z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值