独立看门狗 IWDG

独立看门狗介绍

Q:什么是看门狗?

A:可以理解为对于一只修勾的定时投喂,如果不给它吃东西就会狂叫,因此可以通过观察修勾的状态来判断喂它的人有没有正常工作。

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造 成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会 造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测 的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗” (watchdog) 独立看门狗工作在主程序之外,能够完全独立工作,它的时钟是专用的低速时钟(LSI),由 VDD 电压供电, 在停止模式和待机模式下仍能工作。

独立看门狗本质

本质是一个 12 位的递减计数器,当计数器的值从某个值一直减到0的时候,系统就会产生一个复 位信号,即 IWDG_RESET

如果在计数没减到0之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们 经常说的喂狗。

独立看门狗框图

独立看门狗时钟 

独立看门狗的时钟由独立的RC振荡器LSI提供,即使主时钟发生故障它仍然有效,非常独立。启用 IWDG后,LSI时钟会自动开启。LSI时钟频率并不精确,F1用40kHz。

LSI经过一个8位的预分频器得到计数器时钟。

预分频寄存器

低三位有效,因此可以组成8组分频组合

 分频系数算法:

prer是IWDG_PR 的值;PSC就是就是预分频因子的值

比如IWDG_PR = 000,值为0,PSC=预分频因子=4*2^0=4*1=4

重装载寄存器

重装载寄存器是一个12位的寄存器,用于存放重装载值,低12位有效即最大值为4096,这个值 的大小决定着独立看门狗的溢出时间。 

键寄存器 

键寄存器IWDG_KR可以说是独立看门狗的一个控制寄存器,主要有三种控制方式,往这个寄存器 写入下面三个不同的值有不同的效果。

 溢出时间计算公式:

计数一次,经过的时间就是f/PSC

Tout 单位为秒

是固定的,为40k赫兹

PSC 是通过预分频寄存器设置的,需要算

RLR 是通过重装载寄存器设置的,需要算

独立看门狗实验

需求

开启独立看门狗,溢出时间为1秒,使用按键1进行喂狗。

设置溢出时间

PSC = 64; RLR = 625时,Tout为1秒不止这一种组合,只要能凑成1秒且符合寄存器限制的值都可以

CubeMX

1. 惯例设置 + 配置按键的GPIO口 + 开一路串口

2. 点击左侧的“IWDG”,然后选择“Activated”

3. 在下侧设置PSC和RLR:

Keil

1. 在main.c中的main函数中,可以看到自动生成的 对于看门狗的初始化:

2. 写代码:

#include "string.h"int main(void)
{HAL_UART_Transmit(&huart1, "start start\r\n", strlen("start start\r\n"), 100);while (1){if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET){HAL_IWDG_Refresh(&hiwdg); //喂狗}HAL_Delay(50);}
}

实现效果

串口助手中:

可见,没有写在WHILE(1)里的串口信息在一直显示,这说明由于没有喂狗,程序在不停的一直重启;此时如果能每秒按一下KEY1,串口就不会再有信息,程序会正常运行,但只要超过一秒没按按钮,看门狗就会使得程序重启。

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

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

相关文章

Pixi + Tone 实现简单midi音频可视化

依赖库 Pixi.js 是一个前端图形渲染库,使用精灵技术绘制高性能的图形。Tone.js是一个前端音频框架,对web audio api进行了封装,可以快速创建音频样本、音频效果、进行音频分析和音频播放。tonejs/midi是tonejs的一个插件,可以讲m…

解决小程序 scroll-view 里面的image有间距、小程序里面的图片之间有空隙的问题。

1)小程序 image跟view标签上下会有间隙,解决方法如下: 在image那里设置vertical-align:top/bottom/text-top/text-bottom 原因:图片文字等inline元素默许是跟父级元素的baseline对齐,而baseline又和父级底边有必定间距…

http1.0、http1.1 http 2.0

HTTP/1.0是无状态、无连接的应用层协议。 无连接 无连接:每次请求都要建立连接,需要使用 keep-alive 参数建立长连接、HTTP1.1默认长连接keep-alive   无法复用连接,每次发送请求都要进行TCP连接,TCP的连接释放都比较费事&…

【测试开发】测试用例的设计方法

目录 一. 测试用例的基本要素 二. 测试用例的设计方法 1. 测试用例设计的万能公式 水杯测试用例 2. 基于需求的设计方法 邮箱注册测试用例 3. 等价类方法 有效等价类和无效等价类 等价类思想设计测试用例步骤 4. 边界值方法 边界值思想设计测试用例步骤 5. 判定表方法…

120、仿真-51单片机温湿度光照强度C02 LCD1602 报警设计(Proteus仿真+程序+元器件清单等)

方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节…

基于ChatGPT上线《你说我猜》小游戏

摘要 AIGC、GPT、休闲小游戏三者可以怎么结合? AIGC、GPT与小游戏的结合为游戏体验带来了新的可能性。AIGC(Artificial Intelligence Game Content)作为一种人工智能技术,可以自动生成任务、剧情和角色对话等游戏元素&#xff0c…

【嵌入式Qt开发入门】Qt如何网络编程——建立TCP通信服务端(附项目代码)

TCP 简介 TCP 协议(Transmission Control Protocol)全称是传输控制协议是一种面向连接的、可靠的、 基于字节流的传输层通信协议。 TCP 通信必须先建立 TCP 连接,通信端分为客户端和服务端。服务端通过监听某个端口来监听是否有客户端连接到来…

Java正则表达式MatchResult的接口、Pattern类、Matcher类

Java正则表达式MatchResult的接口 java.util.regex.MatchResult接口表示匹配操作的结果。 此接口包含用于确定与正则表达式匹配的结果的查询方法。可以看到匹配边界,组和组边界,但不能通过MatchResult进行修改。 接口声明 以下是java.util.regex.Matc…

Flask结合gunicorn和nginx反向代理的生产环境部署及踩坑记录

个人博客:https://xzajyjs.cn 前言 之前自己写的flask使用gunicorn上线生产环境没有什么问题,但是最近搭建了一个现成的flask项目,当使用python直接运行时不会有问题,而使用gunicorn时则会出现一些问题。 部署过程 运行测试 这…

XUbuntu22.04之解决蓝牙鼠标不停掉线问题(追凶过程)(一百八十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

JDY-31 蓝牙传输模块的使用、调试和传输

JDY-31 蓝牙基于蓝牙 3.0 SPP 设计,这样可以支持 Windows、Linux、android 数据透传, 工作频段 2.4GHZ,调制方式 GFSK,最大发射功率 8db,最大发射距离 30 米,支持用户通过 AT 命令修改设备名、波特率等指令…

2023年Mac上有哪些优质的工具(一)

Downie 4 专门用来下载视频的,各大视频网站上的视频只要粘贴地址就可以直接下载,并且可以选择清晰度,再也不用受百度云的气了,下载速度非常快,让工作效率大大提高。 Xmind 大家熟知的一款思维导图软件,他…