【GD32】从零开始学GD32单片机 | WDGT看门狗定时器+独立看门狗和窗口看门狗例程(GD32F470ZGT6)
1. 简介
看门狗从本质上来说也是一个定时器,它是用来监测硬件或软件的故障的;它的工作原理大概就是开启后内部定时器会按照设置的频率更新,在程序运行过程中我们需不断地重装载看门狗,以使它不溢出;如果硬件或软件发生故障没有及时重装载看门狗,就会引发中断或复位。
在GD32中看门狗分为独立看门狗(FWDGT)和窗口看门狗(WWDGT)。
2. 独立看门狗

独立看门狗使用独立的内部时钟,频率为32kHz,因此即使在低功耗模式中它也是能够运行的,适用于需要独立环境且对计时精度要求不高的场合。它的内部有一个12位的向下计数的定时器;运行时,当计时器的计数值达到0,独立看门狗会产生一个系统复位。
看门狗的内部还自带一个预分频器,可以对内部时钟再分频,下面列出了不同的分频系数,对应的最小和最大超时时间。
| 预分频系数 | 最小超时(ms) | 最大超时(ms) |
| 1/4 | 0.03125 | 511.90625 |
| 1/8 | 1023.7812 | |
| 1/16 | 2047.53125 | |
| 1/32 | 4095.03125 | |
| 1/64 | 8190.03125 | |
| 1/128 | 16380.03125 | |
| 1/256 | 32760.03125 |
使用独立看门狗时要注意,当执行完喂狗reload操作之后,如需要立即进入deepsleep / standby模式时,必须通过软件设置,在reload命令及deepsleep / standby模式命令中间插入(3个以上)IRC32K时钟间隔。
3. 窗口看门狗

窗口看门狗使用PCLK分频而来的时钟,它内部是一个7位的向下计数的计数器,同样,运行时计数器的值变为0时,会引发中断或系统复位。
若配置为中断使能,那么计数器的值达到0x40时会触发中断;若想产生复位有以下几种方式,一种是在计数值达到窗口寄存器值之前,更新计数器;另一种是将WWDGT_CTL寄存器的WDGTEN位置1,计数器的值达到0x3F时。

窗口看门狗的超时时间可以使用下面的公式计算:
这里也提供一个表格列出不同分频系数下的最小和最大超时时间。
| 预分频系数 | 最小超时时间(us) CNT[6:0]=0x40 | 最大超时时间(ms) CNT[6:0]=0x7F |
| 1/1 | 68.27 | 4.37 |
| 1/2 | 136.54 | 8.74 |
| 1/4 | 273.08 | 17.48 |
| 1/8 | 546.16 | 34.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次,之后等待系统复位。

相关文章:
【GD32】从零开始学GD32单片机 | WDGT看门狗定时器+独立看门狗和窗口看门狗例程(GD32F470ZGT6)
1. 简介 看门狗从本质上来说也是一个定时器,它是用来监测硬件或软件的故障的;它的工作原理大概就是开启后内部定时器会按照设置的频率更新,在程序运行过程中我们需不断地重装载看门狗,以使它不溢出;如果硬件或软件发生…...
详解曼达拉升级:如何用网络拓扑结构扩容BSV区块链
发表时间:2024年5月24日 BSV曼达拉升级是对BSV基础设施的战略性重塑,意在显著增强其性能,运行效率和可扩容。该概念于2018年提出,其战略落地将使BSV区块链顺利过渡,从现有的基于单一集成功能组件的网络拓扑结构&am…...
编译打包自己的云手机(redroid)镜像
前言 香橙派上跑云手机可以看之前的文章: 香橙派5plus上跑云手机方案一 redroid(带硬件加速)香橙派5plus上跑云手机方案二 waydroid 还有一个cuttlefish方案没说,后面再研究,cuttlefish的优势在于可以自定义内核且selinux是开启的…...
自动驾驶的规划控制简介
自动驾驶的规划控制是自动驾驶系统中的核心组成部分,它负责生成安全、合理且高效的行驶轨迹,并控制车辆按照这个轨迹行驶。规划控制分为几个层次,通常包括行为决策(Behavior Planning)、轨迹规划(Trajector…...
java配置nginx网络安全,防止国外ip访问,自动添加黑名单,需手动重新加载nginx
通过访问日志自动添加国外ip黑名单 创建一个类,自己添加一个main启动类即可测试 import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; import org.json.JSONObject; import org.sp…...
ARP协议
计算机网络资料下载:CSDN ARP协议 APR(address resolution protocol):地址解析协议,用于实现从IP地址到MAC地址的映射,即访问目标ip地址的mac地址。 网络层及以上采用的ip地址来标记网络接口,但是以太数据帧的传输,…...
Qt程序图标更改以及程序打包
Qt程序图标更改以及程序打包 1 windows1.1 cmake1.1.1 修改.exe程序图标1.1.2 修改显示页面左上角图标 1.2 qmake1.2.1 修改.exe程序图标1.2.2 修改显示页面左上角图标 2 程序打包2.1 MinGW2.2 Visual Studio 3 参考链接 QT6 6.7.2 1 windows 1.1 cmake 1.1.1 修改.exe程序图…...
普通人还有必要学习 Python 之类的编程语言吗?
在开始前分享一些编程的资料需要的同学评论888即可拿走 是我根据网友给的问题精心整理的对于编程的重要性,这里就不详谈了。 未来,我们和机器的交流会越来越多,编程可以简单看作是和机器对话并分发给机器任务。机器不仅越来越强大࿰…...
「Python」基于Gunicorn、Flask和Docker的高并发部署
目标预期 使用Gunicorn作为WSGI HTTP服务器,提供高效的Python应用服务。使用Flask作为轻量级Web应用框架,快速开发Web应用。利用Docker容器化技术,确保应用的可移植性和一致性。实现高并发处理,提高应用的响应速度和稳定性。过程 环境准备:安装Docker和Docker Compose。编…...
在攻防演练中遇到的一个“有马蜂的蜜罐”
在攻防演练中遇到的一个“有马蜂的蜜罐” 有趣的结论,请一路看到文章结尾 在前几天的攻防演练中,我跟队友的气氛氛围都很好,有说有笑,恐怕也是全场话最多、笑最多的队伍了。 也是因为我们遇到了许多相当有趣的事情,其…...
一文了解MySQL的表级锁
文章目录 ☃️概述☃️表级锁❄️❄️介绍❄️❄️表锁❄️❄️元数据锁❄️❄️意向锁⛷️⛷️⛷️ 介绍 ☃️概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外࿰…...
LVS+Keepalive高可用
1、keepalive 调度器的高可用 vip地址主备之间的切换,主在工作时,vip地址只在主上,vip漂移到备服务器。 在主备的优先级不变的情况下,主恢复工作,vip会飘回到住服务器 1、配优先级 2、配置vip和真实服务器 3、主…...
网络安全防御【防火墙安全策略用户认证综合实验】
目录 一、实验拓扑图 二、实验要求 三、实验思路 四、实验步骤 1、打开ensp防火墙的web服务(带内管理的工作模式) 2、在FW1的web网页中网络相关配置 3、交换机LSW6(总公司)的相关配置: 4、路由器相关接口配置&a…...
IOS上微信小程序密码框光标离开提示存储密码解决方案
问题: ios密码框输入密码光标离开之后会提示存储密码的弹窗 解决方案 1、在苹果手机上面把 “自动填充密码”关闭,但是苹果这个默认开启,而且大部分客户也不会去自己关闭。 2、欺骗苹果手机,代码实现。 先说解决思路…...
AWS CDN新增用户ip 地区 城市 响应头
1.需要自定义cdn缓存策略 这里的策略也是先复制之前的cdn策略哈 最后复制完了 全部新增这两条标头key CloudFront-Viewer-Country CloudFront-Viewer-City 2.然后新增cdn函数,应用你写的这个函数 function handler(event) {var request event.request;var respon…...
Elasticsearch基础概念
Elasticsearch 是一款开源的,ESTful风格的 分布式搜索、存储、分析引擎; 常见的使用场景 网站搜索,代码搜索等日志管理与分析,应用系统性能分析,安全指标监控等数据库同步,将数据库某个表的数据同步到elasticsearch上然后提供搜索服务 ES基本概念 文档 我们向elasticsearch存…...
Redis 7.x 系列【24】哨兵模式配置项
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 前言2. 配置项2.1 protected-mode2.2 port2.3 daemonize2.4 pidfile2.5 loglevel2.…...
SpringBoot+Vue实现简单的文件上传(策略模式)
SpringBootVue实现简单的文件上传 1 环境 SpringBoot 3.2.1,Vue 2,ElementUI 2 问题 前两篇文章,我们上传了txt、Excel文件,其实文件类型有很多种,如果我们的upload组件没有上传文件类型的限制,那么同一个…...
软考中级科目包含哪些?应该考哪个?
软考中级包含5个专业方向,分别是:计算机软件、计算机网络、计算机应用技术、信息系统、信息服务。这5个方向又对应15个软考中级科目。 信息系统包括:系统集成项目管理工程师、信息系统监理师、信息安全工程师、数据库系统工程师、信息系统管…...
ArcGIS Enterprise 命令行组件创建配置
1. 创建ArcGIS Server站点 使用 createsite工具 命令行直接执行 createsite.sh [-u <arg>] [-p <arg>] [-d <arg>] [-c <arg>]执行文件 createsite.sh [-f <FILE>]安装目录下会有类似的创建站点文件: 修改其中的内容,…...
如何将GIMP秒变Photoshop?GimpPs主题插件完整配置指南
如何将GIMP秒变Photoshop?GimpPs主题插件完整配置指南 【免费下载链接】GimpPs Gimp Theme to be more photoshop like 项目地址: https://gitcode.com/gh_mirrors/gi/GimpPs 如果你正在寻找一款能让GIMP拥有Photoshop般专业界面的主题插件,GimpP…...
OBS-VST插件完整指南:5分钟让直播音频秒变专业的终极方案
OBS-VST插件完整指南:5分钟让直播音频秒变专业的终极方案 【免费下载链接】obs-vst Use VST plugins in OBS 项目地址: https://gitcode.com/gh_mirrors/ob/obs-vst 想在OBS Studio中免费获得专业级音频处理效果吗?OBS-VST插件正是你需要的解决方…...
科技中介机构如何提升服务效率与转化率?
观点作者:科易网-国家科技成果转化(厦门)示范基地 在数智化浪潮席卷全球的今天,科技创新正经历着一场深刻的变革。数据已成为关键生产要素,重塑着创新主体间的关系,也催生了全新的科技成果转化模式。在这一…...
深入理解Android中startActivity的完整流程:聚焦IPC机制与Binder原理
引言 在Android开发中,startActivity() 方法是启动新Activity的核心API,它贯穿了应用的生命周期管理。理解其内部流程,不仅有助于优化性能、避免常见错误,还能提升开发者在面试中的竞争力。本文将以“一次完整的 startActivity 到底经历了什么”为主题,深入探讨整个流程,…...
Frida-server魔改实战:Android native层反调试对抗七步法
1. 这不是“绕过检测”,而是让frida-server从“被识别对象”变成“系统一部分”在安卓逆向和安全测试一线干了十多年,我见过太多人把Frida检测对抗理解成一场猫鼠游戏:App加个检测逻辑,测试方就写个绕过脚本;检测逻辑升…...
基于RA4M2的便携GPS定位器开发:从硬件选型到低功耗优化全解析
1. 项目概述与核心价值最近在做一个挺有意思的小玩意儿,用瑞萨的RA4M2-SENSOR开发板,折腾出了一个巴掌大小的便携式GPS定位器。这玩意儿听起来好像没啥新鲜的,市面上成品一大堆,但自己从头到尾搭一遍,从选型、画板、写…...
终极Mac微信插件:消息防撤回与多开登录完整指南
终极Mac微信插件:消息防撤回与多开登录完整指南 【免费下载链接】WeChatExtension-ForMac A plugin for Mac WeChat 项目地址: https://gitcode.com/gh_mirrors/we/WeChatExtension-ForMac 还在为Mac微信无法防撤回消息而烦恼吗?想要在同一台电脑…...
一文讲清WMS软件是什么?企业为什么要用WMS软件?
在数字化供应链时代,WMS软件(仓储管理系统)已成为企业物流管理的核心。面对仓库混乱、库存不准,很多企业都在问:WMS软件到底是什么?它和Excel或进销存有什么区别?企业为什么要用WMS软件…...
别再死记公式了!用Python手把手实现粒子群算法(PSO)优化函数寻优
别再死记公式了!用Python手把手实现粒子群算法(PSO)优化函数寻优 粒子群算法(PSO)作为经典的群体智能优化方法,常被用于解决复杂的非线性优化问题。但大多数教程都停留在数学公式推导层面,让初学…...
非标自动化设计实战:用亚德客气爪和真空吸盘搞定不规则工件抓取(附选型速查表)
非标自动化设计实战:亚德客气爪与真空吸盘在复杂工件抓取中的工程决策 在非标自动化设备设计领域,工件抓取方案的确定往往是项目成败的关键节点。面对形状不规则、材质特殊的工件——可能是表面粗糙的铸件、易碎的玻璃制品或是带有曲面的复合材料——工程…...
