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

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

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

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

那什么叫"喂狗"呢?

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

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

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

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

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

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

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

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

相关推荐
淮北4945 小时前
vim学习进阶
学习·编辑器·vim
busideyang5 小时前
为什么推挽输出不能接收串口数据,而准双向口可以?
c语言·stm32·单片机·嵌入式硬件·嵌入式
济6176 小时前
STM32定时器进阶:从模式控制器完全指南,一文学会TRGI/TRGO---STM32 HAL库专栏
stm32·单片机·嵌入式·stm32hal库编程
sayang_shao6 小时前
ARM架构运行模式学习笔记
arm开发·学习·架构
鲨辣椒100866 小时前
单片机在线演绎《当幸福来敲门》------ 中断机制
单片机·嵌入式硬件
happymaker06268 小时前
web前端学习日记——DAY04
前端·学习
小白学电子_9 小时前
proteus仿真51单片机通过定时器控制红绿灯
嵌入式硬件·51单片机·proteus
solicitous9 小时前
遇到一个口头机遇
学习·生活
鲨辣椒1008610 小时前
51单片机初相识
单片机·嵌入式硬件·51单片机
独处东汉10 小时前
freertos开发空气检测仪之完结_Air_check_App 工程概览与使用说明
stm32·单片机·嵌入式硬件·freertos