【GD32】从零开始学GD32单片机 | WDGT看门狗定时器+独立看门狗和窗口看门狗例程(GD32F470ZGT6)

news2024/9/21 20:33:05

1. 简介

看门狗从本质上来说也是一个定时器,它是用来监测硬件或软件的故障的;它的工作原理大概就是开启后内部定时器会按照设置的频率更新,在程序运行过程中我们需不断地重装载看门狗,以使它不溢出;如果硬件或软件发生故障没有及时重装载看门狗,就会引发中断或复位。

在GD32中看门狗分为独立看门狗(FWDGT)和窗口看门狗(WWDGT)。

2. 独立看门狗

独立看门狗使用独立的内部时钟,频率为32kHz,因此即使在低功耗模式中它也是能够运行的,适用于需要独立环境且对计时精度要求不高的场合。它的内部有一个12位的向下计数的定时器;运行时,当计时器的计数值达到0,独立看门狗会产生一个系统复位。

看门狗的内部还自带一个预分频器,可以对内部时钟再分频,下面列出了不同的分频系数,对应的最小和最大超时时间。

预分频系数最小超时(ms)最大超时(ms)
1/40.03125511.90625
1/81023.7812
1/162047.53125
1/324095.03125
1/648190.03125
1/12816380.03125
1/25632760.03125

使用独立看门狗时要注意,当执行完喂狗reload操作之后,如需要立即进入deepsleep / standby模式时,必须通过软件设置,在reload命令及deepsleep / standby模式命令中间插入(3个以上)IRC32K时钟间隔

3. 窗口看门狗

窗口看门狗使用PCLK分频而来的时钟,它内部是一个7位的向下计数的计数器,同样,运行时计数器的值变为0时,会引发中断或系统复位。

若配置为中断使能,那么计数器的值达到0x40时会触发中断;若想产生复位有以下几种方式,一种是在计数值达到窗口寄存器值之前,更新计数器;另一种是将WWDGT_CTL寄存器的WDGTEN位置1,计数器的值达到0x3F时。

窗口看门狗的超时时间可以使用下面的公式计算:

t_{WWDGT}=t_{PCLK1}\times 4096\times2^{PSC}\times(CNT[5:0]+1)

这里也提供一个表格列出不同分频系数下的最小和最大超时时间。

预分频系数

最小超时时间(us)

CNT[6:0]=0x40

最大超时时间(ms)

CNT[6:0]=0x7F

1/168.274.37
1/2136.548.74
1/4273.0817.48
1/8546.1634.96

4. 例程

4.1 独立看门狗

例程中会配置独立看门狗运行,在程序中定期对其正常重装载5次,然后不操作,等待看门狗溢出,引起系统复位。

int main(void)
{
    systick_config();
	debug_init();
	printf("fwdgt demo\r\n");
	/* 看门狗超时时间 = 1 / (32kHz / 32) * 3000 = 3s */
	fwdgt_config(3000, FWDGT_PSC_DIV32);
	fwdgt_enable();
	
    if (RESET != rcu_flag_get(RCU_FLAG_FWDGTRST)) {
        /* clear the FWDGT reset flag */
        rcu_all_reset_flag_clear();
	}

    for (uint8_t i = 0; i < 5; i++) {
		delay_1ms(1000);
		printf("reload fwdgt\r\n");
		fwdgt_counter_reload();
    }
	
	while (1) {
	}
}

初始化非常简单,调用fwdgt_config函数,传入重装载值和分频系数即可,我设置的是32分频,重装载值3000,那么超时时间就是大约3秒。最后调用fwdgt_enable即可开启看门狗,那么需要注意的是看门狗一旦开启就关闭不了了,除非系统复位

下面的循环会每隔1秒重装载看门狗一次,5次过后就不再操作。

从程序的输出可以看到看门狗的确发生了溢出并导致了系统复位。

4.2 窗口看门狗

这个例程配置窗口看门狗并使能,同样定期重装载5次,然后不操作,使看门狗产生系统复位。

int main(void)
{
    systick_config();
	debug_init();
	printf("wwdgt demo\r\n");

    /* 检查系统是否由WWDGT复位中唤醒 */
    if(RESET != rcu_flag_get(RCU_FLAG_WWDGTRST)) {
        /* 清除复位标志 */
        rcu_all_reset_flag_clear();
    }

    /* 使能WWDGT时钟 */
    rcu_periph_clock_enable(RCU_WWDGT);

	/* 看门狗超时时间 = 1 / (60MHz / 4096 / 8) * (127 - 63) = 34.96ms	*/
	/* 窗口范围 26.22ms-34.96ms */
	wwdgt_config(127, 79, WWDGT_CFG_PSC_DIV8);
	wwdgt_enable();

    for (uint8_t i = 0; i < 5; i++) {
		delay_1ms(28);  // 在窗口范围更新才不会复位
		printf("reload wwdgt\r\n");
		wwdgt_counter_update(127);
    }

	while (1) {
	}
}

因为窗口看门狗使用PCLK时钟,所以使用前需要使能时钟。

接下来初始化调用wwdgt_config即可,传入重装载值、窗口值和预分频系数,因为时钟频率较高、计数器位数小还有它基于窗口的这个特性,可以发现窗口看门狗对重装载的时间要求还是蛮高的,用户必须在窗口范围内重装载才不会引发系统复位。初始化后调用wwdgt_enable可使能窗口看门狗。

下面还是一样,重装载5次,之后等待系统复位。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024-07-13 Unity AI状态机2 —— 项目介绍

文章目录 1 项目介绍2 模块介绍2.1 BaseState2.2 ...State2.2.1 PatrolState2.2.2 ChaseState / AttackState / BackState 2.3 StateMachine2.4 Monster 3 其他功能4 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2…

C++基础(一)

目录 1.不同版本的hello word&#xff01; 2.namespace和&#xff1a;&#xff1a;域作用限定符以及using 2.1 namespace 2.2&#xff1a;&#xff1a; 2.3using用于展开域 3.C输入和输出 4.缺省参数 5.重载 6.引用 6.1引用介绍 6.2 引用的特性 注意&#xff1a; 6.4 c…

基于CSS两种菜单创建方式

作者&#xff1a;私语茶馆 1.前言 HTML多种场景下需要菜单的实现&#xff0c;这里提供两种方式&#xff1a; &#xff08;1&#xff09;基于CSS的POPUP式菜单 特征&#xff1a;按需显示POPUP菜单&#xff0c;但布局是浮动的。 &#xff08;2&#xff09;覆盖式弹出菜单。 …

独家揭秘!五大内网穿透神器,访问你的私有服务

本文精心筛选了五款炙手可热的内网穿透工具&#xff0c;它们各怀绝技&#xff0c;无论您是企业用户、独立开发者&#xff0c;还是技术探索者&#xff0c;这篇文章都物有所值&#xff0c;废话不多说&#xff0c;主角们即将上场。 目录 1. 巴比达 - 安全至上的企业护航者 2. 花…

二次改写内容,ai智能写作软件最便捷

对于自媒体创作者&#xff0c;二次改写是获取内容的一个不错的方法&#xff0c;通过二次改写不仅能提高自媒体内容创作的效率问题&#xff0c;而且还解决了创作中因灵感缺失产不出内容的问题&#xff0c;但是二次改写内容也是需要讲究方法的&#xff0c;如果没有好的方法&#…

68种语言说爱你网页源码

浪漫至死不渝&#xff0c;68种语言说爱你网页源码&#xff0c;本地和上传服务器都可以用&#xff0c;无加密。 网页源码&#xff1a;68种语言说爱你单页.zip 下面是HTML代码CSS代码超过七百多行打包成文件了。 <!DOCTYPE html> <html lang"en"><h…

计算机体系结构和指令系统2

1.存储系统的层次结构 有的教材把安装在电脑内部的磁盘成为“辅存”&#xff0c;把U盘、光盘等成为外存&#xff0c;也有的教材把磁盘、U盘、光盘等统称为“辅存”或外存。 主存——辅存&#xff1a;实现虚拟存储系统&#xff0c;解决了主存容量不够&#xff0c;辅存速度不够的…

【密码学】实现消息认证或数字签名的几种方式

消息认证的目的是验证消息的完整性和确认消息的来源。数字签名的目的是不仅验证消息的完整性和来源&#xff0c;还提供了不可否认性。此外&#xff0c;数字签名还可以验证消息的创建时间&#xff0c;防止重放攻击。那么具体有哪些实现的方式呢&#xff1f; 一、仅提供消息认证…

2024年7月13日全国青少年信息素养大赛Python复赛小学高年级组真题

第一题 题目描述 握情况。他决定让每个人输入一个正整数 N (0≤N≤1000)&#xff0c;然后计算并输出(5*N)的值。请用 在一个神秘的王国里&#xff0c;国王希望通过一个简单的测试来评估他的子民对基 础数学运算的掌 Python 编写程序&#xff0c;程序执行后要求用户输入一个正…

【山东大学】web数据管理——复习笔记

写在前面 若有图片加载失败&#xff0c;请科学上网 。本文为对软件学院连老师的PPT课件总结所得的复习笔记&#xff0c;仅供参考。不保证对考点的全覆盖&#xff0c;以PPT为主。对往年考过的题相关知识点前面都标注了“考过”&#xff0c;并高亮&#xff0c;供参考。写的比较匆…

代码随想录第51天|单调栈

42. 接雨水 参考 思路1: 暴力解法 找每个柱子的左右高度超时 O(N^2) 思路2: 双指针优化 class Solution { public:int trap(vector<int>& height) {vector<int> lheight(height.size(), 0);vector<int> rheight(height.size(), 0);lheight[0] hei…

【超音速 专利 CN117576413A】基于全连接网络分类模型的AI涂布抓边处理方法及系统

申请号CN202311568976.4公开号&#xff08;公开&#xff09;CN117576413A申请日2023.11.22申请人&#xff08;公开&#xff09;超音速人工智能科技股份有限公司发明人&#xff08;公开&#xff09;张俊峰&#xff08;总&#xff09;; 杨培文&#xff08;总&#xff09;; 沈俊羽…

Python酷库之旅-第三方库Pandas(021)

目录 一、用法精讲 52、pandas.from_dummies函数 52-1、语法 52-2、参数 52-3、功能 52-4、返回值 52-5、说明 52-6、用法 52-6-1、数据准备 52-6-2、代码示例 52-6-3、结果输出 53、pandas.factorize函数 53-1、语法 53-2、参数 53-3、功能 53-4、返回值 53-…

网络割接方案通用模板

第一章 项目概述 1.1 编写目的 为规范“十三五”以来&#xff0c;随着移动互联新技术的发展以及我国政府职能的不断转变&#xff0c; 我国的政法网络进入新的发展阶段&#xff0c;跨地域、跨部门、跨系统的信息共享、业务 协同以及智慧政务等成为了各地电子政务的重点建设内容。…

【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块

文章目录 前言一、导航功能实现a.效果图&#xff1a;b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…

自动化故障排查与运维团队建设策略

在当前的运维领域&#xff0c;自动化故障排查已成为提高运维效率、保障系统稳定性的关键手段。为了进一步提升故障排查能力&#xff0c;并建立高效的运维团队&#xff0c;以下策略值得深入考虑和实施。 一、自动化故障排查流程与工具 标准化故障排查流程 建立一套标准化的故…

121. 小红的区间翻转(卡码网周赛第二十五期(23年B站笔试真题))

题目链接 121. 小红的区间翻转&#xff08;卡码网周赛第二十五期&#xff08;23年B站笔试真题&#xff09;&#xff09; 题目描述 小红拿到了两个长度为 n 的数组 a 和 b&#xff0c;她仅可以执行一次以下翻转操作&#xff1a;选择a数组中的一个区间[i, j]&#xff0c;&#x…

Nginx入门到精通五(动静分离)

下面内容整理自bilibili-尚硅谷-Nginx青铜到王者视频教程 Nginx相关文章 Nginx入门到精通一&#xff08;基本概念介绍&#xff09;-CSDN博客 Nginx入门到精通二&#xff08;安装配置&#xff09;-CSDN博客 Nginx入门到精通三&#xff08;Nginx实例1&#xff1a;反向代理&a…

全球生成式AI 产品分析报告

全球生成式AI 产品研究报告 时代背景 全球进入AI驱动的生产革命&#xff0c;生成式技术是时代际遇。中美在生成式AI产业展开科技竞争&#xff0c;全栈组合拳拉锯发展。‍ 技术变革 Transformer架构优化模型泛化的训推能力与理解生成的内容能力。文本模态达高应用成熟度&…

OpenCV图像处理——获取穿过圆的直线与圆相交的两个点

在OpenCV中&#xff0c;没有直接的函数来计算直线与圆的交点&#xff0c;但可以通过数学方法来实现这一功能。以下是计算直线与圆交点的步骤&#xff0c;以及相应的C代码示例&#xff1a; 确定直线方程&#xff1a;使用直线上的两个点 P 1 ( x 1 , y 1 ) P1(x1, y1) P1(x1,y1)和…