当前位置: 首页 > news >正文

STM32单片机入门学习——第46节: [14-1] WDG看门狗

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!

本文写于:2025.04.23

STM32开发板学习——第46节: [14-1] WDG看门狗

  • 前言
  • 开发板说明
  • 引用
  • 解答和科普
  • 一、WGD看门狗
  • 问题
  • 总结

前言

   本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
   欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
   在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
   另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!

开发板说明

   本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
   原理图如下
1、开发板原理图
在这里插入图片描述
2、STM32F103C6和51对比
在这里插入图片描述
3、STM32F103C6核心板
在这里插入图片描述

视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。

下图是实物图
在这里插入图片描述

引用

【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
在这里插入图片描述
数据手册
在这里插入图片描述

解答和科普

一、WGD看门狗

在这里插入图片描述
在程序卡死的情况下,自动帮我们复位一下。
独立看门狗:看一下这个程序,是因为看门狗复位,而从头执行的,还是因为刚上电或者复位键,而从头执行的。按键是阻塞式,进行模拟卡死,不能喂狗,则看门狗复位。
窗口看门狗:对喂狗时间更严格,喂狗 早了和晚了都复位。
看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性。
• 看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号

在这里插入图片描述
独立运行:独立看门狗的时钟是专用的LSI,内部低速时钟。只有一个最晚界限,喂狗不超过这个界限就行了。
窗口看门狗:要求看门狗在精确计时窗口起作用,有个最早的界限和最晚的界限。使用的时钟是APB1的时钟。
在这里插入图片描述
类比于时基单元,输入时钟是LSI,内部低速时钟,时钟频率为40Khz之后时钟进入预分频器进行分频,只有8位,最大只能进行256分频,上面这个预分频器寄存器IWDG_PR可以配置分频系数,时钟驱动递减寄存器,每来一个时钟,自减一个数,计数器是12位,最大值是2^12-1=4095,然后,当自减到0之后,产生IWDG复位,正常运行时,为了避免复位呢,可以提前在重装值寄存器写一个值,IWDG_RLR,和定时器的ARR是一样的,在运行中,我们在这个键寄存器里,写一个特定数据,控制电路,进行喂狗,这时重装值,就会复制到当前的计数器中,这样计数器就会回到重装值,重新自减运行了,还有个状态寄存器,标志电路运行的状态了。上面这些寄存器,位于1.8V供电区,下面的主要工作电路,都位于VDD供电区。
在这里插入图片描述
只设置一个位就有可能会在误操作中,变成 1或者变成0,这个概率是比较大的,所以单独设置1位就来执行控制,是比较危险的。通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率。
可以对寄存器写保护,防止误操作,写入指令,才能执行相应的操作。

在这里插入图片描述
LSI是输入时钟,40KHz,FLSI是40K, TLSI就是周期=0.025ms,之后输入时钟进行分频,相当于计数时间加倍,RL+1就是技术目标的计数个数。RL(0-4095).
在这里插入图片描述
大体上看比独立看门狗多了个早喂狗时间的限制,和独立看门狗不是一个思路。
如何进行重装计数器进行喂狗:这个直接在CNT写入数据就行了。
时钟来源是PCLK1,也就是APB1的时钟,这个时钟默认是36Mhz,进来之后,还是先经过一个预分频器进行分频,分配之后的时钟,驱动这个计数器进行计数,T6是溢出标志位,0x40,下一个值变为0111 1111,标志位变为0,表示发生溢出;通过线路产生复位信号。
首先,WDGA,是窗口看门狗的激活位,也就是使能,WDGA写入1,启动窗口看门狗,作用与门,两个来源任意一个,都可以复位,T6=0,溢出,非门后为1,经过或门产生复位信号。
最早界限:首先把计算好的写入到W6~W0中,写入CR,这个与门会打开,也就是写入计数器,也就是喂狗。一但比较,当前的计数器T6:0>窗口值W6:0比较结果就为1,也可以申请复位。喂狗太晚计数器减到0了。喂狗太早,计数器的值超过窗口值了,复位。
在这里插入图片描述
T6:0=W6:0就已经可以开始喂狗了,所以没有+1了。
在这里插入图片描述
在这里插入图片描述
如果用户在选择字节中启用了“硬件看门狗”功能,在系统上电复位后,看门狗会自动开始运行;如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位。

IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看门狗计数到那个值没有库函数可以查看。
窗口看门狗:
启动看门狗 在系统复位后,看门狗总是处于关闭状态,设置WWDG_CR寄存器的WDGA位能够开启看门狗,随后它不能再被关闭,除非发生复位;
递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。

问题

总结

本节课主要是了看门狗,其中有独立看门狗,窗口看门狗。其中独立看门狗和窗口看门狗的原理,实现方式不同。

相关文章:

  • Redis在.NET平台中的各种应用场景
  • AI日报 - 2025年4月23日
  • 代理模式(Proxy Pattern)详解:以延迟加载图片为例
  • NLP高频面试题(五十)——大模型(LLMs)分词(Tokenizer)详解
  • 【C++】Json-Rpc框架项目介绍(1)
  • Agent框架LangGraph:实现一个简单的Plan-and-Execute Agent
  • 电子电器架构 --- 面向下一代车辆的演进式(发展演变的)汽车网关
  • 仅追加KV数据库
  • 实验一 进程控制实验
  • 2023蓝帽杯初赛内存取证-4
  • NVIDIA 自动驾驶技术见解
  • 从零到多智能体:Google Agent开发套件(ADK)入门指南
  • C语言教程(十三):C 语言中 enum(枚举)的详细介绍
  • 武装Burp Suite工具:RouteVulScan插件_被动扫描发现漏洞.
  • shared_ptr八股收集 C++
  • SwiftInfer —— 大模型无限流式输入推理打破多轮对话长度限制
  • 【题解-Acwing】847. 图中点的层次
  • 双指针之有序数组的平方
  • 航电系统之自动控制系统篇
  • MulanPSL-1.0开源协议
  • 上海市委财经委会议分析研判当前经济运行情况,调度部署下阶段重点工作
  • 美国土安全部长餐厅遇窃,重要证件被盗走
  • 教育部召开全国中小学幼儿园安全工作视频会议:加强校园安防建设
  • 金价新高不断,上金所再发风险提示,黄金能否持续闪耀?
  • 讲座|在数字化时代,“记住”到底意味着什么
  • 韩国新一届总统选举将于6月3日举行,民调显示李在明继续领跑