独立看门狗与窗口看门狗

一、简介

STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

二、独立看门狗

独立看门狗由专门的低速时钟(LSI)驱动,即便是主时钟发生故障它仍能够有效,所以此狗狗可以工作在与主时钟无关的要求下,或者待机模块下。
独立看门狗一旦开启,只能由MCU复位后才清除,让它不再工作。
独立看门狗的时钟是一个内部RC时钟,它会在30KHZ到60KHZ之间变化,并非是精确的40KHZ,而只是一般计算时取40KHZ。
喂狗时间计算:
1S喂狗所需的计数:40K/(42^预分频值);
喂狗时间=重装载值/1S喂狗所需的计数
例IWDG_Init(4,625); 与分频数4,重载值为625,溢出时间为1s
40K/(4
2^4)=625 625/625=1S
独立看门狗需要设置四个寄存器:
1、预分频寄存器(IWDG_PR),其低三位PR[2:0](Prescaler divider)有效。可设置4、8、16、32、64、128、256多种预分配系数。
2、重装载寄存器(IWDG_RLR)低12位RL[11:0]: 用来设置计数器的重装载值。
3、键寄存器(IWDG_KR),用来控制去除IWDG_PR和IWDG_RLR写保护功能以便正常写值。 向此寄存器写入0x5555则暂时去除IWDG_PR和IWDG_RLR的写保护功能才可向两个寄存器中写值;
向此寄存器写入0xAAAA则IWDG_RLR的值会重装载,防止MCU复位;
向此寄存器写入0xCCCC是开启狗立看门狗动作;
4、状态寄存器(IWDG_SR)最低两位有效RVU: 看门狗计数器重装载值更新 (Watchdog counter reload value update) 标识位和PVU: 看门狗预分频值更新(Watchdog prescaler value update) 标识位,分别用来指示此时是否可向IWDG_RLR 和 IWDG_PR写值,此寄存器由硬件置1与清0,只有当为0时才可向上面两个寄存器写值。

void IWDG_Init(u8 prer,u16 rlr) 
{	
//向键寄存器(IWDG_KR)写入0x5555使能对寄存器IWDG_PR和IWDG_RLR的写操作 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 
//设置IWDG预分频值:设置IWDG预分频值为64 	IWDG_SetPrescaler(prer);  //设置IWDG重装载值IWDG_SetReload(rlr);   
//向键寄存器(IWDG_KR)写入0xAAAA,重装载IWDG计数器  IWDG_ReloadCounter();  //向键寄存器(IWDG_KR)写入0xCCCC是开启狗立看门狗动作IWDG_Enable();  //使能IWDG
}
//喂独立看门狗
void IWDG_Feed(void)
{   IWDG_ReloadCounter();										   
}

三、窗口看门狗

在这里插入图片描述

窗口看门狗是用APB1总线驱动的,时钟频率最大36MHz。窗口看门狗的有两个值:窗口的上限值,上限值由用户独立设置;窗口的下限值,下限值固定为0X40。
窗口看门狗计数器的值必须在上限值和下限值之间才可以喂狗,这就是窗口看门狗中窗口两个字的含义。
窗口看门狗递减计数器递减到 0X40 的时候,还不会马上产生复位,如果使能了提前唤醒中断: CFR 位 9EWI 置 1,则产生提前唤醒中断。
在这里插入图片描述

1、使能 WWDG 时钟
WWDG使用的是 PCLK1 的时钟,需要先使能时钟。
void RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
2设置分频数:配置寄存器(WWDG_CFR)的第8位和第7位WDGTB[1:0]
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);
3、设置看门狗的窗口上限值:设置窗口值:配置寄存器(WWDG_CFR) 第0至第6位
void WWDG_SetWindowValue(uint8_t WindowValue);
4、开启 WWDG 中断:配置寄存器(WWDG_CFR) 第9位
void WWDG_EnableIT();
5、中断优先级配置,
WWDG_NVIC_Init();
6、设置计数器初始值并使能看门狗:控制寄存器(WWDG_CR) 第0至第7位
void WWDG_Enable(uint8_t Counter);
7、 编写中断服务函数
通过该函数来喂狗,在中断服务函数里将状态寄存器的 EWIF 位清空。

void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{ 
//   WWDG时钟使能	
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);  
//设置IWDG预分频值:配置寄存器(WWDG_CFR)的第8位和第7位WDGTB[1:0]WWDG_SetPrescaler(fprer);
//设置窗口值:配置寄存器(WWDG_CFR) 第0至第6位WWDG_SetWindowValue(wr);	
//使能看门狗 ,设置计数器初值:控制寄存器(WWDG_CR)  第0至第7位               
WWDG_Enable(tr);	 
//状态寄存器(WWDG_SR) 0位   提前唤醒中断标识清零WWDG_ClearFlag();    
//初始化窗口看门狗 NVICWWDG_NVIC_Init();
//开启窗口看门狗中断  配置寄存器(WWDG_CFR) 第9位} WWDG_EnableIT(); 
}
//重设置WWDG计数器的值
void WWDG_Set_Counter(u8 cnt)
{WWDG_Enable(cnt);	 
}
//窗口看门狗中断服务程序
void WWDG_NVIC_Init()
{NVIC_InitTypeDef NVIC_InitStructure;//WWDG中断NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;    //抢占2,子优3,组2NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;	 //抢占2,子优先级3,组2NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);//NVIC初始化
}void WWDG_IRQHandler(void)
{// Update WWDG counterWWDG_SetCounter(0x7F);	  //当禁掉此句后,窗口看门狗将产生复位// Clear EWI flag */WWDG_ClearFlag();	  //清除提前唤醒中断标志位
}

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

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

相关文章

buuctf-Misc 题目解答分解106-108

106.[DDCTF2018]流量分析 提示了私钥 ,无厘头,先不管了,应该是流量加密了,用wireshark 打开 看看,真个数据流量,没有http 直接找到TCP 协议的包追踪一下TCP 找到TCP 不是红色的包追踪,大量的数…

指增的超额来自于哪里,2024的乾坤九法,美股的宏观估值双杀

图片截止到:2024/1/4 上证 周四 -0.43% 市场热点分析 1. 2024元旦后国内外市场都出现了不同程度的下跌。技术面国内市场一直走在72日均线之下,而且没有形成底部,熊市还会延续。宏观方面,12月官方PMI持续向下,小企业更多…

DBA技术栈(二):MySQL 存储引擎

2.1 MySQL存储引擎概述 上个业余的图: MyISAM 存储引擎是 MySQL 默认的存储引擎,也是目前 MySQL 使用最为广泛的存储引擎之一。他的前身就是我们在 MySQL 发展历程中所提到的 ISAM,是 ISAM 的升级版本。在 MySQL最开始发行的时候是 ISAM 存…

ArrayList学生管理系统

文章目录 1.ArrayList集合和数组的优势对比:1.1 ArrayList类概述1.2 ArrayList类常用方法1.2.1 构造方法1.2.2 成员方法1.2.3 示例代码 1.3 ArrayList存储字符串并遍历1.3.1 案例需求1.3.2 代码实现 1.4 ArrayList存储学生对象并遍历1.4.1 案例需求1.4.2 代码实现 1…

集合的三种遍历方式

迭代器(Iterator) 概述:Iterator 是个接口,迭代器是集合的专用遍历方式 使用方法,我们想要使用迭代器,必须首先得到集合对象,通过集合对象生成迭代器对象,才能进行集合的遍历 常用…

苹果电脑菜单栏应用管理软件Bartender 4 mac软件特点

Bartender mac是一款可以帮助用户更好地管理和组织菜单栏图标的 macOS 软件。它允许用户隐藏和重新排列菜单栏图标,从而减少混乱和杂乱。 Bartender mac软件特点 菜单栏图标隐藏:Bartender 允许用户隐藏菜单栏图标,只在需要时显示。这样可以…

全网独家:基于openeuler-20.03-lts底包构建opengauss数据库V5.0.1LTS的单机容器

近期想测试一下opengauss数据库,官网上单机容器部署只有x86-64平台CentOS 7.6和ARM64平台 openEuler20.03 LTS两种底包方案。本文系全网独家在x86平台上基于openeuler-20.03-lts底包构建opengauss数据库V5.0.1LTS的单机容器。 opengauss官网上单机容器部署只有x86-64平台Cent…

Proxy 与 defineProperty 的理解、区别、优势、劣势

一、Object.defineProperty() 文档:Object.defineProperty() - JavaScript | MDN 作用:对一个对象进行操作的方法。可以为一个对象增加一个属性,同时也可以对一个属性进行修改和删除。 它是在 ES5 中引入的,使用了 getter 和 s…

P10 RV1126推流项目——ffmpeg输出参数初始化

前言 从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程(概念类)_C…

1.3 金融数据可视化

跳转到根目录:知行合一:投资篇 已完成: 1.1 编程基础   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas 1.2 金融数据处理 1.3 金融数据可视化 文章目录 1. 金融数据可视化1.1. matplotlib1.1.1. 沪深300走势图1.1.2. 日线均线…

C++算法学习五.二叉树(1)

1.二叉树理论基础 二叉树的种类: 满二叉树:一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。深度为k,总共有2的k次幂-1个节点。 完全二叉树:在完全二叉树中…

公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......

5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面掌握数据库等方面的技能,如果技能再高些的话,甚至熟悉分…

[Javaweb/LayUI/上机考试作业/开源]学生/图书/课程/仓库等管理系统六合一基础功能通用模板

展示 考试要求 给定用户表和六张图书/教师/顾客/仓库....的表(随机给每人抽选),要求实现用户登录注册,异步更新,对物品增删改查,精确/模糊查询等。 环境 tomcat 9 mysql 8 java 17 项目结构 项目类图 写前…

Python学习笔记(五)函数、异常处理

目录 函数 函数的参数与传递方式 异常处理 函数 函数是将代码封装起来,实现代码复用的目的 函数的命名规则——同变量命名规则: 不能中文、数字不能开头、不能使用空格、不能使用关键字 #最简单的定义函数 user_list[] def fun(): #定义一个函数&…

Python正则表达式急速入门~正则居然这么容易掌握!

正则表达式在程序开发中会经常用到,比如数据(格式)验证、替换字符内容以及提取字符串内容等等情况都会用到,但是目前许多开发人员对于正则表达式只是处于了解或者是基本会用的阶段。一旦遇到大批量使用正则表达式的情况&#xff0…

Python初探:从零开始的编程奇妙之旅

一、Python是什么 Python是一门多用途的高级编程语言,以其简洁、易读的语法而脱颖而出。在深度学习领域,Python扮演着至关重要的角色。其丰富的科学计算库(如NumPy、Pandas、Matplotlib)和强大的深度学习框架(如Tenso…

xshell设置终端类型为xterm-256color (解决oh-my-tmux颜色失真问题)

文章目录 问题描述解法效果检验 问题描述 在xshell远程连接服务器时,tmux色彩有问题(tmux配置为Oh my tmux),如下: 这色彩明显是8位的色彩。 现在终端的标配就是类型为 xterm-256color,其支持256位的真彩…

CSU计算机学院2021年C语言期末题目思路分享(后两道题)

文章目录 E: 实数相加——大数加法的拓展原题题目描述输入输出样例输入样例输出 题目思路实现步骤代码和注释 F: 谍影寻踪——链表的思想和运用原题题目描述输入输出样例输入样例输出 题目思路 一点感想 E: 实数相加——大数加法的拓展 原题 题目描述 C语言就要期末考试了&a…

深入探究:使用大型AI模型的实战指南

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在今天的技术领域,大型AI模型已成为…