【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>]安装目录下会有类似的创建站点文件: 修改其中的内容,…...
卡诺图简化逻辑函数详解
你提供的图片是数字逻辑电路教材中关于**卡诺图(Karnaugh Map)**的内容,主要讲解如何用卡诺图表示和化简逻辑函数。下面我为你逐部分解释:📌 一、核心概念:什么是卡诺图?卡诺图是一种图形化工具…...
餐饮店主的AI助手:像素特工Ostrakon-VL快速上手,自动检查厨房卫生与陈列
餐饮店主的AI助手:像素特工Ostrakon-VL快速上手,自动检查厨房卫生与陈列 1. 为什么餐饮店主需要AI视觉助手 想象一下这样的场景:早上开店前,你匆匆拍下厨房的照片,上传到一个系统。几秒钟后,它告诉你&…...
如何让AI读懂古文?GuwenBERT带来的古典汉语处理革命
如何让AI读懂古文?GuwenBERT带来的古典汉语处理革命 【免费下载链接】guwenbert GuwenBERT: 古文预训练语言模型(古文BERT) A Pre-trained Language Model for Classical Chinese (Literary Chinese) 项目地址: https://gitcode.com/gh_mir…...
CA6140车床杠杆831009钻M6孔夹具设计全套带图
CA6140车床作为机械加工领域的经典设备,其杠杆零件(编号831009)的加工精度直接影响整机性能。针对该零件M6螺纹孔的加工需求,专用夹具的设计需兼顾定位稳定性、操作便捷性与加工经济性。通过分析零件结构可知,杠杆两端…...
Pumba在Kubernetes中的实战部署:DaemonSet配置指南
Pumba在Kubernetes中的实战部署:DaemonSet配置指南 【免费下载链接】pumba Chaos testing, network emulation, and stress testing tool for containers 项目地址: https://gitcode.com/gh_mirrors/pu/pumba Pumba是一款强大的容器混沌测试工具,…...
换了台电脑检测AI率结果不一样,是哪出问题了
“我自己电脑测的AI率是18%,去图书馆机房同学的电脑上测了一次,变成28%了。论文一字没改,怎么差了10个点?” 这个问题问得很具体,我来一步步排查。 先排查:两次测的是同一个文件吗? 这是最常…...
实战演练:基于快马平台快速构建一个电商客服对话agent系统
今天想和大家分享一个实战项目:如何在InsCode(快马)平台快速搭建一个电商客服对话agent系统。这个项目特别适合想体验AI对话系统开发的朋友,整个过程不需要复杂的配置,半小时就能看到效果。 需求分析 电商客服系统最核心的功能就是处理用户的…...
全平台资源下载利器:res-downloader零门槛使用指南
全平台资源下载利器:res-downloader零门槛使用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否曾遇到想…...
从需求到代码:基于快马平台ai生成spring boot电商系统实战项目
从需求到代码:基于快马平台AI生成Spring Boot电商系统实战项目 最近在做一个电商订单处理系统的项目,正好尝试了用InsCode(快马)平台来快速生成Spring Boot代码。整个过程比我预想的要顺畅很多,特别是对于这种包含多个模块的中型项目&#x…...
完整B站字幕提取解决方案:三步搞定视频字幕获取与转换
完整B站字幕提取解决方案:三步搞定视频字幕获取与转换 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾经在B站看到精彩的教学视频,…...
