嵌入式开发学习日志38——stm32之看门狗

stm32自带了两个看门狗,一个是独立看门狗,一个是窗口看门狗,本章着重讲一下独立看门狗。

Watchdog,简称WDG,中文看门狗,其功能是可以在程序运行过程中,由于设计的漏洞、硬件故障等外部原因导致卡死或者跑飞时,可以及时将程序进行复位,防止程序长时间进入罢工状态,以此保证程序的安全可靠。

实际上,看门狗相当于一个定时器,在设定的时间范围内,如果操作者没有进行"喂狗"的操作,那么看门狗就会产生复位信号,使得程序重新正常运行。

那什么叫"喂狗"呢?

不同类型的看门狗,"喂狗"的操作也有细微的差异。

独立看门狗有一个12位递减计数器,开始时会设置一个初值,然后向下递减,在计数器归零之前,如果将计数器进行了重置计数,那么看门狗就不会产生复位信号,这个重置的操作就相当于喂狗,当然,如果没有进行重置,看门狗就会自动执行自己的功能,提醒你需要"喂狗"了。

下面我们来看看独立看门狗内部结构,深入了解一下IWDG。

由于看门狗属于一种定时器,我们绕不开它的时钟源,IWDG使用的是内部低速时钟LSI,这和我们上面讲的RTC实时时钟的BKP备份寄存器中的LSE有点相似,两者都可以在外部有干扰的情况下保证模块能够正常运作。不过LSI一般提供40khz的频率,精度不高,所以独立看门狗只能适用于时间精度较低的场景。

预分频器、计数器还有重载寄存器等都是老朋友,这里不多赘述,我们来看看陌生的密钥寄存器,也叫键寄存器。从名字上看,这样的寄存器就是通过不同关键字来实现不同的功能的。该寄存器可以写入三种值,第一种0X5555,由于看门狗具有写保护,想要修改寄存器,就需要通过这个值来实现,我们配置看门狗时就需要这一步;第二种是0XAAAA,这是将计数器中的数值进行重载;第三种是0XCCCC,这个属于启动IWDG,一旦启动,就无法关闭,除非复位。

讲完独立看门狗,这里再简单讲讲窗口看门狗。

窗口看门狗时间精度更高,它挂载在APB1上,直接与主时钟挂钩,但是也会因为主时钟受干扰导致功能失效。

其次,窗口看门狗是7位递减计数器,它的"喂狗"操作限制也不一样,窗口窗口,是有一个特定的时间窗口,如果早于或者晚于这个时间窗口进行"喂狗",都会导致程序复位。

相关推荐
阿杰学AI13 小时前
AI核心知识115—大语言模型之 自监督学习(简洁且通俗易懂版)
人工智能·学习·ai·语言模型·aigc·监督学习·自监督学习
九英里路14 小时前
OS学习之路——动静态库制作与原理
linux·学习·操作系统·unix·进程·编译·动静态库
red_redemption14 小时前
自由学习记录(160)
学习
南無忘码至尊14 小时前
Unity学习90天-第2天-认识Unity生命周期函数并用 Update 控制物体移动,FixedUpdate 控制物理
学习·unity·游戏引擎
报错小能手15 小时前
ios开发方向——swift错误处理:do/try/catch、Result、throws
开发语言·学习·ios·swift
LX5677715 小时前
传统销售如何系统学习成为AI智能销售顾问?认证指南
人工智能·学习
做cv的小昊15 小时前
【TJU】应用统计学——第五周作业(3.1 假设检验的基本思想、3.2 单个正态总体参数的假设检验)
学习·线性代数·机器学习·数学建模·矩阵·概率论·tju
ipod74115 小时前
电子电路的元器件
单片机·嵌入式硬件
清风66666615 小时前
基于单片机的脉搏与呼吸监测报警设备设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
格鸰爱童话16 小时前
向AI学习项目技能(六)
java·人工智能·spring boot·python·学习