独立看门狗的作用是检测出程序的跑飞,并使系统复位,重新开始工作。比如系统受到干扰,程序指针跑向了其他区,从而导致正常的程序逻辑无法执行,没有在规定时间内喂狗,系统会产生复位,进行一次热启动,单片机开始重新工作。

当然独立看门狗只能检测出程序跑到其他区的问题,或者跑到当前逻辑里,恰好也在喂狗时间内,执行了喂狗代码,这样就无法区分了,而其实程序已经出错。在这种应用场景下,就需要窗口看门狗了,用窗口看门狗可以记录某一段代码执行的时间,而避免了上述情况。

现在分析一下独立看门狗的实现。

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

独立看门狗及其实现的热启动相关推荐

  1. 看门狗(独立看门狗)与窗口看门狗的区别!

    看门狗(独立看门狗)与窗口看门狗的区别 在cortex-M系列芯片上有两个看门狗:看门狗(独立看门狗)和窗口看门狗. 1.相同点 都是为了保证CPU程序跑飞 2.独立看门狗 根据内部看门狗时钟频率,装 ...

  2. stm32 独立看门狗和窗口看门狗区别

    原文地址https://www.cnblogs.com/pertor/p/9483445.html 一.使用调条件 二.特点对比 三.手册介绍 [注]图中的WDGTB为3表示2^3=8,表示8分频,最 ...

  3. FreeRTOS实验_独立看门狗监视多线程

    1.首先随意创建几个线程,如下图: 2.然后就要思考了,怎么样实现如果其中一个线程死掉了,就不喂狗得以让系统重启? 其实,我们可以反过来想一下,什么情况下才喂狗得以让系统正常运行?答案是,所有线程都活 ...

  4. STM32F103V IWDG 独立看门狗操作

    最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门狗功能.查了下STM32的相关资料,于是利用下库文件来实现IWDG独立看门狗操作.首先需要调用库文件 #include "st ...

  5. stm32看门狗_「正点原子NANO STM32开发板资料连载」第十一章 独立看门狗实验

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十一章 独 ...

  6. proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)

    继续更新学习STM32的历程,今天学习看门狗. 在单片机构成的微型计算机系统中,单片机的工作时常收到外界电磁场的干扰,导致程序跑飞,陷入死循环.为了解决这个问题,产生了一种用于监测单片机程序运行状态的 ...

  7. stm32 独立看门狗学习

    STM32F10xxx内置两个看门狗,提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障. 独立看门狗(IWDG)由专用的低速 ...

  8. STM32F4 HAL库开发 -- 独立看门狗(IWDG)

    之前讲过看门狗,参看:STM32开发 – 看门狗详解 一.HAL库配置独立看门狗步骤 1.取消寄存器写保护,设置看门狗预分频系数和重装载值. 首先我们必须取消 IWDG_PR和 IWDG_RLR寄存器 ...

  9. stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗

    点击上方蓝色字体,关注我们 本博文简要阐述STM32L011微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器.基本定时 ...

  10. STM32之独立看门狗与窗口看门狗总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

最新文章

  1. 二分法:二分查找(递归+非递归)实现
  2. 如何实现高容量大并发数据库服务 | 数据库分布式架构设计
  3. python 虚拟环境 virtualenv virtualenvwrapper的使用方法、命令
  4. PAT_B_1007_Java(20分)
  5. 图书管理系统 java 源码_[源码和文档分享]基于C语言和SQL SERVER数据库实现的图书管理系统...
  6. 双数据源配置(一个项目中链接两个数据库)
  7. 数据 正则化 python_Python数据科学:正则化方法
  8. 路由器Lan、Wan短接问题
  9. 摩拜前端周刊第15期
  10. RSTP原理和新增特性
  11. slf4j+logback使用
  12. eXeScope 注册机制破解
  13. monkeytest方法-20171113
  14. php旅游管理系统,基于Laravel框架开发的旅游网站管理系统PHP源码
  15. 用python根据最新的汇率,假设你要出国留学要换外币,输入一定数量的人民币,比如1000元人民币, 按照中国银行的现钞卖出价,输出可换到对应的加元和澳元分别是多少。
  16. 大数据分析应用的机遇与挑战
  17. GEE-Python 遥感大数据处理
  18. [CF850E]Random Elections
  19. 数据库:数据类型、数据项、数据元素、数据对象、数据结构的概念与相互之间的关系
  20. WebShell --冰蝎

热门文章

  1. 拓端tecdat|R语言法国足球联赛球员多重对应分析(MCA)
  2. 拓端tecdat|R语言基于ARCH模型股价波动率建模分析
  3. smale学习之数学表达式(day1)
  4. windows中配置ant环境变量
  5. ubuntu安装labelme
  6. docker镜像打包
  7. OpenCV编译、安装、测试
  8. linux大文件分割与合并
  9. Python下安装LDA模块,学习使用
  10. python实现给定一个单链表删除指定节点