手把手之STM32看门狗(一)

简介: ●看门狗的意义 1、  c语言的执行过程  在单片机中,c程序从地址0开始按照规律一直向下执行,其中PC指针指示当前代码执行的地址。以STM32F407来说,代码在向下执行的过程中,PC指针一直顺着内存地址移动。

●看门狗的意义

1、  c语言的执行过程

 在单片机中,c程序从地址0开始按照规律一直向下执行,其中PC指针指示当前代码执行的地址。以STM32F407来说,代码在向下执行的过程中,PC指针一直顺着内存地址移动。在执行到main函数的最后一句时,如果没有特殊情况,PC指针还是会持续移动,直到4GB-1Z地址处,最终PC指针又回到0地址循环移动。因此你会看到很多代码的main函数最后一句时一个while死循环!!!PC指针最终停留在你的死循环位置,这样代码就不会从头开始循环执行,也就不会产生复位!

0?wx_fmt=png

2、  看门狗

 狗这种东西就是在有特殊情况的时候狂叫不止,产生报警行为。在单片机中看门狗的功能类似,不过这种狗只会在它饿的时候产生报警(这里的报警一般是复位)。看门狗实质是一个倒数的计数器,如果它数到0,那么就会产生复位!我们在初始化看门狗的时候可以给它一个初始的计数值,使能看门狗之后它就开始倒数,至于什么时候会数到零和你的初始化有关系。例如我们配置一个看门狗3s之后会数到零,那么为了不让它复位,你必须在比3s短的时间内喂狗(重新给它一个计数值就可以了,它会按你给的计数值重新倒数)。

 到此可以知道看门狗的工作原理就是:初始化一个技术值,在它归零之前进行喂狗。既然看门狗一直在工作,那么你就必须一直喂它(就是家里的狗,一日三餐,少一顿它就开始卖萌了^_^)。

 假设我们配置看门狗3s就会计数到零,我们做一个死循环每隔2s喂一次,那这条狗就不会饿了。但是单片机在执行的时候可能会程序跑飞,也就是说代码不按照你写的规矩走,那么你的喂狗程序也就不能执行了,这时3s一过狗就饿了,也就会产生复位操作。由此可以知道看门狗的功能了,只要你配置正确,按时喂狗,那么它只有在程序跑飞的时候才会产生复位。一般大型的项目都会用到看门狗,一旦机器本身出了问题,那么就可以立马复位,而不会造成死机。0?wx_fmt=png

 


●从手册到流程

1、  STM32看门狗

1)  功能描述

0?wx_fmt=png
0?wx_fmt=png

2)  寄存器

0?wx_fmt=png
0?wx_fmt=png
0?wx_fmt=png
0?wx_fmt=png

2、  初始化流程

1)  RCC打开定时器时钟

2)  向关键字寄存器写入0X5555,解除保护

3)  设置预分频值

4)  设置重载计数值

5)  向关键字寄存器写入0xcccc,开启看门狗



●从流程到代码

1)初始化

0?wx_fmt=png

2)喂狗

0?wx_fmt=png


相关文章
|
1月前
STM32--WDG看门狗
STM32--WDG看门狗
|
10月前
|
芯片
STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示
STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示
127 0
|
监控 程序员 芯片
STM32 你不知道的看门狗细节
你知道什么是看门狗吗?看门狗,实际上可以说就是一个简单的定时器功能,而这个定时器有一个输出端,可以输出复位信号。
STM32 你不知道的看门狗细节
如何计算STM32定时器、独立看门狗和窗口看门狗
如何计算STM32定时器、独立看门狗和窗口看门狗
如何计算STM32定时器、独立看门狗和窗口看门狗
|
2月前
|
C++ 芯片 编译器
STM32F103标准外设库—— 新建工程与库函数(四)
STM32F103标准外设库—— 新建工程与库函数(四)
44 0
STM32F103标准外设库—— 新建工程与库函数(四)
|
2月前
|
传感器 芯片 内存技术
STM32F103标准外设库——认识STM32(一)
STM32F103标准外设库——认识STM32(一)
107 0
STM32F103标准外设库——认识STM32(一)
|
2月前
|
芯片 存储 C语言
STM32F103标准外设库——固件库 (三)
STM32F103标准外设库——固件库 (三)
59 0
STM32F103标准外设库——固件库 (三)
STM32CubeIDE移植ARM DSP库
STM32CubeIDE移植ARM DSP库
No.0 个人与固件库工程文件分析 结构(STM32F429/F767/H743)
No.0 个人与固件库工程文件分析 结构(STM32F429/F767/H743)