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

2025.4.29_STM32_看门狗WDG

1.WDG简介

        大概意思就是给看门狗设置一个时间范围,在这个范围内必须喂狗(重置定时器),这个操作必须一直执行,比如看门狗的的时间范围是1-2秒,我们就必须间隔1-2秒就喂一次狗,否则它自减到0时就会重置电路,相当于按下reset键。 

2.IWDG(独立看门狗)

2.1 IWDG结构框图

        IWDG_PR是看门狗预分频器(Prescaler) ,IWDG_RLR是reload register,相当于定时器的auto reload register。

        看门狗由LSI(内部低速时钟)提供时钟,然后接入预分频器,预分频器只有八位,最大只能进行256分频,然后进入十二位的递减计数器,当自减到0时IWDG复位。在正常运行时,我们在键寄存器中写入特定的值控制电路喂狗,喂狗时重装在计数器会写入到递减计数器中,防止递减计数器自减到0产生复位。

        上部分的寄存器位于1.8V供电区,下面的看门狗位于VDD供电区。

2.2.键寄存器

        也就是说,我们想配置看门狗,对他的各个寄存器进行修改的话就必须先配置键寄存器,解除写保护之后才能写入值,写入0x5555之外的其他值都会启用写保护,这样就避免了程序震荡出错导致看门口寄存器被写入错误的值。 

2.3 IWDG超时时间

        T(LSI)是内部低速时钟的时间:也就是 1 / 40khz = 0.025ms

        PR预分频系数只能从表中选择,不像定时器配置PSC那样可以自己设置一个值

        RL+1跟定时器的ARR+1是相同的,都是自动重装值,但是RL只有十二位,所以最大值是4095。所以表里的最长时间是RL=0时求出的;最长时间则是RL=4095时的时间。

3.WWDG(窗口看门狗)

3.1 窗口看门狗框图

         WWDG时钟源是PCLK1(默认36MHz),经过预分频到达递减计数器(也是控制寄存器),窗口看门狗没有重装计数器,我们喂狗的时候直接给递减计数器赋值。上面的看门狗配置寄存器是用来指定最早喂狗时间的,如果递减计数器>配置寄存器(比较器的作用),说明程序喂狗的时间比最早时间还早(比如现在递减计数器是10000,我们设置的最早喂狗时间是5000,说明现在剩余时间还很多,提前喂狗说明程序出错了,也申请复位)。

        递减计数器和控制寄存器公用一个寄存器是怎么实现的?这个寄存器一共有7位,我们把低6位作为递减计数器,最高位T6作为溢出寄存器,当T6=1时说明没溢出,T0-T5还没有自减到0,当T6=0时,说明溢出了,T5-T0已经自减到0下一个数,1000000 ---> 0111111,此时说明程序没有喂狗,产生复位。

3.2 WWDG工作特性

递减计数器T[6:0]的值小于0x40时,WWDG产生复位

递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位

递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位

定期写入WWDG CR寄存器(喂狗)以避免WWDG复位

        第一条的意思是将整个递减计数器看作一个整体,0x40 = 1 000000,代表递减计数器已经自减到0了,如果此时再减一,控制位就会变为0从而产生复位。

        第二条的意思是 比较器比较 现在剩余时间比设定的喂狗时间还大,也就是提前喂狗产生复位。

        第三条的意思是可以在递减器=0x40时产生中断,我们称为死前中断。在这个中断中可以保存数据,写入递减计数器避免复位等。

 

 3.3 WWDG超时时间

T(PCLK1) = 1 / 36M。

为什么要*4096?因为PCLK1进入的时候默认进行了4096分频(因为36MHz太快了),独立看门狗只有40kHz。

WDGTB预分频系数 = 2^WDGTB,WDGTB和独立看门狗的PR一样,都是预分频系数。

T[5:0]+1是指递减计数器RLR不包括控制位(最高位)的值。

窗口时间就是递减计数器减去配置寄存器的时间,如果递减计数器是10000,配置寄存器是7000,那么它们相减就是不能喂狗的时间,也就是说只有递减计数器减到配置寄存器(7000)以下才能喂狗,它们相减就是3000,就是不能喂狗的时间。

 

4.WWDG和IWDG的区别

相关文章:

  • 一文读懂 JavaScript 中的深浅拷贝
  • C#学习——类型、变量
  • 学习在暑假避免躺平和内卷(马井堂)
  • 16、路由守卫:设置魔法结界——React 19 React Router
  • 系统安装 ios放同一个u盘 ventory使用+windows安装,双系统互相访问中间盘
  • PPT/WORD如何实现Shift键加鼠标滚轮实现左右滑动
  • 嵌入式复习第一章
  • 拆固态硬盘短接开卡+ as ssd benchmark查看硬盘读写速度
  • 0.5 像素边框实现
  • Arthas在Java程序监控和分析中的应用
  • 智能驾驶与AI智能体的共性、碰撞与未来融合路径
  • 问答:C++如何通过自定义实现移动构造函数和移动赋值运算符来实现rust的唯一所有权?
  • 驱动开发硬核特训 · Day 25 (附加篇):从设备树到驱动——深入理解Linux时钟子系统的实战链路
  • 高德地图线上截图瓦片地图加载不完全
  • 4月29日星期二今日早报简报微语报早读
  • dify升级最新版本(保留已创建内容)
  • 黑马Redis(四)
  • 基于非递归求解的汉诺塔超级计算机堆栈与数据区设计方案
  • 13.继承、重载、重写、多态、抽象类、接口、final、Static的学习
  • Kubernetes Label 和 Selector新手入门学习
  • 马上评丨准入壁垒越少,市场活力越足
  • 五一假期上海地铁部分线路将延时运营,这些调整请查收
  • 安徽省公安厅原副厅长刘海石主动投案,正接受审查调查
  • 张元济和百日维新
  • 中国体育报关注徐梦桃、王曼昱、盛李豪等获评全国先进工作者:为建设体育强国再立新功
  • 众信旅游:去年盈利1.06亿元,同比增长228.18%