STM32HAL库-IWDG篇

目录

IWDG简介

IWDG介绍

IWDG有什么作用

IWDG工作原理

IWDG框图和寄存器

IWDG寄存器

键寄存器IWDG_KR

预分频寄存器IWDG_PR

 重装载寄存器IWDG_RLR

​编辑状态寄存器IWDG_SR

IWDG溢出时间计算

IWDG配置步骤

IWDG配置步骤

​编辑

窗口寄存器IWDG_WINR(F7/H7)


IWDG简介

IWDG介绍

IWDG,Independent Watch Dog 独立看门狗

IWDG的本质是能产生系统复位信号的计数器

IWDG的特性:

递减的计数器

IWDG时钟由独立的RC振荡器,可在待机和停止模式下运行

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

喂狗是指计数器计数到0之前,重载计数器的值,防止复位

Reset and Clock.,RCC,复位和时钟控制器 

Clock Status Register,CSR,时钟状态寄存器

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

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

1、NRST引脚上的低电平(外部复位)

2、窗口看门狗计数终止(WWDG复位)

3、独立看门狗计数终止(IWDG复位)

4、软件复位(SW复位)

5、低功耗管理复位

IWDG有什么作用

IWDG通常用于产品异常情况下的复位功能,比如外界电磁干扰或者硬件软件问题导致程序跑飞的情况,适合高稳定性的产品和对时间精度要求较低的场合。IWDG的时钟源是独立的RC震荡器,时钟源不稳定时间精度较低

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

IWDG工作原理

IWDG是递减计数器,既然是计数器就需要时钟

Src CLK指代时钟源,也就是RC震荡器

RC振荡器提供的时钟信号经过PSC预分频器得到IWDG CLK,也就是工作时钟 

工作时钟信号到递减计数器,减到0后复位,或者喂狗操作防止复位

 Prescaler,PSC,预分频器

Count,CNT,计数器

IWDG框图和寄存器

IWDG框图

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

LSI时钟频率并不精确,F1用40kHz,F4/F7/H7用32kHz进行计算即可

 LSI,Low Speed Inner,低速内部振荡器(时钟)

LSI产生时钟源,8位预分频器的分频值由IWDG_PR寄存器设置

时钟信号经过分频后,到达递减计数器(12位,最大值4096),递减到0后IWDG复位

如果递减到0之前重载寄存器对递减计数器重装载值,则不会复位

设置分频值和重载值都会有一个状态位,给到IWDG_SR寄存器

设置重装载值之前还要由密钥寄存器IWDG_KR来进行解锁

IWDG寄存器

IWDG相关的寄存器有4个,分别是

键寄存器IWDG_KR

预分频寄存器IWDG_PR

重装载寄存器IWDG_RLR

状态寄存器IWDG_SR

键寄存器IWDG_KR

键寄存器IWDG_KR是32位寄存器,高16位保留,低16位只写,写入不同的键值实现不同的功能,读出值固定0x0000

软件写入0xAAAA,就是喂狗,将重载寄存器IWDG_RLR的值载入递减计数器

写入0x5555表示解除IWDG_PR和IWDG_RLR寄存器的写访问保护,也就是允许访问

写入0xCCCC表示启动看门狗工作(若选择硬件看门狗则不受此命令字限制)

关于硬件看门狗和软件看门狗的选择,参考STM32FXXX闪存编程手册,查找用户选择/选项字节相关内容。以F1系列为例,USER寄存器的位16用来设置硬件/软件看门狗,硬件看门狗在系统复位以后自己启动,并且不能关闭,软件看门狗则不会自己启动,由IWDG_KR寄存器控制

预分频寄存器IWDG_PR

预分频寄存器IWDG_PR是32位寄存器,低3位有效。000、001、010…依次代表预分频因子=4、8、16…

 重装载寄存器IWDG_RLR

重装载寄存器IWDG_RLR是16位寄存器,高4位保留,低12位有效,用来存储重装载值,最大值为4096。只有键值寄存器IWDG_KR写入0xAAAA时,IWDG_RLR寄存器的值才会被重装载到递减计数器中;只有在键值寄存器IWDG_KR写入0x5555时,预分频计数器IWDG_PR和重装载寄存器IWDG_RLR才可写。

状态寄存器IWDG_SR

状态寄存器IWDG_SR时32位寄存器,低2位有效‘

位0表示看门狗预分频值更新

位1表示看门狗重装载值更新

就是这俩位一个控制IWDG_PR的可写状态,一个控制IWDG_RLR的可写状态

要写的时候对应位置1,写完对应位自动清零

IWDG溢出时间计算

看门狗溢出时间 = (预分频系数*重装载值)/看门狗时钟源频率

IWDG最短/最长溢出时间

计数 1 次为最短时间,计数 4096 为最大时间

IWDG配置步骤

IWDG配置步骤

取消 PR、RLR 寄存器写保护,设置IWDG预分频系数和重装在值,启动IWDG

HAL_IWDG_Init()

1、在键寄存器IWDG_KR中写入0x5555

来使能预分频器寄存器 IWDG_PR和重装载寄存器IWDG_RLR的访问

2、设置预分频器寄存器IWDG_PR

3、设置重装载寄存器IWDG_RLR

4、等待状态寄存器IWDG_SR更新为0x0000 0000,也就是PR和RLR设置操作完成

5、在键寄存器IWDG_KR中写入0xCCCC

来使能IWDG

喂狗

HAL_IWDG_Refresh()

6、在键寄存器IWDG_KR中写入0xAAAA,刷新计数器的值为 IWDG_RLR的值

IWDG的HAL库配置步骤

主要参数 一个是 xx外设的句柄 xxx_HandleTypeDef,另一个是xxx外设的初始化结构体 

句柄xxx_HandlerTypeDef 通常包括

外设的基地址 xxx_TypeDef 和初始化结构体xxx_InitTypeDef

窗口寄存器IWDG_WINR(F7/H7)

在F7/H7系列的IWDG初始化结构体IWDG_InitTypedef中,除了预分频值(PR)和重装载值(RLR),还有窗口值,对应窗口寄存器(IWDG_WINR)。窗口寄存器(WINR)和预分频寄存器(PR)、重装载寄存器(RLR)一样,由键寄存器(KR)的0x5555指令控制写使能

窗口寄存器WINR为32位寄存器,低12位有效。最大4028

当递减计数器的值低于窗口计数器的值,且大于0时,才允许喂狗操作,否则不许喂狗

F7/H7的IWDG初始化结构体
IWDG_WINR寄存器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值