11.窗口看门狗-WWGD

news2024/11/17 21:33:47

1.窗口看门狗概述:

(1)之所以称为窗口是因为其喂狗时间是一个有上下限的范围内(窗口),可以通过设定相关寄存器,设定其上限时间(下限时间固定)。喂狗的时间不能过早也不能过晚。而独立看门狗限制喂狗时间在0-x内,x由相关寄存器决定,喂狗时间不能过晚。

(2)窗口看门狗示意图:

(3)窗口看门狗框图:

 

 2.窗口看门狗工作过程总结:

STM32F的窗口看门狗中有一个7位的递减计数器T[6:0],它会在出现下述2中情况之一产生看门狗复位:

  1. 当喂狗的时候如果计数器的值大于某一设定数值W[6:0]时,此设定数值在WWDG_CFR寄存器定义。
  2. 当计数器的数值从0x40减到0x3F时[T6位跳变到0]。
  3. 如果启动了看门狗并且运行中断,当递减计数器等于0x40时,产生早期唤醒中断(EWI),它可以用于喂狗以避免WWDG复位。

3.窗口看门狗超时时间计算:

 4.窗口看门狗的必要性:

对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这存在的隐患是有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来。如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。

5.窗口看门狗注意事项:

  1. 上窗口值W[6:0]必须大于下窗口值0x40,否则就无窗口。
  2. 窗口看门狗时钟来源PCLK1(APB1总线时钟)分频后。

6.窗口看门狗常用寄存器:

  1. 控制寄存器WWDG_CR;
  2. 配置寄存器WWDG_CFR;
  3. 状态寄存器WWDG_SR;

7.窗口看门狗的一般配置步骤:

  1. 使能看门狗时钟:RCC_APB1PeriphClockCmd();
  2. 设置分频系数:WWDG_SetPrescaler();
  3. 设置上窗口值:WWDG_SetWindowValue();
  4. 开启提前唤醒中断并分组(可选):WWDG_EnableIT()     NVIC_Init();
  5. 使能看门狗:WWDG_Enable();
  6. 喂狗:WWDG_SetCounter();
  7. 编写中断服务函数:WWDG_IRQHandler();

8.窗口看门狗实验:

当没有进行喂狗时,该程序就不停的复位,就不停的执行主函数;若在有效时间范围内,不停的喂狗,该程序就不会复位。

(1)主函数:

#include "delay.h"
#include "led.h"
#include "wwdg.h"



int main(){
    
    delay_init();   //延时初始化
    LED_Init();     //LED初始化
    WWDG_Init(0x7F,0x5F,WWDG_Prescaler_8);    //窗口看门狗初始化
    delay_ms(500);
    
    while(1){
        
    }       
}

(2)头文件:

#ifndef __WWDG_H
#define __WWDG_H


typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;


void WWDG_Init(u8 tr,u8 wr,u32 fprer);    //窗口看门狗初始化
void WWDG_Set_Counter(u8 cnt);      //重置计数器的值
void WWDG_NVIC_Init(void);    //窗口看门狗中断管理


#endif

(3)窗口看门狗功能初始化:

#include "stm32f10x.h"
#include "wwdg.h"
#include "delay.h"


u8 WWDG_CNT=0x7F;    //保存WWDG计数器的设置值,默认为最大

/*
   功能:窗口看门狗初始化
   变量:tr:计数器值    wr:窗口值   fprer:分频系数   Fwwdg=PLCKL/(4096/2^fprer)
   返回值:无
*/
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{
   //1.使能WWDG时钟
   RCC_APB2PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
   
   //2.初始化WWDG_CNT(将tr的最高位设置为0,其他位保持不变)
   WWDG_CNT=tr&WWDG_CNT;
   
   //3.设置WWDG预分频系数
   WWDG_SetPrescaler(fprer);
   
   //4.设置窗口值
   WWDG_SetWindowValue(wr);
   
   //5.使能看门狗
   WWDG_Enable(WWDG_CNT);
   
   //6.清除提前唤醒标志
   WWDG_ClearFlag();
   
   //7.设置中断服务函数
   WWDG_NVIC_Init();
   
   //8.开启窗口看门狗中断
   WWDG_EnableIT();
   
}



/*
   功能:重新设置WWDG计数器值
   变量:cnt:设置的计数器值
   返回值:无
*/
void WWDG_Set_Counter(u8 cnt)
{
   WWDG_Enable(cnt);
}



/*
   功能:中断函数
   变量:无
   返回值:无
*/
void WWDG_NVIC_Init(void)
{
   NVIC_InitTypeDef NVIC_InitStruct;
   
   NVIC_InitStruct.NVIC_IRQChannel=WWDG_IRQn;    //中断通道->窗口看门狗中断通道
   NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;   //使能
   NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;  //抢占优先级
   NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;      //子优先级
   NVIC_Init(&NVIC_InitStruct);
    
}



/*
   功能:中断函数
   变量:无
   返回值:无
*/
void WWDG_IRQHandler(void)
{
   WWDG_SetCounter(WWDG_CNT);    //提醒喂狗
   WWDG_ClearFlag();    //清除中断唤醒标志
   GPIO_ResetBits(GPIOB,GPIO_Pin_5);
   delay_ms(20);
   GPIO_SetBits(GPIOB,GPIO_Pin_5);
}



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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zigbee模块(CC2530)详解

Zigbee模块(CC2530) 0. Zigbee概述1. 常见的Zigbee模块2. CC2530模块3. STM32使用CC2530模块方法代码模板 0. Zigbee概述 Zigbee是一种无线通信协议,专为低功耗、低数据速率的应用而设计。它工作在2.4 GHz频段,常用于家庭自动化、…

MYSQL-SELECT语句超详解

目录 前言: SELECT语法 示例 单个字段查询 多个字段查询 查询所有字段 没有FROM的SELECT 查询系统时间 数值计算 虚拟表dual WHERE语句 示例 AND OR 比较运算符 AND OR 运算符优先级 IN NOT IN BETWEEN NOT BETWEEN LIKE EXISTS ORDER BY LIMIT …

SpringBoot(三)SpringBoot搭建简单服务端

之前的两篇文章介绍了如何使用ItelliJ社区版创建SpringBoot项目以及SpringBoot的starter。本篇,介绍下如何使用SpringBoot搭建一个简单的服务端,实现一个新用户注册的场景,供前端和移动端去使用。本篇需要你对SpringBoot的starter&#xff0c…

基于LLM构建文本生成系统

背景: 在流量存量时代,内容运营重要性不言而喻。在流量时代,内容可以不要过于多样化和差异化,只需要有足够多的人流量,按流量转化比率来看,1000个人有1%概率转化,素材不变只要增加足够多的流量…

SpringSecurity之概述

概述 是一个功能强大且高度可定制的身份验证和访问控制框架; 是一个专注于为Java应用程序提供身份验证和授权的框架 核心功能 1.认证 2.验证 3.攻击防范 原理解析 SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链; WebAsy…

探索分治算法:解决复杂问题的有效策略

目录 引言: 一. 基本原理: 二. 适用场景: 三. 分治算法的步骤: 四. 示例:归并排序算法 五. 优缺点: 引言: 在计算机科学中,分治算法是一种在解决复杂问题时常被使用的有效策略…

OBU协议-【CWAVE 客户端接口使用手册】Protobuf-CWAVEII版

1. 说明 (Instruction) 本文档针对所有在 OBU上位机进行开发的客户端程序 上位机进行开发的客户端程序 。开发时需使用者 使用谷歌提供的 protobuf工具结合我公司提供的 nebulalink.servercwaveii.proto文 件进行开发。 Protobuf相关介绍: https://www.ibm.com/deve…

springcloud笔记一

涉及到的技术: 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署 所以需要远程调用 注册中心:可以维护每个节点的信息,并且监护节点的状态 配置中心:管理微服务群的配置 服务网关:用户通过服务网关作为入口访问,然后通过路由到…

【三维重建】【深度学习】NeRF_Pytorch代码--预备基础知识

【三维重建】【深度学习】NeRF_Pytorch代码–预备基础知识 给定一个场景的多视角的图像,神经辐射场(NeRF)通过图像重建误差优化一个神经场景表征,优化后可以实现逼真的新视角合成效果。NeRF最先是应用在新视点合成方向&#xff0c…

TrainingOperator--PyTorchJob实现机制分析

前言 由 Pytorch分布式训练(一)_chenxy02的博客-CSDN博客 可知Pytorch分布式训练实现进程间寻址,主要依靠以下 四个参数: MASTER_ADDRMASTER_PORTWORLD_SIZERANK MASTER_PORT和MASTER_ADDR的目的是告诉进程组中负责进程通信协调的核心进程…

SpringBoot:整合 Redis BitMap技术及结合场景:实现签到与统计

⛄引言 本文参考黑马 点评项目 在各个项目中,我们都可能需要用到签到和 统计功能。 签到后会给用户一些礼品以此来吸引用户持续在该平台进行活跃。 签到功能,我们可以通过Redis中的 BitMap功能来实现 一、Redis BitMap 基本用法 ⛅BitMap 基本语法、…

vue+css中通过一个div的hover触发另一个的样式变化

思路 通过触发父div&#xff0c;除了改变父div的背景色外&#xff0c;还同时改变div中i标签的颜色 效果图 原本 hover触发后 html代码 <div class"user_addfrid"><i class"iconfont icon-friend-add"></i> </div> css代码 …

动态地图开发需要注意哪些方面?

动态地图是指可以随时更新和展示地理信息的地图。随着科技的发展和人们对地理信息的需求不断增加&#xff0c;动态地图的开发越来越受到关注。动态地图可以实现多种功能&#xff0c;如实时交通状况的展示、灾害预警、物流配送路线规划等。动态地图的开发需要结合多种技术手段&a…

HummerRisk V1.2.0 发布

经过一个月的时间&#xff0c;1.2.0和大家见面了&#xff0c;在这个版本中我们重做了云资源态势&#xff0c;用全新的2.5D方式来展现云上资源态势及资源关联关系&#xff0c;同时升级了多云合规检测引擎&#xff0c;现在X-PACK中的多云检测可以提升300%的执行速度&#xff0c;规…

自定义MVC

目录 一、MVC概念描述 1、什么是MVC&#xff1f; 2、什么是自定义MVC&#xff1f; 3、自定义MVC有什么用&#xff08;主要用途&#xff09;&#xff1f; 二、MVC三层架构 第一种版本 JSP页面 servlet 结果 第二种版本 JSP代码 servlet 结果 第三种版本 jsp页面 s…

unity Embedded Browser(ZFBrowser)使用相关问题

在使用ZFBrowser的时候 碰到获取不到声音权限的问题 在插件的BrowserNative.cs脚本中&#xff0c;找到commandLineSwitches变量&#xff0c; 只需要开启以下两个配置项&#xff1a; "--enable-media-stream"&#xff1a;允许收集用户的摄像头视频流与mic的音频流。…

【Rust】入门教程-7章

Package、Crate、Module 7.1 代码组织 7.2 路径 根级可以相互访问 super 关键字 pub struct 7.4 use关键字

【Spark大作业】财政收入影响因素分析及预测模型

文章目录 前言一、数据的基本描述性分析1.1 导包与读取数据1.2 数据的基本情况1.3 变量的分布情况1.4 相关性分析 二、数据的预处理2.1 Lasso变量选择模型 三、建立财政收入预测模型3.1 灰色模型3.2 神经网络预测模型 环境搭建Spark pandsAPI接口&#xff08;了解&#xff09;分…

windows本地上传文件到服务器(scp)

命令 1.ssh 用户名ip&#xff1a;远程登录服务器。 ssh root1.15.233.1932.scp 本地文件路径 用户名ip:上传路径 &#xff1a;本地文件与服务器进行传递。 scp C:\a.txt root1.15.233.193:/var/www/html3.本地文件夹上传到服务器 scp -r C:\user root1.15.233.193:/home4…

三防工业平板在哪些行业中得到广泛应用?

随着科技的不断进步&#xff0c;工业平板正逐渐成为各行业中不可或缺的工具。其中&#xff0c;三防工业平板由于其卓越的耐用性和丰富的功能&#xff0c;在许多行业中得到了广泛的应用。本文将重点介绍三防工业平板在以下几个行业中的应用。 三防工业平板在物流行业中发挥着关键…