MCU看门狗

目录

一、独立看门狗(IWDG)

1、IWDG 主要作用 

2、IWDG 主要特性 

3、编程控制

4、注意地方

二、窗口看门狗(WWDG)

1、窗口看门狗作用:

2、窗口看门狗产生复位信号有两个条件: 

3、WWDG 框图 

4、WWDG 将要复位的时间

5、编程控制


一、独立看门狗(IWDG)

1、IWDG 主要作用 

        独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持工作状态。 IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

2、IWDG 主要特性 

(1) 32位(只使用了12位)自由运行递减计数器

(2) 时钟由独立 RC 振荡器(LSI)提供(可在待机和停止模式下运行);

(3) 当递减计数器值达到 0x000 时产生复位(如果看门狗已激活); 

3、编程控制

(1) 初始化

        看门狗超时时间由递减计数器重装载值和时钟预分频器共同决定。例如,STM32F407,LSI=32K,64分频,递减计数器重装载值为500,则超时时间 = 1/32K *64 * 500 = 1s 。

(2) 喂狗

在main的while(1)处喂狗:

  

要在超出时间之内喂狗,否则会触发复位,一般都是在main的while(1)循环内喂狗。

4、注意地方

(1) 某些执行时间特别长的程序,或者while(1)要多喂狗,避免超出时间导致复位;

(2) 在进入低功耗的时候,如果没有按时喂狗,一样会触发复位,所以要注意喂狗时间或者定时喂狗。

二、窗口看门狗(WWDG)

1、窗口看门狗作用

        窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。 WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。

2、窗口看门狗产生复位信号有两个条件

(1) 当递减计数器的数值从 0x40 减到 0x3F 时(T6 位跳变到 0);

(2) 当喂狗的时候计数器的值大于 W[6:0]时,此数值在 WWDG_CFR 寄存器定义。 

        上述的两个条件详细解释是,当计数器的值减到 0x40 时还不喂狗的话,到下一个计数就会产生复位,这个值称为窗口的下限值,是固定的值,不能改变。这个跟独立看门狗类似,不同的是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值 W[6:0]由用户设置。窗口看门狗计数器的上限值和下限值就是窗口的含义,喂狗也必须在窗口之内,否则就会复位。 

3、WWDG 框图 

A:WWDG 有一个来自 RCC 的 PCLK1 输入时钟,经过一个 4096 的分频器(4096 分频在设计时已经设定死了, 图中并没有给出来, 但我们可以通过查看寄存器 WWDG_CFR 的 WDGTB 位的描述知道);

B: 经过一个分频系数可选(1、2、4、8)的可编程预分频器提供时钟给一个 7 位递减计数器;

C:下限值:0x40 就是下限值,递减计数器达到这个值就会产生复位。T6 位就是 WWDG_CR 寄存器的位 6,即递减计数器 T[6:0]的最高位; 

D:上限值:W[6:0] 是 WWDG_CFR 寄存器的低 7 位,用于与递减计数器 T[6:0]比较的窗口值,也就是我们说的上限值,由用户设置。 

4、WWDG 将要复位的时间

①当T[6:0]>W[6:0]是不允许刷新T[6:0]的值,即不允许喂狗,否则会产生复位。 

②只有在 W[6:0]<T[6:0]< 0x3F 这个时间可以喂狗,这就是喂狗的窗口时间。

③当 T[6:0]=0x3F,即 T6 位为 0 这一刻,也会产生复位。 

④计算窗口看门狗的超时公式: 

TWWDG: WWDG 超时时间(单位为 ms); 

TPCLK1: APB1 以 ms 为单位的时钟间隔(即单位为 1 /KHz); 

WDGTB:经过APB1 的分频系数;

T[5:0]:窗口看门狗的计数器低 6 位(T6 位固定 1,范围 0x7F~0x40,对应值 0x3F~0x00);

根据以上公式,计算一下对应当重装值为 0x40 , 分频系数 WDGTB=3 时对应,假 设 TPCLK1= 42MHz , 下 一 个 计 数 将 发 生 复 位 , 到 达 下 个 复 位 的 时 间 是 :1/(42MHz)*4096*2^3*(0+1) =780.19us ;类似地,可以得到在 42MHz 时钟下不同分频值那么可以得到最小-最大超时时间表如表所示: 

表格举例说明:当 WDGTB 等于0的时候,重装载值从0x40跳到0x3F,即1步,就会产生复位,这也是看门狗超时的最小时间;当0x7F跳到0x3F,即64步,就会产生复位,这也是看门狗超时的最大时间;

5、编程控制

(1) 初始化

设置计数器值为 0x7F,窗口寄存器为 0x5F,分频数为 8,然后可由前面的公式得到窗口上限时间 Twwdg=4096×8×(0x7F-0x5F)/42MHz=24.98ms,窗口下限时间 Twwdg=4096×8×(0x7F-0x3F) /42MHz=49.97ms,即喂狗的窗口区间为 24.98~49.97ms。

(2) 使用中断的方式喂狗

        程序使用的是EWIF(提前唤醒中断标志)来喂狗,即当计数器值达到0x40时此位由硬件置1。它必须由软件通过写入0来清零。写入1不起作用。如果不使能中断,此位也会被置1。在窗口看门狗的中断服务函数,通过该函数来喂狗,喂狗要快,否则当窗口看门狗计数器值减到 0X3F 的时候,就会引起软复位了。在中断服务函数里面也要将状态寄存器的 EWIF 位清空。 

十三、DAC

十四、IIS

十五、CAN

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

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

相关文章

STL:优先级队列的实现

STL中优先级队列本质上就是堆。在上一篇博客中讲到过&#xff1a;堆是一种完全二叉树&#xff0c;逻辑结构上看起来像树&#xff0c;但在物理结构中是存储在线性表中。与普通线性表不同的是&#xff0c;堆中数据大小是规律排列的&#xff1a;小堆中每个节点都大于它的父节点&am…

SpringBoot实战:打造企业资产管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

001kafka源码项目gradle报错UnsupportedClassVersionError-kafka-报错-大数据学习

1 报错提示 java.lang.UnsupportedClassVersionError: org/eclipse/jgit/lib/AnyObjectId has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 如…

5 scala的函数式编程简介

与Java一样&#xff0c;Scala 也是使用 Lambda 表达式实现函数式变成的。 1 遍历 除了使用 for 可以对数组、List、Set 进行遍历外&#xff0c;也可以使用 foreach 函数式编程进行遍历&#xff0c;使代码更为简洁。 foreach 的方法签名为&#xff1a; foreach(f: (A) > …

C# Avalonia 折线图

线图开发在C# Avalonia框架中可以通过多种方式实现。由于Avalonia旨在成为跨平台的UI框架&#xff0c;您可以利用多种库和方法来绘制折线图。以下是一个简单的例子&#xff0c;展示了如何在Avalonia应用程序中创建一个基本的折线图。 首先&#xff0c;您需要在Avalonia项目中包…

StarRocks表设计——排序键和数据模型

该篇文章介绍StarRocks-2.5.4版本的数据模型相关内容&#xff0c;有误请指出~ 目录 一、数据模型概述 1.1 四种模型 1.2 排序键 1.2.1 概述 1.2.2 分类 1.2.3 注意事项 二、明细模型 2.1 概述 2.2 适用场景 2.3 建表语句及说明 三、聚合模型 3.1 概述 3.2 适用场…

RPA基础知识学习清单

序号 主题 内容 1 HTML编程基础 HTML基本概念及文档结构 2 HTML标签及表单

Linux线程(1)--线程的概念 | 线程控制

目录 前置知识 线程的概念 Linux中对线程的理解 重新定义进程与线程 重谈地址空间 线程的优缺点 线程的优点 线程的缺点 线程异常 线程的用途 Linux线程 VS 进程 线程控制 创建线程 线程等待 线程终止 线程ID的深入理解 前置知识 我们知道一个进程有属于自己的P…

docker (六)-进阶篇-数据持久化最佳实践MySQL部署

容器的数据挂载通常指的是将宿主机&#xff08;虚拟机或物理机&#xff09;上的目录或文件挂载到容器内部 MySQL单节点安装 详情参考docker官网文档 1 创建对应的数据目录、日志目录、配置文件目录(参考二进制安装&#xff0c;需自己建立数据存储目录) mkdir -p /data/mysq…

计算机毕业设计springboot_vue房屋租赁系统_ku668

1.掌握Html&#xff0c;Css&#xff0c;JavaScript等基础编程语言。 2.掌握Vue框架&#xff0c;node环境&#xff0c;数据库等知识。 3.掌握开发系统的基本流程。 …

动态规划初识心得

今天开始了动态规划算法&#xff0c;经过三道题的洗礼&#xff0c;再加上文档的帮助&#xff0c;我找到了规律(只是从这三道题&#xff0c;并不一定适合所有动态规划)。 比如&#xff1a;509.斐波那契数&#xff1a;对于这道题&#xff0c;一定是要从前向后计算&#xff0c;因…

你了解API测试吗?如何充分的测试一个API?

什么是API&#xff1f; API代表应用程序接口。API是软件系统中的中间层&#xff0c;负责数据源与用户看到的图形用户界面&#xff08;GUI&#xff09;之间的数据通信。换句话说&#xff0c;API是软件的业务层&#xff0c;它在表示层和数据层之间创建连接。 API测试侧重于所谓的…

2.17C语言学习

P1678 烦恼的高考志愿 写完后发现题解里面用的是优先队列或者二分什么的&#xff0c;其实这个题可以贪心&#xff0c;我们把学校的分数线和学生的成绩分别进行排序&#xff0c;然后从前往后遍历&#xff0c;每次比较当前学校的分数与学生成绩的差距和下一个学校的分数与学生成…

111 C++ typename

介绍typename之前&#xff0c;应先了解几个概念&#xff1a; 1. 限定名与非限定名 限定名&#xff0c;顾名思义&#xff0c;是限定了命名空间的名称。 #include <iostream>int main() {std::cout << "Hello world!" << std::endl; } std::限定…

re-captioning技术是什么

参考https://zhuanlan.zhihu.com/p/664192860 模型对图片进行caption操作时&#xff0c;输出的标题一般描述图片中的主体&#xff0c;而忽视了背景、常识关系等更为细节的描述。 图片比较重要的细节的描述应当包括&#xff1a; 物体存在的场景。如&#xff1a;在厨房的水槽&am…

ValueError check_hostname requires server_hostname 报错

一、报错再现 我准备了一个工具环境&#xff0c;这里面有一些工具包需要安装&#xff0c;当我运行一下代码&#xff1a; pip install -r requirements-cpu.txt回车过后&#xff0c;发生了如下报错&#xff1a; ERROR: Exception: Traceback (most recent call last):File &q…

Qt之条件变量QWaitCondition详解(从使用到原理分析全)

QWaitCondition内部实现结构图&#xff1a; 相关系列文章 C之Pimpl惯用法 目录 1.简介 2.示例 2.1.全局配置 2.2.生产者Producer 2.3.消费者Consumer 2.4.测试例子 3.原理分析 3.1.辅助函数CreateEvent 3.2.辅助函数WaitForSingleObject 3.3.QWaitConditionEvent …

阿里云服务器服务费怎么计算的?详细报价解析

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

算法学习(六)前缀和

前缀和 1. 概念 前缀和算法是一种用于高效计算数组前缀和的算法。前缀和是指从数组的起始位置到某一位置的所有元素的和。下面是前缀和算法的基本步骤&#xff1a; 创建一个与原始数组相同长度的前缀和数组。初始时&#xff0c;前缀和数组的第一个元素与原始数组的第一个元素…

001 - Hugo, 创建一个网站

001 - Hugo, 创建一个网站安装hugoWindows系统Macos Hugo博客搭建初始化博客主题安装配置博客各个页面开始创作创建 GitHub Page 仓库本地调试和预览发布内容 教程及鸣谢文字教程视频教程 001 - Hugo, 创建一个网站 这篇文章假设你已经&#xff1a; 了解基本的终端命令行知识&…