手把手之STM32看门狗(一)

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

●看门狗的意义

1、  c语言的执行过程

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


2、  看门狗

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

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

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

 


●从手册到流程

1、  STM32看门狗

1)  功能描述



2)  寄存器





2、  初始化流程

1)  RCC打开定时器时钟

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

3)  设置预分频值

4)  设置重载计数值

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



●从流程到代码

1)初始化


2)喂狗




相关文章
【STM32】详解独立看门狗的本质和使用步骤&代码
【STM32】详解独立看门狗的本质和使用步骤&代码
|
6月前
STM32--WDG看门狗
STM32--WDG看门狗
103 0
|
芯片
STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示
STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示
212 0
|
监控 程序员 芯片
STM32 你不知道的看门狗细节
你知道什么是看门狗吗?看门狗,实际上可以说就是一个简单的定时器功能,而这个定时器有一个输出端,可以输出复位信号。
STM32 你不知道的看门狗细节
如何计算STM32定时器、独立看门狗和窗口看门狗
如何计算STM32定时器、独立看门狗和窗口看门狗
如何计算STM32定时器、独立看门狗和窗口看门狗
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
447 2
|
4月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
716 0
|
6月前
|
传感器
STM32标准库ADC和DMA知识点总结-1
STM32标准库ADC和DMA知识点总结
|
5月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
510 4