【自由看门狗配置及计算】

一、看门狗使用场景

看门狗是一个硬件计时电路,用来监测由软件故障导致的系统故障。

片上有两个看门狗定时器外设,自由看门狗定时器(FWDGT也叫独立看门狗)和窗口看门狗定时器(WWDGT)。

当嵌入式程序在运行过程中发生死机或程序跑飞的情况下,一般都是要手动进行开关机或者复位,让程序能够重新运行。但是当一个嵌入式系统被安装到一些特殊位置时,若发生死机又不能及时进行手动复位,这时就需要看门狗了。

二、自由看门狗定时器(FWDGT)时钟源

以STM32为例,其自由看门狗定时器(FWDGT)使用的是LSI(40KHz),
以GD32为例,其自由看门狗定时器(FWDGT)使用独立的时钟源(IRC40K)。

因此就算是主时钟失效了,它仍然能保持工作状态,这非常适合于需要独立环境且对计时精度要求不高的场合。

三、FWDGT 的主要特性

当内部向下计数器的计数值达到0,自由看门狗会产生一个复位。使能自由看门狗的寄存器写保护功能可以避免寄存器的值被意外的配置篡改。

四、FWDGT 寄存器配置

以GD32为例。
自由看门狗定时器带有一个 8 级预分频器和一个 12 位的向下递减计数器。
自由看门狗定时器框图:
在这里插入图片描述

1、 FWDGT配置内容

  • 时钟源
  • 计算分频系数和重装载值(根据想要的触发周期)

2、控制寄存器 (FWDGT_CTL)

主要是通过配置不同的值来设置FWDGT的功能。
在这里插入图片描述
向控制寄存器(FWDGT_CTL)中:

  • 写入0xCCCC可开启自由看门狗定时器,计数器开始向下计数。当计数器记到0x000,产生一次复位。
  • 写入0xAAAA可重装载计数器,重装载值来源于FWDGT_RLD寄存器。
    软件可以在计数器计数值达到0x000之前可以通过重装载计数器来阻止看门狗定时器复位。

3、预分频寄存器 (FWDGT_PSC)

在这里插入图片描述
在这里插入图片描述

该寄存器用于存储FWDGT的分频系数。由上图可知,只有低3位是可以读写的,若分频系数设为64时,写入寄存器的值为0x04.

4、重装载寄存器 (FWDGT_RLD)

在这里插入图片描述
该寄存器用于存储递减计数器的重装载值,就是预先设置一个值,计数启动后,递减计数器从该值开始递减,当递减至0的时候就将该值赋给递减计数器,继续开始下一轮递减,周而复始,直至计时结束;
在这里插入图片描述
用户手册给出了各种分频系数下最大支持的计数周期,比如分频系数选择64,则在最大计数值4096的限制下,其支持得到的最大计数周期为6553.6ms.。若你想要的触发周期是10s,就不能选择64分频,可选择128、256作为分频系数。

5、状态寄存器 (FWDGT_STAT)

判断FWDGT的状态在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
由上可知:FWDGT和普通定时器的原理是一样的,也是通过设置一个频率,然后不停地进行计数。不同的是FWDGT当计数值超过设定值时,若不进行喂狗,就会复位系统,需要注意的是,看门狗一旦启动就不能停止,只能通过复位或掉电停止。

五、FWDGT 计数频率计算

计算公式:
Tout = ( 1 / (时钟源频率/ 分频系数)) * 重载值
注意:重载值最大值为4096.
假设自由看门狗的溢出时间Tout为1s,当着1s之内不进行喂狗的话,独立看门狗就会复位系统。

示例:
自由看门狗时钟源:40KHZ
期望触发周期:1s
由上可知,满足周期1s的,可以选择16、32 64 128 256

以32分频:
独立看门狗计数时钟频率f=40KHz/32=1250Hz;
计数一次耗时t=1/f=1/1250s;
计时1s时,需要计数次数n=1250;
Tout = ( 1 / (40KHz/ 32)) * 1250
即看门狗配置为:
预分频为32,重装载值为1250;

/*配置独立时钟源*/
//enable IRC40K
rcu_osci_on(RCU_IRC40K);
//wait till IRC40K is ready
rcu_osci_stab_wait(RCU_IRC40K);/*设置看门狗预分频系数和重装载值*/
fwdgt_config(1250, FWDGT_PSC_DIV32);
fwdgt_enable();/*在程序中定期喂狗,否则将导致程序重启*/
fwdgt_counter_reload();//喂狗

注意:“定期”的意思是在看门狗触发周期内.

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

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

相关文章

Vue项目管理器创建项目

黑马程序员JavaWeb开发教程 文章目录 1、创建新项目2、详情3、预设4、功能5、配置6、是否保存为预设模板7、正在创建项目8、创建完成 1、创建新项目 2、详情 3、预设 选择手动,点击下一步 4、功能 只需要额外选择一项–Router 即可,其余的保持默认&a…

掼蛋小技巧(上篇)

一、一火保两单 如果手中的牌可以组成同花顺并且不会造成两张以上的单牌,我们就可以组成同花顺;如果组了同花顺后有两张以上的单张则果断放弃组同花顺。 二、十张出一对,九张出单张 掼蛋残局的时候,如果判断出下家手上只有一个四头…

IDEA: Unable to resolve table ‘xxx‘

描述: 在 IDEA 连接到数据库后,SQL 语句提示 Unable to resolve table 表名,且其它字段也飘红报错。 解决: 右键点击数据库,选择 Tools -> Manage Shown Schemas... 勾选你所使用的数据库即可: 1、2、3…

[ESP32]:百度语音识别

[ESP32]:百度语音识别 1.开发环境: esp-idf 5.1esp32 s3microphone:MSM261S4030H0 百度文档:短语音识别标准版API 这里请求我们选择RAW方式 Content-Type: audio/pcm;rate16000请求格式如下: POST http://vop.baidu.com/ser…

linux学习:进程(新建+运行某文件+退出处理函数+等待)

目录 api 创建新进程 注意 运行某文件 例子 注意 例子,等待进程 进程是由进程控制块、程序段、数据段三部分组成 进程有都有一个父进程,除了init,父进程可以创建子进程 每个进程都有一个PID,可以用ps来查看,等…

FebHost:瑞士.CH域名和.RE域名如何选择

.ch和.re域名的区别主要在于它们代表的地区不同。.ch是瑞士的顶级域名,代表着瑞士的精细、创新和可靠;而.re则是留尼汪岛的顶级域名,展示着留尼汪岛的多元化和温馨。 从历史角度看,.ch域名的历史更悠久,反映了瑞士长久…

双轴测径仪兼顾铜排、铜棒、铜丝等多产品品质检测!

关键词:双轴测径仪,铜排测径仪,铜棒测径仪,铜丝测径仪, 测宽测厚仪, 铜排测宽测厚仪 在现代工业生产中,铜排作为一种重要的导电材料,广泛应用于电力、电子、通信等领域。为了确保铜排的质量和性能符合要求,铜排测宽测厚仪成为了生…

如何在CentOS安装Firefox并结合内网穿透工具实现公网访问本地火狐浏览器

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

二叉树——存储结构

二叉树的存储结构 二叉树一般可以使用两种结构存储,一种是顺序结构,另一种是链式结构。 一、顺序存储 二叉树的顺序存储是指用一组连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为i的结点元素存储…

双电机增程系统工作原理

问界M7的双电机增程系统是一项技术革新,它的核心在于高度集成的动力系统和先进的电机控制技术。 这种系统不仅提升了车辆的性能,还在保证高效能源利用的同时,为驾驶者带来了更舒适、更平稳的驾驶体验。 首先,让我们了解一下双电机…

Linux --- 高级IO

目录 1. 什么是IO 2. 阻塞的本质 3. 五种IO模型 3.1. 通过故事认识五种IO模型 3.2. 上述故事的总结 3.3. 具体的五种IO模型 3.3.1. 阻塞IO 3.3.2. 非阻塞轮询式IO 3.3.3. 信号驱动IO 3.3.4. 多路转接IO 3.3.5. 异步IO 4. 非阻塞IO 4.1. fcntl 系统调用 1. 什么是I…

2024最新软件测试【测试理论+ 数据库】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …