初学STM32之看门狗

article/2025/10/23 10:22:26

初学STM32之看门狗

一、看门狗概述

1.什么是看门狗

单片机在工作中常常会受到来自外界电磁场的干扰,造成程序跑飞,而陷入死循环,程序的正常运行被打断,使得系统无法正常工作,造成整个系统陷入停滞状态。所以为了对单片运行状态进行实时监测,便产生了一种专门用于检测单片机程序运行状态的模块或者芯片,俗称看门狗(watchdog)
看门狗的作用就是在程序跑飞的情况下,系统复位,程序重新执行。

2.看门狗分类

在STM32中内置两个看门狗,一个是独立看门狗,另一个是窗口看门狗。二者都可以用来检测和解决由软件错误引起的故障。当计数器达到给定的超时值时,出发一个中断或者产生系统复位。
独立看门狗由专用低速时钟驱动的,即使主时钟发生故障它依然有效。独立看门狗适用于看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合。
窗口看门狗由APB1时钟分频后得到的时钟驱动。通过可配置的时间窗口来检测应用程序非正常的操作。窗口看门狗适用于那些要求看门狗在精确计时窗口起作用的程序。

二、看门狗功能描述

1.独立看门狗

  • 在键值寄存器(IWDR_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。
  • 无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。
  • 如果程序异常,就无法正常喂狗,从而系统复位。
    功能框图如图所示:

独立看门狗功能框图

2.窗口看门狗

之所以叫窗口看门狗是因为其喂狗时间是一个有上下限范围的窗口。可以通过设置相关寄存器设定其上限时间(下限时间固定)。
窗口看门狗工作示意图如图所示:


将WWDG_CR寄存器中的WDGA位置’1’则窗口看门狗启动,当出现以下两种情况是窗口看门狗复位。

  • 当喂狗的时候如果计数器的值大于某一设定数值W[6:0]时,此设定数值在WWDG_CFR寄存器定义。
  • 当计数器的数值从0x40减到0x3F时【T6位跳变到0】 。
    注1:如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以用于喂狗以避免WWDG复位。
    注2:上窗口值W[6:0]必须大于下窗口值0x40。否则就无窗口了。
    注3:窗口看门狗时钟来源PCLK1(APB1总线时钟)分频后。
    窗口看门狗功能框图如图所示:

三、看门狗配置过程

1.独立看门狗

  1. 取消寄存器写保护;
  2. 设置独立看门狗的与分频系数,确定时钟;
  3. 设置看门狗重装载值;
  4. 使能看门狗;
  5. 应用程序喂狗;
    具体代码如下:
void IWDG_Init(u8 pr,u16 rel)
{IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(pr);IWDG_SetReload(rel);IWDG_ReloadCounter();IWDG_Enable();
}

喂狗程序在主函数中执行,代码如下:

	while(1){if(Key_Scan(0) == Key0_PRES){delay_ms(20);IWDG_ReloadCounter();//喂狗}}

其中溢出时间计算:Tout=((4×2^prer) ×rlr) /40 (M3)

2.窗口看门狗

  1. 使能看门狗时钟;
  2. 设置分频系数;
  3. 设置上窗口值;
  4. 开启提前唤醒中断并分组;
  5. 使能看门狗;
  6. 清除唤醒中断标志位;
  7. 初始化窗口看门狗 NVIC;
  8. 开启窗口看门狗中断;
  9. 喂狗;
  10. 编写中断服务函数;
    具体代码如下:
void WWDG_Init(u8 tr,u8 wv,u32 pre)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);  //   WWDG时钟使能WWDG_CNT = tr&WWDG_CNT;WWDG_SetPrescaler(pre);	//设置与分频系数WWDG_SetWindowValue(wv);//设置上窗口值,设置看门狗的计数值WWDG_Enable(WWDG_CNT);//使能窗口看门狗,设置比较用窗口值WWDG_ClearFlag();//清除标志位WWDG_NVIC_Init();//开启提前唤醒中断并分组WWDG_EnableIT();	//开启看门狗中断}

其中初始化窗口看门狗NVIC代码如下:

void WWDG_NVIC_Init()
{NVIC_InitTypeDef NVIC_InitStruct;NVIC_InitStruct.NVIC_IRQChannel = WWDG_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStruct.NVIC_IRQChannelSubPriority = 3;NVIC_Init(&NVIC_InitStruct);
}

中断服务函数代码如下:

void WWDG_IRQHandler(void)
{WWDG_SetCounter(WWDG_CNT);WWDG_ClearFlag();LED1 = 0;
}

在中断服务函数中喂狗并再次清除唤醒中断标志位


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

相关文章

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中去 将工具箱文件夹复制到本地计算机中的工具箱目录下,路…

MATLAB自带的遗传算法工具箱(GADS)

目前,遗传算法工具箱主要有三个: 英国谢菲尔德大学的遗传算法工具箱美国北卡罗来纳州立大学的遗传算法最优化工具箱MATLAB自带的遗传算法与直接搜索工具箱(GADS) GADS介绍 本文介绍的是MATLAB自带的遗传算法与直接搜索工具箱&a…

优化算法之遗传算法--入门--工具箱的使用

遗传算法的优点 遗传算法是一种基于生物自然选择与遗传机理的随机搜索与优化方法。遗传算法求解复杂优化问题的巨大潜力及其在工业工程领域的成功应用 ,而受到了广泛关注。Matlab 的遗传算法工具箱具有使用简单方便 ,计算可靠 ,快捷高效和图形结果可视化等特点 ,具有广阔的应用…

matlab遗传算法工具箱

以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。 1理论基础 1.1遗传算法概述 遗传算法(genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代…

遗传算法与Matlab GA工具箱

1 遗传算法(Genetic Algorithm) 1.1简介 GA是一种进化算法,基本原理效仿生物界“物竞天择,适者生存”的演化法则。 一些基本概念 种群population:问题潜在的解集 个体individual:每一个可能的解&#xff0c…

matlab遗传算法工具箱介绍和详细使用方法【matlab优化算法工具箱】

遗传算法概述 工具箱下载地址 遗传算法( genetic algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算…