江协科技STM32学习笔记(第13章 WDG看门狗)

第13章 WDG看门狗

13.1 WDG看门狗

13.1.1 WDG简介

看门狗就是程序运行的一个保障措施,我们得在程序中定期地喂狗,如果程序卡死了,没有在规定的时间里喂狗,那么看门狗硬件电路就会自动帮我们复位一下,防止程序长时间卡死,起到重启的作用。

WDG(Watchdog)看门狗;

看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性;

看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号;

STM32内置两个看门狗:

        独立看门狗(IWDG):独立工作,对时间精度要求较低

        窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用

13.1.2 IWDG框图

预分频器之前,输入时钟是LSI,内部低速时钟, 时钟频率为40KHz,之后时钟进入预分频器进行分频,这个分频器只有8位,所以最大只能进行256分频。上面这个预分频寄存器IWDG_PR,可以配置分频系数,这个PR和定时器的PSC是一个意思,它们都是Prescale的缩写,可能不是一个人设计的,所以手册里很多缩写都不太一样。之后后面,时钟经过预分频器分频之后,时钟驱动递减计数器,每来一个时钟,自减一个数,另外这个数是12位的,所以最大值是2^12-1=4095,然后,当自减到0之后,产生IWDG复位,正常运行时,为了避免复位,我们可以提前在重装寄存器写一个值,IWDG_RLR,和定时器的ARR是一样的,RLR是Reloader,ARR是Auto Reloader,那当我们预先写好值之后,在运行过程中,我们在这个键寄存器里写一个特定数据,控制电路进行喂狗,这时重装值就会复制到当前的计数器中,这样计数器就会回到重装值,重新自减运行了。状态寄存器IWDG_SR,这就是标志电路运行的状态了,其实这个SR里没什么东西,只有两个更新同步位,最后,上面这些寄存器,位于1.8V供电区,下面主要的工作电路,都位于VDD供电区。

13.1.3 IWDG键寄存器

键寄存器本质上是控制寄存器,用于控制硬件电路的工作;

在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率。

如果只在控制寄存器中设置一个位,那这一位就有可能在误操作中,变成1或者变成0,这个概率是比较大的,所以单独设置一位来进行控制比较危险。比如程序跑飞,胡乱地设置各个寄存器,寄存器收到影响,可能会变成0x0000,0xFFFF,它可以随机变为任何数,但它恰好变成0xAAAA这个数的概率比较小。

写入键寄存器的值

作用

0xCCCC

启用独立看门狗

0xAAAA

IWDG_RLR中的值重新加载到计数器(喂狗)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值