独立看门狗

一、独立看门狗概述

1、为什么需要看门狗?

单片机的工作易受到外界电磁场干扰,造成程序跑飞,而陷入死循环,造成整个系统陷入停滞状态。出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或芯片,俗称“看门狗(watchdoge)”。监测单片机运行状态,并对不同状态做相应处理以保持运行状态正常运行。

2、看门狗解决的问题及看门狗分类

在系统正常运行时,系统不能复位。在系统跑飞(程序异常执行)的情况,系统复位,程序重新执行。

STM32内置两个“看门狗”:独立看门狗和窗口看门狗,用来监测和解决由软件错误引起的故障,当计时器达到给定的超时值时,触发一个中断或产生系统复位,从而提供了更高的安全性、时间的精确性和使用的灵活性。

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它仍有效。独立看门狗适合用于需要看门狗作为一个在主程序之外能够完全独立工作,并且对时间精度要求低的场合。

窗口看门狗由从APB1时钟分频后得到时钟驱动。通过可配置的时间窗口来监测应用程序非正常的过迟或过早操作。窗口看门狗适合于那些要求看门狗在精确计时窗口起作用的程序。

二、独立看门狗功能描述

1、在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计时器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET

2、无论何时,只要在键值寄存器(IWDG_KR)中写入0xAAAA(通常说的喂狗),自动重装载寄存器(IWDG_RLR)的值就会重新加载到计数器,从而避开看门狗复位。

3、如果程序异常,就无法正常喂狗,从而系统复位

(简单讲,看门狗就像是买保险,平时要持续投钱,当出现无法继续投钱(系统出现异常)时它会自动复位,从而帮你解决问题)

独立看门狗框图

三、寄存器介绍

键值寄存器(IWDG_KR):0~15位有效

预分频寄存器(IWDG_PR):0~2位有效,具有写保护功能,要操作先取消写保护(给时钟分频)

重装载寄存器(IWDG_RLR):0~11位有效,具有写保护功能,要操作先取消写保护

状态寄存器(IWDG_SR):0~1位有效(获取看门狗状态)

键值寄存器(IWDG_KR)

预分频寄存器(IWDG_PR)

重装载寄存器(IWDG_RLR)

状态寄存器(IWDG_SR)

独立看门狗超时时间

溢出时间计算:Tout=((4*2^prer)/32)

时钟频率LSI=32K,一个看门狗时钟周期就是最短超时时间。最长超时间=(IWDG_RLR寄存器最大值)*看门狗时钟周期

四、IWDG独立看门狗操作库函数

void IWDG_WriteAccessCmd(uint16_tIWDG_WriteAccess);//取消写保护,0x5555使能

void IWDG_SetPrescaler(uint8_IWDG_Prescaler);//设置预分频系数,写PR

void IWDG_SetReload(uint16_Reload);//设置重装载值;写RLR

void IWDG_ReloadCounter(void);//喂狗;写0xAAAA到KR

void IWDG_Enable(void);//使能看门狗;写0xCCCC到KR

FlagStatus IWDG_GetFlagStatus(uint16_IWDG_FLAG);//状态;重装载预分频更新

五、独立看门狗操作步骤

1、取消寄存器写保护:

IWDG_WriteAccessCmd();

2、设置独立看门狗的预分频系数,确定时钟:

IWDG_SetPrescaler();

3、设置独立看门狗重装载值,确定溢出时间:

IWDG_SetReload();

4、使能看门狗:

IWDG_Enable();

5、应用程序喂狗:

IWDG_ReloadCounter();

六、代码

void IWDG_Init(u8 prer,u16 rlr){IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//取消写保护IWDG_SetPrescaler(prer);//设置预分频系数IWDG_SetReload(rlr);//设置重装载IWDG_ReloadCounter();//喂狗IWDG_Enable();//使能看门狗
}
int main(void)
{ u8 key;           //保存键值delay_init(168);  //初始化延时函数LED_Init();		//初始化LED端口KEY_Init(); 	//初始化与按键连接的硬件端口delay_ms(1000);//延时1000ms方便肉眼看到闪烁LED0=0;		//先点亮红灯IWDG_Init(4,500);//RLR重装载寄存器计数到0时,设为1秒(最大溢出时间),PR设置位是4,预分频系数/64//时钟为32/64,为0.5KHz,即2ms,所以设为500while(1){if(KEY_Scan(0)==WKUP_PRES){IWDG_ReloadCounter();//WEUP如果检测到按下,就会喂狗,不会产生复位,LED0为常量//如果不按就会复位,LED会灭}delay_ms(10);}
}

独立看门狗

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

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

相关文章

Prometheus+Grafana+AlertManager监控Linux主机状态

文章目录 PrometheusGrafanaAlertManager监控平台搭建开始监控Grafana连接Prometheus数据源导入Grafana模板监控Linux主机状态 同系列文章 PrometheusGrafanaAlertManager监控平台搭建 Docker搭建并配置Prometheus Docker拉取并配置Grafana Docker安装并配置Node-Exporter …

STM32看门狗简述

概述 看门狗一般分为硬件看门狗和软件看门狗,主要用来解决程序CPU异常,程序跑飞挂死等问题,提高系统的可靠性。 硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗…

国内大公司的开源项目一览表(包含mysql读写分离等)

原文地址:http://gad.qq.com/article/detail/34413?sessionUserTypeBFT.PARAMS.239074.TASKID&ADUIN731373934&ADSESSION1508293481&ADTAGCLIENT.QQ.5533_.0&ADPUBNO26719 奇虎360 https://github.com/Qihoo360 1.MySQL中间层 Atlas Atlas是由 Qih…

BAT、360、新浪 小米 网易等大公司开源项目

阿里巴巴开源的好软件太多,请自行选择所需,我列几个我们用的 阿里巴巴 Alibaba https://github.com/alibaba/ https://github.com/thx 1.分布式key/value存储系统 Tair Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规…

【GeoDa实用技巧100例】022:geoda生成空间权重矩阵(邻接矩阵、距离矩阵)

geoda生成空间权重矩阵(邻接矩阵、距离矩阵),车式矩阵、后式矩阵、K邻接矩阵。 文章目录 一、概述二、“车式”邻接的gal文档生成三、“后式”邻接gal文档生成四、k最近邻居gat文档生成五、查看gal和gat文档一、概述 空间权重矩阵(或相应的表格形式)一般需要用计算机软件生…

一些官方的github地址

阿里巴巴开源github地址:https://github.com/alibaba 腾讯开源github地址:https://github.com/Tencent 奇虎360github地址:https://github.com/Qihoo360 小米开源github地址:https://github.com/XiaoMi 豆瓣开源github地址:https://github.com/douban 网易开源github地址…

32、启用 HTTP 响应压缩和编程式配置Web应用

★ 启用HTTP压缩 就是前端页面如果改动的比较多,那么响应就会比较慢,可以通过设置HTTP响应压缩来提高响应,如果前端改动少,那么就不需要启动这个响应压缩。 目的:为了提高HTTP响应数据在网络上的传输效率。▲ 设置如…

Android Jetpack Compose中使用字段验证的方法

Android Jetpack Compose中使用字段验证的方法 数据验证是创建健壮且用户友好的Android应用程序的关键部分。随着现代UI工具包Jetpack Compose的引入,处理字段验证变得更加高效和直观。在这篇文章中,我们将探讨如何在Android应用中使用Jetpack Compose进…

快速搭建 Linux 学习平台

最近换了一个新的笔记本电脑,原来的学习环境没了,所以就重新搭建一下,顺便把这个过程给记录下来,希望可以帮助有需要的人。一个学习环境最主要的目的是简化学习需要准备的时间,不需要花费太多的时间在哪些不必要的细枝…

ZD Soft Screen Recorder 注册汉化版 【好用的屏幕录制软件】

ZD Soft Screen Recorder 汉化版捕获计算机屏幕上的内容与声音,并保存为各种格式压缩的视频文件。你在屏幕上看到的一切都可以在高帧速率连续进行记录。其结果视频在记录时间内清晰再现画面内容,所以是声音。 ZD Soft Screen Recorder 也能够拍摄图像的截…

树莓派控制ZD-8731两相步进电机驱动器

之前写过一篇驱动步进电机的文章,可以跟这篇参考着看。请戳这里! 一、硬件: 树莓派3B ZD-8731驱动器 与驱动器配套的步进电机 电源 驱动器需要24V电源供电(用电很危险,请注意安全!) 二、…

linux内核编译无线网卡,ZD1211B芯片USB无线网卡Linux驱动的编译

我用的无线网卡芯片是zd1211b的,在网上找到很多驱动都不好用,最后在这里上找到好用的驱动 我们用的Linux内核是2.6.14的。驱动的交叉编译非常简单,在其Makefile中修改交叉编译器,然后把相应的KERNEL_SOURCE,MODPATH&am…

c -2 数组 指针 %zd 结构体

数组的初始化方式 初始化方式 int a[3] {10, 9, 6};int a[3] {10,9};int a[] {11, 7, 6};int a[4] {[1]11,[0] 7}; 数组与函数 数组作为函数参数,可以省略元素个数. 数组作为函数参数.传递是整个数组的地址,修改函数形参, 数组元素的值,会影响到外面的实参数组. 数组当做函…

特别好用的录屏软件--ZD Soft Screen Recorder_8.0

亲测,特别好用的一款录屏软件,大小仅有2.14M 免安装,即开即用 下载地址:https://download.csdn.net/download/smwykao/10391461

ORCALE触发器使用生成自增长的编号('zd20183290001')

本人是个新手,大佬们多多关照! 目前在学习oracle数据库,现在简单的使用触发器来生成字符串自增长编号(zd20183290001); -- 1. 首先创建一个用户表:TEST_USER;字段:ID,NAME DROP TABLE TEST_USER; CREA…

VE 海外新闻 ZD活动

ZD运动 在上一期也有介绍最近在产业界中,作为成本降低的一种手Zero Defects(ZD)运动开始急速流行了起来。 ZD运动最初开始于1962年左右,是在美国国防产业的龙头企业马丁公司的奥兰多事业部开始的。之后ZD运动不仅局限于制造领域&a…

发光二极管pcb封装图画法_电子元器件认识与使用ZD43 | 贴片74HC138 原理图PCB库 封装尺寸 | 视频教程...

购买电子芯原创视频教程完整版后,进专属答疑群,答疑为长期永久答疑,任何关于教程学习的问题都可以问。 答疑方式如下: 1、通过微信群语音或者文字的形式进行答疑(简单的问题); 2、通过微信私信我,语音或者文…

移植SFUD,驱动SPI FLASH ZD25WQ80

1、关于SFUD SFUD (Serial Flash Universal Driver) 串行 Flash 通用驱动库,支持众多spi flash,关于SFUD的详细资料可参考:https://github.com/armink/SFUD。 2、为什么会有通用驱动 JEDEC (固态技术协会)针对串行 …

stm32hal库应用笔记之 硬件I2C读写ZD24C64

话不多说 直接上资料 这是ZD24C64 数据手册里面的读写操作时序。 数据手册网上有很多相信大家也能随便就找到。 如下图所示: 这是使用iic按字节写操作 器件地址:我的是0xA0 来不及解释了赶快上车: 在下使用的是STM32_CubeIDE,个人觉得还是…

ZD680无人机组装调试流程

在权盛电子店里买了ZD680无人机套装,记录拼装调试的大体流程。 下面部分操作说明来源于权盛电子提供的教程。 一、配置清单 机架:ZD680,轴距680mm,机臂直径20mm,材质碳纤,载重3kg 电机:致盈…