[DAY 25] _STM32 看门狗简介_独立看门狗(1)

剩下这几天我都会看一些我比较不懂的东西,把我自己吸收进来的东西整理上来,我的重点都在20天前面,有兴趣的话可以看前面20天的。
STM32有两个看门狗,IWDG(独立看门狗)、WWDG(视窗看门狗)
这两个看门狗的说明在Reference manual有独立2章出来
1.IWDG(Independent watchdog)
https://ithelp.ithome.com.tw/upload/images/20211008/20141979AziQOtI0oL.png
上图是Reference manual里的IWDG章的截图,IWDG的简介主要是再说,不管是独立或着是视窗看门狗都可检测软件的错误导致故障,当计数值达到特定值产生系统从置。独立看门狗由低速时钟(LSI)驱动。
再来主要的特性:

  • 递减的计数器
  • 时钟由独立RC震荡提供,可在待机和停止模式下运行
  • 当技术到0x000时产生重置

IWDG功能框图简介

https://ithelp.ithome.com.tw/upload/images/20211008/20141979pRtjKnMZnV.png

1.独立看门狗时钟

独立看门狗的时钟由独立的RC振荡器LSI提供,即使主时钟发生故障它仍然有效。LSI 的频率一般在30~60KHZ 之间,根据温度和工作场合会有一定的漂移,我们一般取40KHZ,所以独立看门狗的定时时间并一定非常精确,只适用於对时间精度要求比较低的场合。

2.计数器时钟

递减计数器的时钟由LSI 经过一个8 位的预分频器得到,我们可以操作预分频器寄存器IWDG_PR 来设置分频因数,分频因数可以是:[4,8,16,32,64,128,256,256],计数器时钟CK_CNT= 40/4*2^PRV,一个计数器时钟计数器就减1。

3.12位计数器

独立看门狗的计数器是一个12 位的递减计数器,最大值为0XFFF,当计数器减到0时会产生一个重定信号:IWDG_RESET,让程序重新开机运行,如果在计数器减到0 之前刷新了计数器的值的话,就不会产生重定信号,重新刷新计数器值的这个动作我们俗称喂狗。

4.重新加载暂存器

重新加载暂存器是一个12 位的暂存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。超时时间Tout = (4*2^prv) / 40 * rlv (s) ,prv 是预分频器寄存器的值,rlv 是重装载寄存器的值。

5.Key register

IWDG_KR 可以说是独立看门狗的一个控制寄存器,主要有三种控制方式,往这个寄存器写入下面三个不同的值有不同的效果。
0xAAAA:把RLR 的值重新加载到CNT
0x5555:PR和RLR这两个暂存器可写
0xCCCC:启动独立看门狗
通过写往Key 暂存器写0XCCC 来启动看门狗是属於软件启动的方式,一旦独立看门狗启动,它就关不掉,只有复位才能关掉。

6.状态暂存器

状态寄存器SR 只有位元0:PVU 和位1:RVU 有效,这两位元只能由硬体操作,软件操作不了。RVU:看门狗计数器重装载值更新,硬体置1 表示重装载值的更新正在进行中,更新完毕之後由硬体清0。PVU:看门狗预分频值更新,硬体置‘1‘指示预分频值的更新正在进行中,当更新完成後,由硬体清0。所以只有当RVU/PVU等於0的时候才可以重新加载暂存器/预分频暂存器。

今天先介绍到这边,明天来看看如何使用这独立看门狗。


<<:  Day24 动态组件 Dynamic Components

>>:  Day23 用python写UI-聊聊Menu

怎麽复制TABLE_SCHEMA里的table

SQL Server 1.一个一个TABLE去点,汇出Scripts 2.SQL Server 汇出...

Google Script+LINE 打造聊天机器人 #1-工具介绍

专案简介 起源:方便自己与亲友查询汇率和日期,以及定时提醒汇率以利购买外汇。 功能:查询(1)即时汇...

Angular Stock上市个股日成交(二)(Day28)

今天我们先让资料可以显示在Angular提供的table上面~~ Angular Material:...

Day 7 有关排程器的感叹

有关排程器的问题,我们可以做个简单的探讨,排程里面通常会有任务(task,有的翻成工作元)及处理(p...

[Day 8] 常用的卡片 Card

Day 7 卡片在商品介绍 或登入介面时常用到 通常格式为一张图片 与他的title 配上说明 也有...