一、简单介绍

窗口看门狗适合需要精确时序控制的场合,在一个受限的窗口期内喂狗,如果递减计数器还没有到窗口值就喂狗,会触发复位

如果一直不喂狗,也会触发复位,和之前的独立看门狗的窗口选项有点类似

需要指出的是,有些STM32单片机的独立看门狗是不具备窗口功能的,例如常见的F103C8T6

递减计数器有7位,由于计数值 >= 窗口值 >= 64,则计数器最高位亦即T6就必定是1

只要使能了窗口看门狗,WDGA就是1,右上方的与门是否输出1就取决于前一级的或门

或门的一个输入是T6,窗口期的大小就是T[5:0]这6个位,当这6位数递减至0时,最高位发生翻转,T6变成0就会触发复位

或门的另一个输入是比较器,当比较器发现计数值比窗口值还大时且有喂狗动作就输出1,也会立刻复位

二、特性

如果递减计数器还没有到窗口值就喂狗,会触发复位

如果递减计数器值小于0x40,会触发复位

具有一个早起中断,在复位前会执行这个中断

三、设置窗口值

笔者设置系统时钟为64MHz,同时也是64MHz的pclk,使用16分频,则计数频率为64MHz / 4096 / 16 = 0.976kHz,周期为1.024ms

在窗口内喂狗后计数器被赋值为T[6:0],也就是cubemx里counter的值

当计数器值介于down counter和window之间时不允许喂狗,只有计数器值介于window和0x3F之间才可以喂狗

四、cubemx配置

系统时钟

窗口看门狗

设置counter为127,window为70,则只有在第58.36~64.51ms的范围内(计数器落在[70:63])喂狗才不会复位(因为每计数一次大约1.024ms)

开启early wakeup中断

定时器

配置定时并开启中断

中断优先级

需要给看门狗中断较高的优先级

五、测试代码

主循环显示递增数,定时器喂狗次数和看门狗中断喂狗次数

/*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_SPI1_Init();MX_TIM17_Init();
//   MX_WWDG_Init();/* USER CODE BEGIN 2 */ST7735_Init();ST7735_ShowString(0, 0, "RESET", Font_11x18, RED, BLACK);HAL_Delay(1000);ST7735_Clear(BLACK);MX_WWDG_Init();HAL_TIM_Base_Start_IT(&htim17);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){static uint16_t wdg = 0;static uint16_t timer = 0;count++;sprintf(str, "%d  ", count % 999);ST7735_ShowString(0, 0, str, Font_11x18, GREEN, BLACK);if (wdg != wdgcnt){wdg = wdgcnt;sprintf(str, "%d", wdgcnt);ST7735_ShowString(0, 30, str, Font_11x18, RED, BLACK);}if (timer != timercnt){timer = timercnt;sprintf(str, "%d", timercnt);ST7735_ShowString(0, 60, str, Font_11x18, BLUE, BLACK);}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

在看门狗中断内喂狗

void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)
{wdgcnt++;HAL_WWDG_Refresh(hwwdg);wdgFeedFlg = 1;
}

看门狗早起中断内进行喂狗,并将喂狗标志位置位

 在1ms定时器中断内进行喂狗,判断是否已经通过看门狗中断喂过。如果喂过了,递减计数器会被重置,就不必再喂了

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static uint8_t cnt = 0;if (cnt == 60){if (wdgFeedFlg == 0){HAL_WWDG_Refresh(&hwwdg);timercnt++;}else{wdgFeedFlg = 0;}cnt = 0;}cnt++;
}

实验证明确实如此,如果cnt等于58就喂狗也会触发复位,只有59~64才是合适的范围

六、现象

当定时器喂狗时,屏幕最底下蓝色的数字显示通过定时器喂狗的次数

当看门狗中断喂狗时,屏幕中间红色的数字显示看门狗中断喂狗次数

七、工程链接

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

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

相关文章

完整代码注释:实现 Qt 的 TCP 客户端,实现和服务器通信

一、实验效果演示 实现 Qt 的 TCP 客户端&#xff0c;实现和服务器通信二、代码框架 三、代码 tcpclient客户端代码 tcpclient.cpp #include "tcpclient.h" #include "ui_tcpclient.h" #include <QDebug> #include <QMessageBox> #include …

AR培训系统:油气行业的安全与效率革新

在油气行业&#xff0c;一场由增强现实&#xff08;AR www.teamhelper.cn &#xff09;技术引领的培训革命正在悄然发生。新员工们不再需要冒着生命危险在真实的钻井平台上学习操作&#xff0c;而是通过AR眼镜在虚拟环境中模拟钻井、起下钻甚至处理井喷等复杂操作。这种创新的培…

Linux 多线程:互斥与同步

Linux 多线程中的互斥与同步 —— pthread_mutex 与 semaphore在 Linux 多线程编程中&#xff0c;线程间共享全局变量或数据结构是常见场景。如果多个线程同时读写同一块内存&#xff0c;就可能产生 数据竞争 和 不一致。为了解决这些问题&#xff0c;Linux 提供了多种 线程同步…

技术演进中的开发沉思-81 Linux系列:进程地址空间

上一个篇幅和大家聊了进程地址空间、内存描述符这些 Linux 内存管理的 “基本功”&#xff0c;我的一些学生问&#xff1a;“这些概念听起来简单&#xff0c;可实际开发中怎么用得上&#xff1f;” 我想今天把这些 “理论骨架” 填上 “实践血肉”—— 毕竟我当年踩过的坑、摸过…

【联通分量】题解:P13823 「Diligent-OI R2 C」所谓伊人_连通分量_最短路_01bfs_图论_C++算法竞赛

洛谷博客&#xff1a;https://www.luogu.com.cn/article/5n200x7y Link - P13823 讨论区中有很多有用的 hack&#xff0c;没过的话可以去看看。 每个点都可以换到其所在弱连通分量的最大点权&#xff0c;这是毋庸置疑的。 为了方便陈述&#xff0c;下文中记当前弱连通分量中…

区块链+隐私计算护航“东数西算”数据安全报告

一、背景与政策支持1.1 "东数西算"工程概况战略定位&#xff1a;作为数字经济时代的核心"底座"&#xff0c;"东数西算"工程是国家级算力资源跨域调配战略工程&#xff0c;旨在构建全国一体化算力网络体系。启动时间与布局&#xff1a;2022年2月&…

STM32——PWR

一、PWR1.1PWR简介PWR&#xff08;Power Control&#xff09;电源控制PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器&#xff08;PVD&#xff09;可以监控VDD电源电压&#xff0c;当VDD下降到PVD阀值以下或上升到…

Linux系统网络管理学习.2

目录 一、学习目标与适用场景 二、网络管理基础概念 1. NetworkManager服务 2. 核心管理工具 三、NetworkManager服务管理&#xff08;基础操作&#xff09; 1. 服务状态控制 四、网络参数配置&#xff08;IP/DNS/网关&#xff09; 1. 图形化配置&#xff08;仅了解&…

响应式编程之Flow框架

文章目录一、技术背景与产生原因1.1 响应式编程的兴起1.2 响应式流规范&#xff08;Reactive Streams&#xff09;1.3 解决的问题1.4 响应式编程二、Flow API核心组件2.1 核心概念2.2 接口关系图2.2 接口详解2.3 背压机制三、完整示例3.1 入门示例3.2 基础发布-订阅示例3.3 带背…

ABeam中国 | 中国汽车市场(5)——软件定义汽车(SDV)的智能化应用场景

前言本系列前四篇深入探讨了中国新能源汽车市场的崛起与电动化进程中的挑战。本文聚焦软件定义汽车&#xff08;SDV&#xff09;的三大核心应用场景 ——高级驾驶辅助系统&#xff08;ADAS&#xff09;、智能驾驶舱人机界面&#xff08;HMI&#xff09;及出行即服务&#xff08…

BugKu Web渗透之成绩查询

打开网页&#xff0c;页面如下&#xff1a;输入框中输入不同的数字可以查询不同的结果。输入1后点击submit按钮&#xff0c;下方出现成绩结果。从题目上看感觉是一个SQL注入的漏洞。思路有下&#xff1a;1.自己手动拼接一些常见的SQL注入。2.用bp抓包后用SQLMap去跑。首先&…

【MES】工业4.0智能制造数字化工厂(数字车间、MES、ERP)解决方案:智能工厂体系架构、系统集成以及智能设计、生产、管理、仓储物流等

工业4.0智能制造数字化工厂的解决方案&#xff0c;涵盖了智能制造的背景、企业实现智能工厂的好处、智能工厂的规划与实现方法以及系统实施模块的详细介绍。通过上汽通用凯迪拉克工厂的案例展示了智能工厂的强大能力&#xff0c;强调了数据、技术、管理、人员等关键要素在智能制…

3.【鸿蒙应用开发实战: 从入门到精通】开发入门 Hello World

1.【鸿蒙应用开发实战: 从入门到精通】开发入门 Hello World1.1 前言1.2 创建一个新项目1.2.1 打开DevEco Studio1.2.2 点击 Create Project 创建项目1.3 遗留问题1.4 总结与开发建议1.5 结束语1.1 前言 上篇博文【2.【鸿蒙应用开发实战: 从入门到精通】开发环境搭建】我们已经…

mac系统本地部署Dify步骤梳理

更换终端&#xff0c;适配步骤梳理见笔记前提&#xff1a;已安装docker desktop&#xff0c;若未安装&#xff0c;跳转至文末先安装1.Git软件准备&#xff08;1&#xff09;确认查询Git版本&#xff08;2&#xff09;如果查询不到系统会提示安装&#xff0c;点击安装即可&#…

深度学习——基于卷积神经网络实现食物图像分类【1】(datalodar处理方法)

1. 项目概述 在这个项目中&#xff0c;我们将使用PyTorch框架构建一个卷积神经网络(CNN)来实现食物图像分类任务。我们的数据集包含20种不同的食物类别&#xff0c;包括八宝粥、巴旦木、白萝卜、板栗等常见食物。本文将详细介绍从数据准备、模型构建到训练和评估的完整流程。 …

华中科大联手小米推出ReCogDrive:自动驾驶迎来“认知革命”!

1.【前言】 在开放道路中实现安全、平稳、泛化的自动驾驶&#xff0c;是智能交通领域的“圣杯”。尽管近年来 端到端自动驾驶&#xff08;End-to-End Autonomous Driving, E2E-AD&#xff09; 框架&#xff08;如 UniAD、VAD&#xff09;在 NuScenes 等基准中展现出优异表现&a…

基于 Spring AMQP 的 RabbitMQ 分布式消息系统实战

在分布式系统中&#xff0c;服务间的解耦与异步通信是关键挑战。RabbitMQ 作为一款成熟的消息中间件&#xff0c;凭借其灵活的交换器模型&#xff08;Direct/Fanout/Topic&#xff09;、可靠的消息传递机制&#xff08;持久化、确认机制&#xff09;和丰富的客户端支持&#xf…

计算机网络:天气预报

一、预期结果程序运行输入所要查询的地点&#xff0c;然后出现三个选项实时天气、未来天气、生活指数。二、实现思路&#xff08;一&#xff09;Ubuntu中利用NOWapi服务器获取访问数据api地址&#xff0c;然后创建客户端利用TCP、IPV4协议分别访问实时天气&#xff0c;未来天气…

GD32VW553-IOT OLED移植

1.前言 本来想用他自身的硬件I2C实现的&#xff0c;但是不知道为啥跑demo一点波形都没有&#xff0c;改成推挽也没有波形&#xff0c;只有初始化的电平变化&#xff0c;而且I2C的驱动库好像有点复杂&#xff0c;起始信号结束信号都得单独发的&#xff0c;没有一个全部封装好的库…

刀客doc:Instagram会成为Meta广告业务的第二曲线吗?

文/刀客doc(头条深一度精选作者)一如果现在还用“Facebook的小弟”来定义Instagram&#xff0c;多少显得有些过时了。在和一些出海品牌负责人聊天时&#xff0c;我有个很明显的感受&#xff1a;他们已经不会再把Instagram当成“附属资源”去看待。到2025年第二季度&#xff0c;…