独立看门狗及其实现的热启动
独立看门狗的作用是检测出程序的跑飞,并使系统复位,重新开始工作。比如系统受到干扰,程序指针跑向了其他区,从而导致正常的程序逻辑无法执行,没有在规定时间内喂狗,系统会产生复位,进行一次热启动,单片机开始重新工作。
当然独立看门狗只能检测出程序跑到其他区的问题,或者跑到当前逻辑里,恰好也在喂狗时间内,执行了喂狗代码,这样就无法区分了,而其实程序已经出错。在这种应用场景下,就需要窗口看门狗了,用窗口看门狗可以记录某一段代码执行的时间,而避免了上述情况。
现在分析一下独立看门狗的实现。
STM32F103的时钟树如下图1,独立看门狗是取自LSI,而LSI频率为40KHz的RC振荡器。由时钟树可知,看门狗时钟是独立于系统的主时钟的,即使使用的外部时钟初始化失败时,看门狗也能正常工作。其次就是精度问题,RC振荡器,必然是只能用在对时间精度要求较低的应用场合。
图1
独立看门狗模块如下图2:
图2
独立看门狗超时时间表如下图3:
图3
独立看门狗配置代码如下:
void IWDG_Configuration() {IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//使能写下列各寄存器IWDG_SetPrescaler(IWDG_Prescaler_16); //设置时钟分频系数,即40K/16 = 2.5K, 即1T = 0.4msIWDG_SetReload(1000); //设置重载计数值,t = 1000*0.4ms = 0.4sIWDG_ReloadCounter(); //重载寄存器装入重载值,即喂狗 IWDG_Enable(); }
独立看门狗喂狗代码如下:
IWDG_ReloadCounter(); //重载计数值,即喂狗
当系统接收到新参数需要重新开机工作,或者IAP之后需要重新工作时,就要用到热启动,有两种方式:软件复位和看门狗复位。当系统复位后,看门狗相关寄存器也被清零,即再开机后看门狗是不工作的。代码如下:
IWDG_Configuration() //配置并开启看门狗 while(1); //等待看门狗重启
转载于:https://www.cnblogs.com/xyelectric/p/9115167.html
独立看门狗及其实现的热启动相关推荐
- 看门狗(独立看门狗)与窗口看门狗的区别!
看门狗(独立看门狗)与窗口看门狗的区别 在cortex-M系列芯片上有两个看门狗:看门狗(独立看门狗)和窗口看门狗. 1.相同点 都是为了保证CPU程序跑飞 2.独立看门狗 根据内部看门狗时钟频率,装 ...
- stm32 独立看门狗和窗口看门狗区别
原文地址https://www.cnblogs.com/pertor/p/9483445.html 一.使用调条件 二.特点对比 三.手册介绍 [注]图中的WDGTB为3表示2^3=8,表示8分频,最 ...
- FreeRTOS实验_独立看门狗监视多线程
1.首先随意创建几个线程,如下图: 2.然后就要思考了,怎么样实现如果其中一个线程死掉了,就不喂狗得以让系统重启? 其实,我们可以反过来想一下,什么情况下才喂狗得以让系统正常运行?答案是,所有线程都活 ...
- STM32F103V IWDG 独立看门狗操作
最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门狗功能.查了下STM32的相关资料,于是利用下库文件来实现IWDG独立看门狗操作.首先需要调用库文件 #include "st ...
- stm32看门狗_「正点原子NANO STM32开发板资料连载」第十一章 独立看门狗实验
1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十一章 独 ...
- proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)
继续更新学习STM32的历程,今天学习看门狗. 在单片机构成的微型计算机系统中,单片机的工作时常收到外界电磁场的干扰,导致程序跑飞,陷入死循环.为了解决这个问题,产生了一种用于监测单片机程序运行状态的 ...
- stm32 独立看门狗学习
STM32F10xxx内置两个看门狗,提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障. 独立看门狗(IWDG)由专用的低速 ...
- STM32F4 HAL库开发 -- 独立看门狗(IWDG)
之前讲过看门狗,参看:STM32开发 – 看门狗详解 一.HAL库配置独立看门狗步骤 1.取消寄存器写保护,设置看门狗预分频系数和重装载值. 首先我们必须取消 IWDG_PR和 IWDG_RLR寄存器 ...
- stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗
点击上方蓝色字体,关注我们 本博文简要阐述STM32L011微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器.基本定时 ...
- STM32之独立看门狗与窗口看门狗总结
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
最新文章
- 二分法:二分查找(递归+非递归)实现
- 如何实现高容量大并发数据库服务 | 数据库分布式架构设计
- python 虚拟环境 virtualenv virtualenvwrapper的使用方法、命令
- PAT_B_1007_Java(20分)
- 图书管理系统 java 源码_[源码和文档分享]基于C语言和SQL SERVER数据库实现的图书管理系统...
- 双数据源配置(一个项目中链接两个数据库)
- 数据 正则化 python_Python数据科学:正则化方法
- 路由器Lan、Wan短接问题
- 摩拜前端周刊第15期
- RSTP原理和新增特性
- slf4j+logback使用
- eXeScope 注册机制破解
- monkeytest方法-20171113
- php旅游管理系统,基于Laravel框架开发的旅游网站管理系统PHP源码
- 用python根据最新的汇率,假设你要出国留学要换外币,输入一定数量的人民币,比如1000元人民币, 按照中国银行的现钞卖出价,输出可换到对应的加元和澳元分别是多少。
- 大数据分析应用的机遇与挑战
- GEE-Python 遥感大数据处理
- [CF850E]Random Elections
- 数据库:数据类型、数据项、数据元素、数据对象、数据结构的概念与相互之间的关系
- WebShell --冰蝎