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

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

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

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

那什么叫"喂狗"呢?

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

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

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

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

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

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

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

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

相关推荐
小莞尔10 小时前
【51单片机】【protues仿真】基于51单片机智能路灯控制系统
c语言·stm32·单片机·嵌入式硬件·51单片机
Vizio<12 小时前
《基于 ERT 的稀疏电极机器人皮肤技术》ICRA2020论文解析
论文阅读·人工智能·学习·机器人·触觉传感器
weixin_5142218514 小时前
FDTD与matlab、python耦合
python·学习·matlab·fdtd
递归不收敛16 小时前
吴恩达机器学习课程(PyTorch 适配)学习笔记大纲
pytorch·学习·机器学习
不太可爱的叶某人16 小时前
【学习笔记】kafka权威指南——第10章 监控kafka (7-10章只做了解)
笔记·学习·kafka
递归不收敛18 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:2.4 激活函数与多类别处理
pytorch·学习·机器学习
加油201918 小时前
如何快速学习一个网络协议?
网络·网络协议·学习·方法论
辰哥单片机设计19 小时前
TT直流减速电机(STM32)
stm32
A9better19 小时前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习