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

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

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

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

那什么叫"喂狗"呢?

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

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

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

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

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

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

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

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

相关推荐
hssfscv1 天前
Javaweb 学习笔记——html+css
前端·笔记·学习
Mr.Jessy1 天前
JavaScript高级:深浅拷贝、异常处理、防抖及节流
开发语言·前端·javascript·学习
博客胡1 天前
Python-fastAPI的学习与使用
学习·fastapi·ai编程
HyperAI超神经1 天前
【Triton 教程】triton_language.load
人工智能·学习·大语言模型·cpu·gpu·编程语言·triton
知识分享小能手1 天前
Ubuntu入门学习教程,从入门到精通,Linux操作系统概述(1)
linux·学习·ubuntu
单片机系统设计1 天前
基于STM32的智能台灯系统/智能书桌
stm32·单片机·嵌入式硬件·毕业设计·智能家居
F133168929571 天前
5030A 芯片 24V 转 5V 15A 大电流快充选型
网络·单片机·嵌入式硬件·物联网·汽车
恒锐丰小吕1 天前
无锡黑锋 HF4004 低噪声电荷泵DC-DC转换器技术解析
嵌入式硬件·硬件工程
星一工作室1 天前
STM32项目分享:基于单片机的智能宠物玩具的设计
stm32·单片机·嵌入式硬件
yuhaiqun19891 天前
Typora 技能进阶:从会写 Markdown 到玩转配置 + 插件高效学习笔记
经验分享·笔记·python·学习·学习方法·ai编程·markdown