嵌入式——窗口看门狗(WWDG)补充

目录

一、独立看门狗与窗口看门狗

1.功能描述

2.两者区别

二、WWDG功能描述

1.窗口看门狗时钟

2.计数器时钟

3. 计数器

4.窗口值

三、WWDG超时时间


一、独立看门狗与窗口看门狗

1.功能描述

        STM32有两个看门狗:一个是独立看门狗(IWDG),一个是窗口看门狗(WWDG)

        独立看门狗的工作原理是一个递减计数器不断地递减计数,当减到0之前如果没有喂狗的话,产生复位。窗口看门狗跟独立看门狗一样,也是一个递减计数器不断地递减计数,当减到一个固定值0x40 时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这点与独立看门狗类似。

        不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,由用户自主设置。窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗,这就是窗口看门狗中窗口两个字的含义。

2.两者区别

二、WWDG功能描述

1.窗口看门狗时钟

        时钟来自 PCLK1, PCLK1最大是36MHz,由RCC时钟控制器开启。

2.计数器时钟

        由CK计时器时钟经过预分频器分频得到,分频系数由配置寄存器CFR的位8:7 WDGTB[1:0]配置,可以是 [ 0, 1, 2, 3 ],其中CK计时器时钟=PCLK1 / 4096 ( 除以4096是手册规定的 )。

所以计数器的时钟 CNT_CK = PCLK1 / 4096 / (2^WDGTB)

所以计数器减一个数的时间  T = 1 / CNT_CK = Tpclk1 x 4096 x(2^WDGTB)

3. 计数器

        为递减计数器,共7位,其值存在控制寄存器CR的位6:0,即T[6:0],当7位全部为1时是0x7F,这是最大值。当递减到T6 位变成0时,即从0x40 变为0x3F时候,会产生看门狗复位,这个值0x40是看门狗能够递减到的最小值。所以计数器的值只能是 0x40~0x7F,实际上真正用来计数的是T[5:0]

        当递减计数器递减到0x40的时候,还不会马上产生复位,如果使能了提前唤醒中断( CFR位 9 EWI 置 1 ),则产生提前唤醒中断。如果真进入了这个中断的话,就说明程序肯定是出问题了,那么在中断服务程序里面我们就需要做一些重要工作。这个中断也叫“死前中断”

4.窗口值

        下窗口的值是固定的0x40,上窗口的值可以改变,具体的由配置寄存器 CFR的位6:0 W[6:0]设置。其值必须大于0x40,如果小于或者等于0x40就失去了窗口的价值,而且也不能大于计数器的值,所以必须得小于 0x7F。 

        窗口值具体要设置成多大,要根据我们需要监控的程序的运行时间来决定。如果在窗口时间内没有喂狗的话,那程序肯定是出问题了。一般计数器的值TR设置成最大0x7F窗口值为WR,计数器减一个数的时间为T,那么时间(TR-WR) x T稍微大于程序运行时间即可,这样就能做到刚执行完程序段之后喂狗,也就可以算出WR的值。

三、WWDG超时时间

        看门狗超时时间:Twwdg=Tpclk1 x 4096 × 2^wdgtb ×(T[5:0] + 1) ms。当PCLK1 = 36MHz时,WDGTB 取不同的值时有最小和最大的超时时间以WDGTB = 0为例:

        递减计数器有 7位 T[6:0], 当位 6 变为 0 的时候就会产生复位,实际上有效的计数位是T[5:0],而且 T6 必须先设置为 1

        如果 T[5:0]=0 时,递减计数器再减一次,就产生复位了,那这 减1的时间 = 计数器的周期 = 1 / CNT_CK=Tpclk1 × 4096 x(2^WDGTB) = 1/36x4096×2^0=113.7us,这个就是最短的超时时间

        如果 T[5:0]全部为1,即 63,当由 0x40 变成 0x3F 时,所需的时间就是 最大的超时时间 = 113.7×2^5=113.7×64=7.2768ms

        同理,当WDGTB等于1、2、3时,代入公式即可算出最长最短超时值。


可结合这边文章:

嵌入式——窗口看门狗(WWDG)

http://t.csdnimg.cn/60FCjicon-default.png?t=N7T8http://t.csdnimg.cn/60FCj

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

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

相关文章

数据结构三:线性表之单链表(带头结点单向)的设计与实现

线性表的链式存储结构正是所谓的单链表,何谓单链表?通过地址将每一个数据元素串起来,进行使用,这可以弥补顺序表在进行任意位置的插入和删除需要进行大量的数据元素移动的缺点,只需要修改指针的指向即可;单…

网络编程套接字(2)

UDP数据报套接字编程 API介绍 DatagramSocket DatagramSocket是UDP的Socket,用于发送和接收数据报. 操作系统中有一类文件,就叫做socket文件(普通文件/目录文件:在硬盘上的) socket文件:抽象的表示了网卡这样的硬件设备 DatagramSocket就是对socket文件进行读写,也就是借助网…

对于gzip的了解

gzip基本操作原理:通过消除文件中的冗余信息,使用哈夫曼编码等算法,将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用,减小了传输数据的大小,从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…

WordPress如何使用SQL实现一键关闭/开启评论功能(已有评论)

WordPress本人就自带评论功能,不过由于种种原因,有些站长不想开启评论功能,那么应该怎么实现一键关闭评论功能或开启评论功能呢?或者针对已有评论功能的文章进行一键关闭或开启评论功能应该怎么操作? 如果你使用的Wor…

【.NET Core】深入理解C#中的特殊字符

【.NET Core】深入理解C#中的特殊字符 文章目录 【.NET Core】深入理解C#中的特殊字符一、概述二、$-- 字符串内插2.1 内插字符串的结构2.2 内插原始字符串字面量2.3 特殊字符2.4 内插字符串编译 三、-- 逐字字符串标识符四、“”“--原始字符串文本 一、概述 特殊字符是预定义…

OpenGL/C++_学习笔记(四)空间概念与摄像头

汇总页 上一篇: OpenGL/C_学习笔记(三) 绘制第一个图形 OpenGL/C_学习笔记(四)空间概念与摄像头 空间概念与摄像头前置科技树: 线性代数空间概念流程简述各空间相关概念详述 空间概念与摄像头 前置科技树: 线性代数 矩阵/向量定…

RPC教程 5.支持HTTP协议

1.HTTP的CONNECT方法 Web 开发中,我们经常使用 HTTP 协议中的 HEAD、GET、POST 等方式发送请求,等待响应。但 RPC 的消息格式与标准的 HTTP 协议并不兼容,在这种情况下,就需要一个协议的转换过程。HTTP 协议的 CONNECT 方法提供了…

MybatisPlus二级映射和关联对象ResultMap

文章目录 一、业务背景1. 数据库表结构2. 需求 二、使用映射直接得到指定结构三、其他文件1. Mapper2. Service3. Controller 四、概念理解一级映射二级映射聚合 五、标签使用1. \<collection\> 标签2. \<association\> 标签 在我们的教程中&#xff0c;我们设计了…

flask框架制作前端网页作为GUI

一、语法和原理 &#xff08;一&#xff09;、文件目录结构 需要注意的问题&#xff1a;启动文件命名必须是app.py。 一个典型的Flask应用通常包含以下几个基本文件和文件夹&#xff1a; app.py&#xff1a;应用的入口文件&#xff0c;包含了应用的初始化和配置。 requirem…

【DeepLearning-8】MobileViT模块配置

完整代码&#xff1a; import torch import torch.nn as nn from einops import rearrange def conv_1x1_bn(inp, oup):return nn.Sequential(nn.Conv2d(inp, oup, 1, 1, 0, biasFalse),nn.BatchNorm2d(oup),nn.SiLU()) def conv_nxn_bn(inp, oup, kernal_size3, stride1):re…

Java基础知识-异常

资料来自黑马程序员 异常 异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a; 异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;…

深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析

UIAbility组件概述 UIAbility组件是HarmonyOS中一种包含UI界面的应用组件&#xff0c;主要用于与用户进行交互。每个UIAbility组件实例对应最近任务列表中的一个任务&#xff0c;可以包含多个页面来实现不同功能模块。 声明配置 为了使用UIAbility&#xff0c;首先需要在mod…

跟着cherno手搓游戏引擎【10】使用glm窗口特性

修改ImGui层架构&#xff1a; 创建&#xff1a; ImGuiBuild.cpp&#xff1a;引入ImGui #include"ytpch.h" #define IMGUI_IMPL_OPENGL_LOADER_GLAD//opengl的头文件需要的定义&#xff0c;说明使用的是gald #include "backends/imgui_impl_opengl3.cpp" …

03_Opencv简单实例演示效果和基本介绍

视频处理 视频分解图片 在后面我们要学习的机器学习中,我们需要大量的图片训练样本,这些图片训练样本如果我们全都使用相机拍照的方式去获取的话,工作量会非常巨大, 通常的做法是我们通过录制视频,然后提取视频中的每一帧即可! 接下来,我们就来学习如何从视频中获取信息 ubun…

c#之构值类型和引用类型

值类型:(整数/bool/struct/char/小数) 引用类型:(string/ 数组 / 自定义的类 / 内置的类) 值类型只需要一段单独的内存,用于存储实际的数据 引用类型需要两段内存(第一段存储实际的数据,他总是位于 堆中第二段是一个引用,指向数据在堆中的存放位置) 当使用引用类型赋值的时…

C++:类 的简单介绍(一)

目录 类的引用&#xff1a; 类的定义&#xff1a; 类的两种定义方式&#xff1a; 成员变量命名规则的建议&#xff1a; 类的访问限定符及封装&#xff1a; 访问限定符 【访问限定符说明】 封装 class与struct的区别&#xff1a; 类的作用域&#xff1a; 类的实例化…

嵌入式——直接存储器存取(DMA)补充

目录 一、认识 DMA 二、DMA结构 1. DMA请求 2. 通道DMA 补&#xff1a;通道配置过程。 3. 仲裁器 三、DMA数据配置 1. 从哪里来&#xff0c;到哪里去 &#xff08;1&#xff09;从外设到存储器 &#xff08;2&#xff09;从存储器到外设 &#xff08;3&#xff09;从…

React 组件生命周期-概述、生命周期钩子函数 - 挂载时、生命周期钩子函数 - 更新时、生命周期钩子函数 - 卸载时

React 组件生命周期-概述 学习目标&#xff1a; 能够说出组件的生命周期一共几个阶段 组件的生命周期是指组件从被创建到挂在到页面中运行&#xff0c;在到组件不用时卸载组件 注意&#xff1a;只有类组件才有生命周期&#xff0c;函数组件没有生命周期(类组件需要实例化&…

LeetCode344反转字符串(java实现)

今天我们来分享的题目是leetcode344反转字符串。题目描述如下&#xff1a; 我们观察题目发现&#xff0c;题目要求使用O(1)的空间解决这一问题。那么我们就不能进行使用开辟新的数组进行反转了。 解题思路&#xff1a;那么该题的我得思路是使用双指针的方法进行题解&#xff0…

2024獬豸杯

2024.1.28上午9-12时&#xff0c;返乡大学生边帮姐带娃边做&#xff0c;有几题没交上 解压密码&#xff1a;都考100分 手机备份包 手机基本信息 1、IOS手机备份包是什么时候开始备份的。&#xff08;标准格式&#xff1a;2024-01-20.12:12:12) 2024-01-15.14.19.44 2、请分…