STM32的窗口看门狗详解及案例(基于HAL库)

2024-09-05 13:36

本文主要是介绍STM32的窗口看门狗详解及案例(基于HAL库),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、引言

二、窗口看门狗的工作原理

1.基本概念

2.功能描述

3.窗口值和计数器初始值

三、STM32F429 HAL 库中窗口看门狗的配置步骤

1.开启时钟

2.初始化窗口看门狗 

3.开启早期唤醒中断

4.喂狗操作 

四、窗口看门狗的应用场景 

1.防止软件死锁

2.检测外部干扰

3.提高系统可靠性

五、注意事项

1.时间窗口的设置

2.喂狗操作的时机

3.早期唤醒中断的处理

六、总结


一、引言

        在嵌入式系统开发中,确保系统的稳定性和可靠性至关重要。STM32 系列微控制器提供了多种功能来实现这一目标,其中窗口看门狗(WWDG)是一种有效的手段,可以在系统出现异常时及时复位系统,防止系统崩溃。本文将详细介绍 STM32 窗口看门狗的工作原理,并结合 STM32F429 和 HAL 库给出一个具体的案例。

二、窗口看门狗的工作原理

1.基本概念

  • 窗口看门狗是一种定时器,用于监测系统的运行状态。它通过在特定的时间窗口内检查系统的喂狗操作来判断系统是否正常运行。
  • 与独立看门狗不同,窗口看门狗具有一个时间窗口,只有在这个时间窗口内进行喂狗操作才是有效的。如果在窗口之外进行喂狗操作,或者在规定的时间内没有进行喂狗操作,窗口看门狗将触发系统复位。

2.功能描述

如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置’1’), 并且当7位(T[6:0])递减计数器从
0x40翻转到0x3F(T6位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄存器中的数
值时重新装载计数器,将产生一个复位。

3.窗口值和计数器初始值

计数器初始值确定了窗口看门狗开始递减计数的起点。

窗口值是最早可以喂狗不导致复位的值。

窗口值必须设置0x40以上的值,因为计数器低于0x40以后就会自动复位,所以窗口值设置小于0x40的话没有意义。

窗口看门狗的下窗口值为0X40,上窗口值为我们设置的窗口值,只有喂狗的时候,计数器的递减值处于上窗口值与下窗口值之间时,才不会导致复位。

例如我们设置计数器初始值为0x7F,然后设置窗口值为0x5F,在喂狗的时候,计数器的值应处于0X40到0X5F之间的时候,才不会导致复位。如下图所示:

 

 

三、STM32F429 HAL 库中窗口看门狗的配置步骤

1.开启时钟

在使用窗口看门狗之前,需要先开启相关的时钟。在 STM32F429 中,可以通过以下代码开启窗口看门狗时钟:

__HAL_RCC_WWDG_CLK_ENABLE();

2.初始化窗口看门狗 

使用 HAL 库提供的函数HAL_WWDG_Init()来初始化窗口看门狗。这个函数需要一个WWDG_HandleTypeDef类型的结构体指针作为参数,该结构体包含了窗口看门狗的配置信息。

以下是一个初始化窗口看门狗的示例代码:

WWDG_HandleTypeDef hwwdg;hwwdg.Instance = WWDG;
hwwdg.Init.Prescaler = WWDG_PRESCALER_8;
hwwdg.Init.Window = 0x5F;
hwwdg.Init.Counter = 0x7F;
hwwdg.Init.EWIMode = WWDG_EWI_ENABLE;HAL_WWDG_Init(&hwwdg);

在这个例子中,设置了窗口看门狗的预分频系数为 8,窗口值为 0x5F,计数器初始值为 0x7F,并启用了早期唤醒中断(EWI)模式。

(3)窗口看门狗计算公式 

Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;

Twwdg:WWDG 超时时间(单位为 ms)
Fpclk1:APB1 的时钟频率(单位为 Khz)
WDGTB:WWDG 的预分频系数
T[5:0]:窗口看门狗的计数器低 6 位

由STM32F429为例,时钟源为Fpclk1=45Mhz,分频系数8,4096*8/45000000=0.072818,一个时钟周期就是728.18 us,从0X7F到0X5F需要用32个时钟周期,728.18*32=23.3ms,从0X7F到0X3F需要64个时钟周期,728.18*64=46.6ms,所以喂狗最早需要间隔23.3ms,最大间隔为46.6ms,小于23.3ms或者大于46.6ms喂狗都会导致系统复位

3.开启早期唤醒中断

如果启用了早期唤醒中断模式,可以通过以下代码开启早期唤醒中断:

HAL_NVIC_SetPriority(WWDG_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(WWDG_IRQn);

4.喂狗操作 

在系统正常运行时,需要在规定的时间窗口内对窗口看门狗进行喂狗操作。可以使用HAL_WWDG_Refresh()函数来进行喂狗操作。

以下是一个在主循环中进行喂狗操作的示例代码:

while (1) {HAL_WWDG_Refresh(&hwwdg);// 其他代码
}

四、窗口看门狗的应用场景 

1.防止软件死锁

在复杂的嵌入式系统中,软件可能会出现死锁的情况,导致系统无法正常运行。使用窗口看门狗可以在一定时间内监测系统的运行状态,如果系统出现死锁,窗口看门狗将触发系统复位,从而恢复系统的正常运行。

2.检测外部干扰

外部干扰可能会导致系统出现异常,如程序跑飞、数据错误等。使用窗口看门狗可以在一定时间内监测系统的运行状态,如果系统受到外部干扰,窗口看门狗将触发系统复位,从而避免系统出现严重故障。

3.提高系统可靠性

在一些对可靠性要求较高的应用场景中,如工业控制、医疗设备等,使用窗口看门狗可以提高系统的可靠性,确保系统在出现故障时能够及时恢复正常运行。

五、注意事项

1.时间窗口的设置

时间窗口的设置需要根据系统的实际情况进行调整。如果时间窗口设置得过大,可能会导致系统在出现故障时无法及时复位;如果时间窗口设置得过小,可能会导致系统在正常运行时误触发复位。

2.喂狗操作的时机

喂狗操作需要在规定的时间窗口内进行,否则窗口看门狗将触发系统复位。因此,在进行喂狗操作时,需要确保系统的运行状态正常,并且不会因为其他操作而影响喂狗操作的时机。

3.早期唤醒中断的处理

如果启用了早期唤醒中断,需要在中断服务函数中进行相应的处理。中断服务函数的执行时间应该尽可能短,以避免影响系统的正常运行。

六、总结

        STM32 窗口看门狗是一种非常有效的保障系统稳定性和可靠性的手段。通过合理配置窗口看门狗,可以在系统出现故障时及时复位系统,避免系统出现严重故障。在实际应用中,需要根据系统的实际情况合理设置时间窗口和喂狗操作的时机,以确保窗口看门狗能够正常工作。同时,还需要注意早期唤醒中断的处理,以避免影响系统的正常运行。

 

这篇关于STM32的窗口看门狗详解及案例(基于HAL库)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139107

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP