STM32 看门狗详解

article/2025/10/23 6:33:28

目录

1、IWDG

1.1 独立看门狗简介

1.2 独立看门狗的特点

1.3 独立看门狗功能描述

1.4 硬件看门狗

1.5 寄存器访问保护

1.6 调试模式

2、WWDG

2.1 简介

2.2 窗口看门狗主要特点

2.3 窗口看门狗功能说明

2.4 如何设置看门狗超时

2.5 调试模式

3、区别


1、IWDG

1.1 独立看门狗简介

IWDG(Independent watchdog)独立看门狗,可以用来检测并解决由于软件错误导致的故障,当计数器到达给定的超时值时,会触发一个中断或产生系统复位

独立看门狗的时钟是它专用的低速时钟(LSI),所以它能保持工作及时主时钟出现问题。窗口看门狗的时钟是有APB1时钟分频得到得到,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。

1.2 独立看门狗的特点

①自由运行递减计数器

②时钟来自通过独立的RC振荡器(可以工作在待机和停止模式下)

③当向下计数器值达到0时,会产生复位(如果看门狗已经激活)

1.3 独立看门狗功能描述

上图红框显示,看门狗功能由 VDD 电压域供电,所以在停止模式和待机模式下仍能工作

向关键字寄存器(IWDG_KR)写入0XCCCC,独立看门狗就会启动,计数器开始下降从复位值0XFFF。当计数器值到达0,会产生一个复位信号(独立看门狗复位)

无论何时向关键字寄存器写入0XAAAA,IWDG_RLR的数值会重载进计数器,避免看门狗复位

1.4 硬件看门狗

如果通过器件选项位使能“硬件看门狗”功能,上电时将自动使能看门狗;如果在计数器计数结束前,若软件没有向关键字寄存器写入相应的值,则系统会产生复位

1.5 寄存器访问保护

IWDG_PR 和 IWDG_RLR 寄存器具有写访问保护。若要修改寄存器,必须首先对 IWDG_KR寄存器写入代码 0x5555。而写入其他值则会破坏该序列,从而使寄存器访问保护再次生效。这意味着重装载操作(即写入 0xAAAA)也会启动写保护功能。

状态寄存器指示预分频值和递减计数器是否正在被更新

1.6 调试模式

当微控制器进入调试模式时( Cortex™-M3 内核停止), IWDG 计数器会根据 DBG 模块中的 DBG_IWDG_STOP 配置位选择继续正常工作或者停止工作

下图是LSI在不同分频情况下IWDG超时周期的最小值和最大值。

2、WWDG

2.1 简介

窗口看门狗(Window watchdog)通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的 7 位递减计数器值,也会产生 MCU 复位。这意味着必须在限定的时间窗口内刷新计数器

2.2 窗口看门狗主要特点

①可编程自由向下计数器

②复位条件,激活看门狗的情况下,当递减计数器值小于 0x40 时复位;在窗口之外重载递减计数器时复位。

③提前唤醒中断 (EWI):当递减计数器等于 0x40 时触发(如果已使能且看门狗已激活)

2.3 窗口看门狗功能说明

如果窗口看门狗启动(WWDG_CR寄存器的WDGA位置1),7位向下计数器从0X40向0x3F滚动(T6已经清零),会导致一个复位。如果软件重载计数器,当计数器值大于窗口所存储的值时,就会产生复位

应用程序必须在正常操作期间写WWDG_CR寄存器去组织MCU复位。这个操作必须发生在计数器值小于窗口寄存器值。窗口寄存器值存储在WWDG_CR寄存器,必须在0XFF和0XC0之间。

使能窗口看门狗

复位之后,窗口寄存器经常是禁止的。通过设置WWDG_CR寄存器的WDGA位去使能,不能被禁止除了通过复位。

控制向下计数器

递减计数器处于自由运行状态:即使禁止看门狗,递减计数器仍继续递减计数。当使能看门狗时,必须将 T6 位置 1,以防止立即复位

T[5:0] 位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入 WWDG_CR 寄存器时,预分频值是未知的。配置寄存器 (WWDG_CFR) 包含窗口的上限:为防止发生复位,当递减计数器的值低于窗口寄存器值且大于 0x3F 时必须重载

注意:可使用 T6 位产生软件复位(将 WDGA 位置 1 并将 T6 位清零)

看门狗中断高级特性

如果在产生实际复位之前必须执行特定的安全操作或数据记录,则可使用提前唤醒中断(EWI)。通过设置 WWDG_CFR 寄存器中的 EWI 位使能 EWI 中断。当递减计数器的值为0x40 时,将生成 EWI 中断。在复位器件之前,可以使用相应的中断服务程序 (ISR) 来触发特定操作(例如通信或数据记录)。

在某些应用中,可以使用 EWI 中断来管理软件系统检查和/或系统恢复/功能退化,而不会生成 WWDG 复位。在这种情况下,相应的中断服务程序 (ISR) 可用来重载 WWDG 计数器以避免 WWDG 复位,然后再触发所需操作。

通过将 0 写入 WWDG_SR 寄存器中的 EWIF 位来清除 EWI 中断

2.4 如何设置看门狗超时

例子:APB1的频率是24MHZ,WDGTB[1:0]设置3,T[5:0]设置成63

t = 1/24000*4096*2*2*2*(63+1)= 24.85ms

有关 TWWDG 的最小值和最大值

2.5 调试模式

当微控制器进入调试模式时( Cortex™-M3内核停止),WWDG计数器会根据DBG模块中的DBG_WWDG_STOP配置位选择继续正常工作或者停止工作

3、区别

应用场景不同

IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序

为什么要窗口看门狗?

对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了;

如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。

看门狗代码开源地址:

https://github.com/strongercjd/STM32F207VCT6

点击查看本文所在的专辑,STM32F207教程

关注公众号,第一时间收到文章更新。评论区不能及时看到,需要交流可以到公众号沟通


http://chatgpt.dhexx.cn/article/J3ByG2VB.shtml

相关文章

手把手教你开发stm32——看门狗(基于hal库)

目录: 1.独立看门狗介绍1.1.独立看门狗简介1.2.独立看门狗功能描述1.3.独立看门狗工作框图 2.独立看门狗实验2.1.cubemx配置2.2.具体代码实现 3.独立看门狗的相关寄存器3.1.键寄存器(IWDG_KR)3.2.预分频寄存器3.3.重装载寄存器(IW…

STM32—看门狗详解入门(独立看门狗、窗口看门狗)

目录 一、什么是看门狗? 二、独立看门狗IWDG 1.特点、本质及原理 2.配置 3.main.c代码 三、窗口看门狗WWDG 1.特点、本质及原理 2.配置 3.main.c代码 四、独立看门狗与窗口看门狗的比较 一、什么是看门狗? 看门狗主要是用来监测单片机运行状态…

STM32(七)------- 独立看门狗(IWDG)

独立看门狗 介绍STM32独立看门狗简介原理功能描述IWDG关键寄存器描述键寄存器(IWDG_KR)状态寄存器(IWDG_SR)预分频寄存器(IWDG_PR)重装载寄存器(IWDG_RLR)IWDG寄存器映像和复位值 使用启动 STM32 的独立看门狗应用设计功能设计程序设计 后续 介绍 STM32独立看门狗简介 STM32 …

STM32—窗口看门狗(WWDG)

STM32—窗口看门狗(WWDG) 窗口看门狗(WWDG) STM32—窗口看门狗(WWDG)窗口看门狗(WWDG)WWDG 简介WWDG 功能框图剖析窗口看门狗时钟计数器时钟计数器窗口值计算看门狗超时时间 怎么用 WWDG独立看门狗所用到的库函数窗口看门狗操作步…

初学STM32之看门狗

初学STM32之看门狗 一、看门狗概述 1.什么是看门狗 单片机在工作中常常会受到来自外界电磁场的干扰,造成程序跑飞,而陷入死循环,程序的正常运行被打断,使得系统无法正常工作,造成整个系统陷入停滞状态。所以为了对单…

matlab 工具箱 GATBX 的安装,安装Sheffield Matlab遗传算法工具箱的建议

在通常的遗传算法学习中,可以直接对目标函数进行编写,但是当我们需要使用simulink进行仿真优化需要用到遗传算法时,我这里有两种建议:①在模型中添加sfunction然后使用自己喜欢的语言进行编写;②使用Matlab遗传算法工具…

MATLAB遗传算法工具箱的函数及实例

遗传算法(GA)是一种进化算法,是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 遗传算法把问题参数编码为染色体,利用层层迭代的方式进行选择、…

基于Matlab遗传算法工具箱解决物流中心选址

目录 1.问题 2.建模 3.Matlab编程、求解 1.问题 物流配送中6个客户的位置坐标和配数数量如表1所示,如何设置物流配数中心使得配送量最小。 2.建模 3.Matlab编程、求解 编写目标函数min 遗传算法只能求最小值 function y fun(x)site[52 42 93 62 90 70;…

谢菲尔德遗传算法工具箱函数简介

一 谢菲尔德遗传算法工具箱的主要函数如下表所示: 二 函数介绍—创建种群 1. crtbase 1.1 功能 创建一个所有染色体中最基本的染色体**对应的向量*语法: 1.2 语法 BaseVec crtbase(Lind,Base) 1.3 输入参数 1 L…

matlab遗传工具箱ga,用遗传算法工具箱(GA)识别Bouc-Wen模型微分方程参数

本帖最后由 hgrhgr520 于 2016-3-20 14:30 编辑 Bouc-Wen模型因数字处理方便简单而得到较为广泛的应用,力可以表示为: QQ截图20160320125352.jpg (3.2 KB, 下载次数: 21) 2016-3-20 12:49 上传 利用遗传算法工具箱(GA)对Bouc-Wen模型进行参数识别。 实验数据来源于对磁流变阻…

MATLAB机器学习系列-10:遗传算法原理及其matlab遗传算法工具箱使用

遗传算法原理 基本思想 遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则,它最初由美国Michigan大学的J. Holland教授于1967年提出。遗传算法是从代表问题…

2021-04-26 Matlab遗传算法工具箱的使用及实例(线性规划)

Matlab遗传算法工具箱的使用及实例(线性规划) 引言 在使用遗传算法(Genetic Algorithm,GA)之前,你得了解遗传算法是干什么的。遗传算法一般用于求解优化问题。遗传算法最早是由美国的 John holland于20世纪70年代提出,该算法是根…

遗传算法工具箱_含约束条件的遗传算法在连续催化重整优化操作中的应用

遗传算法(Genetic a lgo rithm s, GA ) 是由Hol-land 教授及其学生首先提出的一种仿照生物学中进化论思想而衍生出的优化算法。遗传算法应用于优化问题的求解, 是一个启发式随机搜索的过程, 与传统的优化搜索算法相比具有可以克服局部最优解的陷阱, 搜索得到全局最优解等特点, …

北卡罗来纳大学遗传算法工具箱

目录 北卡罗来纳大学遗传算法工具箱 gaot 重要函数如下 1.initializega函数介绍 2.ga函数介绍 3.initializega求解一元函数 注:本文的代码可用于matlab 2012a版本 北卡罗来纳大学遗传算法工具箱 gaot 重要函数如下 optimtool(matlab内部封装函数&a…

Matlab遗传算法工具箱求函数最小值

题目 先上代码 %%%%%%%%%%%%%%% %% test.m %% %% Feng1909 %% %%%%%%%%%%%%%%% function result test(a)is_max 0;x a(1);y a(2);PI 3.141592653;if is_max 0result -(sin(3*PI*x)*cos(4*PI*y)cos(5*PI*x*sin(2*PI*y)))*(1);endif is_max 1result (sin(3*PI*x)*c…

简单使用MATLAB自带的遗传算法工具箱

一、使用单变量进行参数寻优 如s = -2x ,当x在[0,1]范围内,取多少时s为最小值? 使用步骤如下: 1、建立一个function函数,命名为fu.m 2、在MATLAB命令窗口输入optimtool,接下来进行选择,选择完后,点击start。 x = 1时,s取-2(最小值) 寻优曲线图如下: 二、使用双变…

谢菲尔德遗传算法工具箱

谢菲尔德遗传算法工具箱的使用 安装工具箱下载工具箱添加路径标题 遗传算法函数ranking()函数select()函数bs2rv()函数小结 安装工具箱 谢菲尔德遗传算法工具箱作为matlab的一个函数库,可以简单实现遗传算法。我一开始学习了粒子群优化算法和鲸鱼优化算法等群智能优…

Matlab遗传算法工具箱的使用

Matlab遗传算法工具箱的使用 遗传算法(Genetic Algorithm,GA)是J.Holland教授1975年在其专著中首次发表,又经Goldberg、DeJong等研究总结形成的一种模拟进化算法,其基于生物进化和物种选择理论模拟自然界基因进化的过程…

Matlab遗传算法工具箱及应用

目录 第一章:遗传算法概述 1.1遗传算法概念; 1.2遗传算法与爬山法的比较; 1.3遗传算法的基本原理与方法; 第二章:遗传算法应用举例 2.1简单一元函数优化实例; 参考资料:Matlab遗传算法工…

谢菲尔德大学的MATLAB遗传算法工具箱(附代码文件)

从今天起我想记录下我的学习历程,将成果总结起来,方便日后复习 关于MATLAB遗传算法的工具箱文件放在文章末尾需要的自取 首先,我先来简单说明下如何将工具箱添加到matlab中去 将工具箱文件夹复制到本地计算机中的工具箱目录下,路…