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

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

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

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

那什么叫"喂狗"呢?

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

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

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

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

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

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

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

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

相关推荐
liuyicenysabel14 小时前
多服务上线日记三:
运维·服务器·笔记·学习
YM52e15 小时前
鸿蒙ArkTS实战项目 - 门店陈列巡检台:巡检卡片与多列切换实现
学习·华为·harmonyos
一只小小的芙厨16 小时前
基础数论总结
笔记·学习·算法
国科安芯17 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
hsjiasb17 小时前
FreeRTOS学习(三十七)——常见错误与工程规范
学习·学习笔记·freertos
小席是个热心肠18 小时前
Redis的自我学习
数据库·redis·学习
zyf10441618 小时前
暑期实践日志 Day33:完成全部字幕添加,工作基本收尾
学习·计算机网络·剪辑·暑期实践·课题任务
Chris _data19 小时前
WPF 上位机开发学习笔记 - 第四天
笔记·学习·wpf
HY小宝F19 小时前
树莓派 FFmpeg 实战笔记(二):命令行、源码编译与硬件编码的真相
学习·职场和发展·ffmpeg
树的枝19 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件