[DAY 27] _看门狗简介_视窗看门狗(1)

STM看门狗有两种,昨天讲完其中一种,今天来看看WWDG(window watchdog)
这也是在各个MCU里的参考手册里是单独1个章节。

STM32有两个看门狗,一个是独立看门狗,一个是视窗看门狗。我们知道独立看门狗的工作原理就是一个递减计数器不断的往下递减计数,当减到0之前如果没有喂狗的话,产生重置。
视窗看门狗跟独立看门狗很类似,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0X40 时还不喂狗的话,产生重定,这个值叫视窗的下限,是固定的值不能改变这个是跟独立看门狗类似的地方,不同的地方是视窗看门狗的计数器的值在减到某一个数之前喂狗的话也会产生重定,这个值叫视窗的上限,上限值由用户独立设置。视窗看门狗计数器的值必须在上限和下限之间才可以喂狗,这就是视窗看门狗与独立看门狗的差别

看下列简单的检视会更好懂
独立看门狗:重新装载暂存器(RTL)>------------------------->0
到0之前都没喂狗的话会重置系统

视窗看门狗:使用者设定的计数值(TL)>------>0x50(WR)>------>0x40(下限值)
TL暂存器为计数值WR为上限值,这两者都由使用者自订0x40为固定值,到0x50~0x40之前都没喂狗的话会重置系统。

来看看WWDG视窗看门狗的内部框架图吧,下图是从参考手册里的截图
https://ithelp.ithome.com.tw/upload/images/20211010/20141979lhB1dyzKYj.png

1.视窗看门狗时钟

视窗看门狗时钟来自 PCLK1,由 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 * 4096 * (2^WDGTB)

3.计数器时钟

视窗看门狗是一个7 bit递减计数器,其值存在控制寄存器 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:0W[6:0]设置。其值必须大於 0X40,如果小於或者等於0X40就是失去了视窗的价值,而且也不能大於计数器的值,所以必须得小於0X7F。
那视窗值具体要设置成多大?这个得根据我们需要监控的程序的执行时间来决定。如果我们要监控的程序运行的时间为 Ta,当执行完这段程序之後就要进行喂狗,如果在视窗时间内没有喂狗的话,那程序肯定是出问题了。
一般计数器的值TR设置成最大 0X7F,视窗值为 WR,计数器减一个数的时间为 T,那麽时间:(TR-WR)*T 应该稍微大於Ta即可,这样就能做到刚执行完程序之後喂狗,起到监控的作用,这样也就可以算出 WR 的值是多少。

今天先看到这,明天再来看看如何计算看们狗的超时时间和怎麽实验这WWDG。


<<:  每日挑战,从Javascript面试题目了解一些你可能忽略的概念 - Day25

>>:  Day 25: Behavioral patterns - State

[Day14] 传值或传址(上)

JavsScript 的资料型别分成两大类,第一类是基本型别,第二类是物件型别,型别的介绍可以参考前...

[Day20] Interconnect

今天来与各位介绍云端的 互连网路(Interconnect) 与 对等互联(Peering) 相关服...

Day 22-制作购物车之前端架构2&Navbar设计

设计的部分就不多做分析,主要呈现实作成果。 以下内容有参考教学影片,底下有附网址。 (内容包括我的不...

Sudoku Solution Validator

今日kata 原始题目如下:(4kyu) Write a function validSolutio...

[Day 20]从零开始学习 JS 的连续-30 Days---todolist 待办事项

待办事项结构 to do list 需要输入框与输入按钮。 送出输入按钮後产生待办事项与完成按钮。 ...