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

WWDG—窗口看门狗

WWDG—窗口看门狗

窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0X40时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗,这就是窗口看门狗中窗口两个字的含义
(只是在递减的过程中分了一块窗口区,只有在窗口的范围里才能进行喂狗操作)
在这里插入图片描述

大纲

  1. 功能框图
  2. 时钟和寄存器

具体案例

功能框图

RLR 是重装载寄存器,用来设置独立看门狗的计数器的值。TR 是窗口看门狗的计数器的值,由用户独立设置,WR 是窗口看门狗的上窗口值,由用户独立设置
在这里插入图片描述

时钟和寄存器

计数器时钟

计数器时钟由 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 * 4096 * (2^WDGTB)

这里主要强调说明一下时间的计算方式
对于最开始的时钟,我们需要分频,然后按照手册除以4096,这样我们就得到了递减一次的时间,然后再乘以我们设定的次数,就得到了时间

对时钟进行分频是在CFR的WDGTB位进行配置的
在这里插入图片描述

计数器

窗口看门狗的计数器是一个递减计数器,共有 7 位,其值存在控制寄存器 CR 的位 6:0,即 T[6:0],
当 7 个位全部为 1 时是 0X7F,这个是最大值,当递减到 T6 位变成 0 时,即从 0X40 变为 0X3F
时候,会产生看门狗复位。这个值 0X40 是看门狗能够递减到的最小值,所以计数器的值只能是:
0X40~0X7F 之间,实际上真正用来计数的是 T[5:0]。当递减计数器递减到 0X40 的时候,还不会
马上产生复位,如果使能了提前唤醒中断:CFR 位 9EWI 置 1,则产生提前唤醒中断,如果真进
入了这个中断的话,就说明程序肯定是出问题了,那么在中断服务程序里面我们就需要做最重要
的工作,比如保存重要数据,或者报警等,这个中断我们也叫它死前中断。
在这里插入图片描述

窗口值

我们知道窗口看门狗必须在计数器的值在一个范围内才可以喂狗,其中下窗口的值是固定的
0X40,上窗口的值可以改变,具体的由配置寄存器 CFR 的位 6:0 W[6:0] 设置。其值必须大于
0X40,如果小于或者等于 0X40 就是失去了窗口的价值
在这里插入图片描述

状态寄存器

在这里插入图片描述

时间的计算

在这里插入图片描述
这个图来自数据手册,从图我们知道看门狗超时时间:Twwdg = Tpclk1 x 4096 x 2^wdgtb x (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/CNT_CK = Tpclk1 * 4096 * (2^WDGTB) = 1/36 * 4096
      2^0 =113.7us,这个就是最短的超时时间。如果 T[5:0] 全部装满为 1,即 63,当他减到 0X40 变
      成 0X3F 时,所需的时间就是最大的超时时间 =113.7
      2^5=113.7*64=7.2768ms。同理,当 WDGTB
      等于 1/2/3 时,代入公式即可

从0X111111到0x100000(0x4f)这里其实只用到了5位,而当从0x100000到0x011111这还需要一次,所以最后就是五位加一次


http://www.kler.cn/a/292124.html

相关文章:

  • xcode-select: error: tool ‘xcodebuild‘ requires Xcode, but active developer
  • CSS Modules中的 :global
  • 图形 2.6 伽马校正
  • 初识ElasticSearch
  • 周末总结(2024/11/16)
  • 计算2的N次方
  • Claude的小白入门指南
  • 无人机之摄像头篇
  • Aspose.PDF功能演示:在 C# 中将 JPG 图像合并为 PDF
  • 网络压缩之网络剪枝(network pruning)
  • C#中ArrayList
  • 安卓aosp14上自由窗口划线边框Freeform Caption实战开发-千里马framework实战
  • HttpUtils工具类(三)OKHttpClient使用详细教程
  • vue项目中利用后端接口返回的视频地址获取第一帧作为数据封面展示
  • 【赵渝强老师】大数据主从架构的单点故障
  • HTTPS SEO优势
  • EmguCV学习笔记 VB.Net 第10章 人脸识别
  • elementplus组件库el-tree组件设置默认选中项setCheckKeys不生效
  • Mysql5.6.51修改密码
  • Ubuntu: 配置OpenCV环境
  • ITK-高斯滤波
  • 数据库中的逐行数据处理
  • Python知识点:如何使用Python实现自动驾驶模拟
  • TCP/IP网络编程:Linux实现的web服务器
  • NowCoder HJ50 四则运算
  • EasyExcel实现复杂Excel的导入