WDG开门狗

news2025/2/8 20:30:35

WDG开门狗简介

在这里插入图片描述
独立看门狗,它的特点就是独立运行,对时间精度要求较低。独立运行就是独立看门狗的时钟是专用的,LSI内部低速时钟,即使主时钟出现问题了,看门狗也能正常工作,这也是独立看门狗独立的得名原因,对时间精度要求较低,就是独立看门狗只有一个最晚时间界限,你喂狗间隔只要不超过这个最晚界限就行了,你说很快的喂、疯狂的喂、连续不断的喂,那都没问题。

窗口看门狗,要求看门狗在精确计时窗口起作用,意思就是喂狗的时间有个最晚的界限,也有个最早的界限,必须在这个界限的窗口内喂狗。因为对于独立看门狗来说,可能程序就卡死在喂狗的部分了,或者程序跑飞,但是喂狗代码也意外执行了,或者程序有时候很快喂狗,有时候又比较慢喂狗,那这些状态独立看门狗就检测不到了,但是窗口看门狗是可以检测到这些问题的,因为它对喂狗的时间窗口可以卡的很死,快了慢了都不行,最后窗口开门口使用的是APB1的时钟,它没有专用的时钟,所以不算是独立。

独立看门狗框图

在这里插入图片描述
它的结构和定时器是非常相似的,只不过是定时器溢出产生中断,而看门狗定时器溢出直接产生复位信号。
喂狗操作其实也就是重置这个计数器,这是一个递减计数器,减到零之后就复位,那程序正常运行时,为了避免复位,就得在这个计数器减到零之前,及时把记数值加大点,这个操作就是喂狗,如果你程序卡死了,没有及时加大这个记数值,那减到零之后就自动复位了,就是看门狗的工作逻辑。
在这里插入图片描述

那预分频器之前输入时钟是LSI内部低速时钟,时钟频率为40KHz,之后时钟进入预分频器进行分频,这个预分频器只有8位,所以它最大只能进行256分频。

这个预分频寄存器,IWDG_PR可以配置分频系数,后面经过预分配器分频之后,时钟驱动递减计数器,每来一个时钟自减一个数,另外这个计数器是12位的,所以最大值是2^12-1=4095,然后当自减到0之后,产生IEDG复位。正常运行时,为了避免复位,我们可以提前在重装寄存器写个值,那当我们预先写好值之后,在运行过程中,我们在这个键寄存器里写个特定数据,控制电路进行喂狗。这时重装值就会复制到当前的计数器中,这样计数器就会回到重装值,重新自减运行了。

状态寄存器SR,就是标志电路运行的状态了,SR里只有两个更新同步位。

最后 这些寄存器位于1.8V供电区,下面主要的工作电路都位于VDD供电区,所以这下面写了看门狗功能处于vdd供电区,即在停机和待机模式时仍能正常工作。

IWDG键寄存器

在这里插入图片描述

最后两条是写保护的逻辑啊,意思就是执行指令必须写入指定的键值,所以指令抗干扰能力是很强的。
但这里(上面框图里)还有PR、SR和RLR 3个寄存器,他们也要有防止误操作的功能,SR是只读的不用保护,剩下的PR和RLR的写操作,可以设置一个写保护措施,然后只有在键寄存器写入5555,才能解除写保护,一旦写入其他值,PR和RLR再次被保护,这样PR和RLR就跟随键寄存器一起,被保护了起来,防止误操作,这是键寄存器设计的用途。

独立看门狗超时时间

也就是定时器溢出时间

在这里插入图片描述
时间计算:LSI是输入时钟,40KHZ,FLSI就是40K ,TLSI就是周期。

PR写入2就是16分频,RL就是计数目标,乘个(RL+1)就是最终超时时间。
TLSI =1/40K=0.025ms
TIWDG =0.025ms16(99+1)=40
最短时间RL=0,最长时间RL为0xFFF,即4095。

窗口看门狗

在这里插入图片描述
在这里插入图片描述

左下角是时钟源部分,这个时钟源是PCLK1,右边这个是预分频器,它这个预分频器,叫WDGTB。
上面这个是6位递减计数器CNT,计数器是位于控制寄存器CR里的,计数器和控制寄存器合二为一了。
窗口看门狗没有重装寄存器,那如何重装计数器进喂狗呢:这个我们直接在CNT写个数据就行了,想写多少就写多少。
这上面是窗口值,由此喂狗的最早时间界限就写到这里存起来。
最后左边就是输出信号的操作逻辑,什么情况下会产生复位,就这几个逻辑门来确定。

工作流程:首先还是从左下角开始看,时钟来源是PCLK1,也就是APB1的时钟,这个时钟默认是36MHz,所以就是36MHz的时钟进来,之后还是先经过一个预分频器进分频,就是灵活的调节后面计数器的时钟频率,同时预分频系数也是计算计数器溢出时间的重要参数,那接着分频之后的时钟驱动这个计数器进行计数,这个计数器和独立看门狗一样,也是一个递减计数器,每来一个时钟自减一次,不过这个计数器比较特殊,其实是因为这个计数器只有T5到T0这六位是有效的就值,最高位T6这里用来当做溢出标志位,第六位等于1时,表示计数器没溢出,T6位等于0时表示计数器溢出,不过对于硬件电路来说,T6位其实也是计数器的一部分,只不过是T6位被单独拎出来,当做标志位了而已。

总结,就是如果你把T6位看作是计数器的一部分,那要是整个计数器值减到0X40之后移出。而如果你把T6位当成溢出标志位,低6位当做计数器,那就是低6位的计数值减到0之后溢出。

在这里插入图片描述
左边的复位信号输出部分,首先这个WDGA是窗口看门狗的激活位,也就是使能,WDGA写入1启用窗口看门狗,使能位作用于这个与门。

意思是,T6位一旦等于0,就表示计数器溢出,就产生复位信号。在程序正常状态下,必须保证T6位为1,这样才能避免复位。

门狗时间的最早界限,由上面这一块来实现,首先我们要计算一个最早界限的计数值,写到这里的W6~W0中,写入之后是固定不变的,在这里一旦我们执行写入CR操作时,这个与门开关就会打开,写入CR其实就是写入计数器,也就是喂狗,在喂狗时,这个比较器开始工作,一旦它比较我们当前的计数器,T6:0>窗口值W6:0,比较结果就等于1,这个一通过或门也可以去申请复位,这是喂狗最早时间窗口的实现流程,就是喂狗的时候,我把当前记数值和预设的窗口值进行比较。

窗口开门狗工作特性

在这里插入图片描述
递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位
这里的意思就是,减到0X40时产生中断,然后再减一个数到0X3F时产生复位,那这个中断其实就是在溢出的前一刻发生,所以这个中断也可以称作死前中断,马上就要溢出复位了,再提醒一下你要不要干点啥。

我们一般可以用来执行一些紧急操作,比如保存重要数据,关闭危险设备等等,或者还有一种写法,虽然超时喂狗了,但是我们可以在中断里执行一些代码,进行解决,或者这个任务不是很危险,超时了我就只想做一些提示,不想让他复位了,这样的话我们就可以在这个早期唤醒中断里直接执行喂狗,阻止系统复位,然后提示一下信息就完事儿了。

窗口开门狗超时时间

在这里插入图片描述

超时时间是喂狗的最晚时间,窗口时间是喂狗的最早时间。

这里要多乘一个4096,是因为这里PCLK1进来之后,其实是先执行了一个固定的4096分频,这里框图没画出来,实际上是有的,因为36M的频率还是太快了,先来个固定分频给降一降
在这里插入图片描述
WDGTB的值和分频系数的关系
分频系数=2^WDGTB,对应表,当WDGTB=0时,是1分频,就是2的0次方。分频系数只有这4种选择。 例:
在这里插入图片描述
比如当WDGTB=0时,分频系数是1
TPCLK1 = 1 / FPCLK1=1/36M 。当计数器给0时,就是最小超时;当计数器给最大值时,6位的计数最大值是:2^6-1=63,这样计算得到下面最大超时值。
当T=0时,T+1=1;当T=63时,T+1=64
最小超时值:TWWDG = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] + 1)=1/36M × 4096 ×1×(0+1)=0.113ms
最大超时值:TWWDG = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] + 1)=1/36M × 4096 ×1×(63+1)=7.28ms

独立看门狗和窗口看门狗对比

在这里插入图片描述

参考手册

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1850662.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【34W字CISSP备考笔记】域1:安全与风险管理

1.1 理解、坚持和弘扬职业道德 1.1.1.(ISC)职业道德规范 1、行为得体、诚实、公正、负责、守法。 2、为委托人提供尽职、合格的服务。 3、促进和保护职业。 4、保护社会、公益、必需的公信和自信,保护基础设施。 1.1.2.组织道德规范 1、RFC 1087 &#xff0…

本科生大厂算法岗实习经验复盘:从投递到面试的底层思维!

目录 投递渠道boss直聘官网邮箱内推 面试准备leetcode八股深挖项目自我介绍mock面试技巧答不出来怎么办coding反问 复盘技术交流群用通俗易懂方式讲解系列 节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面…

实战电商大数据项目搭建||电商大数据采集||电商API接口

我会提供给你大概1亿条真实的互联网用户上网数据,至于来源,我先不告诉你,绝对是你在网络上无法找到的宝贵数据源。 此外,还会给你提供一个基于当前数据特点而设计的大数据处理方案。 当然,为了防止用户的隐私部分被泄露…

【已解决】SpringBoot图片更新需重启服务器才能显示

问题描述 1、更新头像,并跳转回列表页,发现显示不出来 2、但是前端获取用户头像的信息是在加载页面就会被调用的,同时前端也不存在所谓的缓存问题,因为没有动这部分代码。 但查看响应是能获得正确的信息(前端打印图片…

GitHub Copilot 登录账号激活,已经在IntellJ IDEA使用

GitHub Copilot 想必大家都是熟悉的,一款AI代码辅助神器,相信对编程界的诸位并不陌生。 今日特此分享一项便捷的工具,助您轻松激活GitHub Copilot,尽享智能编码之便利! GitHub Copilot 是由 GitHub 和 OpenAI 共同开…

2024年安全员-A证证考试题库及安全员-A证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年安全员-A证证考试题库及安全员-A证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲随机出的…

合并有序链表

合并有序链表 图解代码如下 图解 虽然很复杂,但能够很好的理解怎么使用链表,以及对链表的指针类理解 代码如下 Node* merge_list_two_pointer(List& list1, List& list2) {Node* new_head1 list1.head;Node* new_head2 list2.head;Node* s…

FFmpeg编译4(1)

ffmpeg.cffmpeg.h 修改ffmpeg文件 修改刚刚拷贝的ffmpeg.c文件,找到int main(int argc, char **argv)函数,将其替换为int run(int argc, char **argv)在修改后的run(int argc, char **argv) 末尾(retrun 之前)加上如上如下代码&…

跟TED演讲学英文:How language shapes the way we think by Lera Boroditsky

How language shapes the way we think Link: https://www.ted.com/talks/lera_boroditsky_how_language_shapes_the_way_we_think? Speaker: Lera Boroditsky Date: November 2017 文章目录 How language shapes the way we thinkIntroductionVocabularySummaryTranscriptA…

【完全复现】基于改进粒子群算法的微电网多目标优化调度(含matlab代码)

目录 主要内容 部分代码 结果一览 下载链接 主要内容 程序完全复现文献模型《基于改进粒子群算法的微电网多目标优化调度》,以微电网系统运行成本和环境保护成本为目标函数,建立了并网方式下的微网多目标优化调度模型,通过改进…

数组和链表的区别是什么?

引言:本文旨在深入探讨数组和链表之间的区别,分析它们在不同情境下的优缺点,并探讨如何根据应用需求选择合适的数据结构。通过深入理解数组和链表的内部工作原理和应用场景,读者将能够更好地应用这些知识解决实际问题,…

【Gradio】从 BigQuery 数据创建实时仪表板

Google BigQuery 是一个基于云的服务,用于处理非常大的数据集。它是一个无服务器且高度可扩展的数据仓库解决方案,使用户能够使用类 SQL 查询分析数据。 在本教程中,我们将向您展示如何在 Python 中查询 BigQuery 数据集,并使用 g…

【论文阅读】-- 评估叠加时间序列和时间事件序列可视化中的对齐方法

中文标题 摘要1 引言2 相关工作2.1 时间事件序列可视化2.2 理解时间事件序列的任务 3个假设4 对比评价4.1 刺激和任务4.2 程序4.3 参与者4.4 测量与分析 5 结果与讨论5.1 前兆和后果事件5.2 中间事件 6 反思和设计意义7 结论致谢参考文献 期刊: IEEE VIS (发表日期:…

2024年【T电梯修理】免费试题及T电梯修理考试总结

题库来源:安全生产模拟考试一点通公众号小程序 T电梯修理免费试题参考答案及T电梯修理考试试题解析是安全生产模拟考试一点通题库老师及T电梯修理操作证已考过的学员汇总,相对有效帮助T电梯修理考试总结学员顺利通过考试。 1、【多选题】TSGT7005-2012《…

企业该如何防查盗版?如何防软件后台泄密数据?

随着信息化的发展,企业日常办公越来越依赖互联网。终端以及普通PC终端在访问互联网过程中,会遇到各种各样不容忽视的风险,例如员工主动故意的数据泄漏,后台应用程序偷偷向外部发信息,木马间谍软件的外联,以…

Android图片圆角转换 RoundedImageView开源项目 小记(1)

android:background“#7f000000” android:paddingLeft“8dp” android:paddingRight“8dp” android:textAppearance“?android:attr/textAppearanceMediumInverse” /> <TextView android:id“id/textView1” android:layout_width“wrap_content” android:la…

c++ 内存分析模型、引用

一、内存模型分区 内存四区的意义&#xff1a; 不同区域存放的数据&#xff0c;赋予不同的生命周期&#xff0c;给我们更大的灵活编程 &#xff08;一&#xff09;程序运行前 在程序编译后&#xff0c;生成了exe可执行程序&#xff0c;未执行程序前分为两个区域 代码区&…

Linux常用命令(14)—查看文件内容(有相关截图)

写在前面&#xff1a; 最近在学习Linux命令&#xff0c;记录一下学习Linux常用命令的过程&#xff0c;方便以后复习。仅供参考&#xff0c;若有不当的地方&#xff0c;恳请指正。如果对你有帮助&#xff0c;欢迎点赞&#xff0c;关注&#xff0c;收藏&#xff0c;评论&#xf…

基于Java技术的摄影跟拍预定管理系统

你好&#xff0c;我是热衷于计算机科学与技术研究的码农小野。如果你对摄影跟拍预定管理系统感兴趣或有相关开发需求&#xff0c;欢迎私信交流。 开发语言 Java 数据库 MySQL 技术 B/S模式&#xff0c;SpringBoot 工具 Eclipse&#xff0c;Navicat&#xff0c;Tomcat …

Nuxt3 [Vue warn]: Hydration node mismatch:【解决方案】

[Vue warn]: Hydration node mismatch: 水合节点不匹配 Server rendered element contains more child nodes than client vdom. 服务器呈现的元素包含的子节点多于客户端vdom。 这个问题解决起来也很好解决&#xff0c;看这个问题是怎么出来的&#xff0c;看代码&#xff1a;…