在嵌入式系统中,由于MCU(微控制单元:Microcontroller Unit)的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测程序运行状态的模块,俗称"看门狗"(watchdog)

在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的时候要注意清看门狗。

看门狗是恢复系统的正常运行及有效的监视管理器(具有锁定光驱,锁定任何指定程序的作用,可用在家庭中防止小孩无节制地玩游戏、上网、看录像)等具有很好的应用价值.

STM32F10X内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。
独立看门狗(IWDG)由专用的32kHz的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。丨WDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。
窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

键值寄存器(IWDG_KR)
预分频寄存器(IWDG_PR)
重装载寄存器(IWDG_RLR)
状态载寄存器(IWDG_SR)

简析:参照第26篇中 RCC 时钟系统框图中最下方一路 LSI RC 独立时钟就是提供给看门狗使用的,这个LSI进来之后,首先通过 IWDG_PR寄存器进行预分频,然后重新得到一个频率,然后用这个频率使 12-bit Down-counter 开始计数,每来一个时钟脉冲就减1,IWDG_RLR是重装载寄存器,这个值设置为多少计数器就从多少开始向下减开始计数,如果这个值减到0,就会产生一个复位信号,如果在减到0之前被重新装载一个新的值,就会重新开始计数,所以这里的重新装载就是**“喂狗”**,一般如果程序跑飞,就会来不及喂狗,自然而然就会产生复位信号。

看门狗超时时间(32kHz的输入时钟)

主要寄存器介绍
键值寄存器
给它一个特殊的值,就能产生特定的操作。起到一个控制作用。

所以喂狗只需向此寄存器写入 0XAAAAh,这样 IWDG_RLR的值就会自动装载、重新计数。

预分频寄存器

重装载寄存器

操作步骤
1)向IWDG_KR写入 0X5555。
通过这步,我们取消 IWDG_PR 和 IWDG_RLR 的写保护,使后面可以操作这两个寄存器。设置 IWDG_PR和IWDG_RLR 的值。
这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间,该时间的计算方式为: Tout =40 Khz / ( (4*2^prer ) * rlr ) ; 当然这个值是个粗略的计算值,因为时钟不准确,所以无法得到准确的喂狗时间。
2) 向IWDG_KR 写入0XAAAA 。
通过这句,使STM32重新加载 IWDG_RLR 的值到看门狗计数器里面。也可以用该命令来喂狗。
3) 向IWDG_KR 写入0XCCCC 。
通过上面3个步骤,我们就可以启动STM32的看门狗了,使能了看门狗,在程序里面就必须间隔一定时间间喂狗,否则将导致程序复位。利用这一点,我们将通过一个 LED 灯来指示程序是否重启。

独立看门狗与窗口看门狗的区别!

1、相同点
都是为了保证CPU程序跑飞

2、独立看门狗
根据内部看门狗时钟频率,装载寄存器定一个时间值,比如是1000,那么独立看门狗就会按照时钟频率,从1000开始向下每隔一个时钟周期减1,如果在减到0之前,你用程序代码重新向向下计数器里面写1000(喂狗),那么定时器会重新从1000开始向下递减。如果在减到0的时候,你还没有喂狗(用新的数值覆盖计数器),就会产生复位信号。

3、窗口看门狗
根据系统时钟频率,装载一个初始值到向下计数器(假设还是1000),并且设置一个窗口值(小于装载到计数器的初始值,假设是500),窗口看门狗一般会定死窗口下线值是64。计数器从1000开始向下减,在减到500之前(1000到500间),是不允许你去喂狗的,一旦喂狗,就会产生复位信号。只有计数器值减到上限值之后(500到64),才允许你去喂狗。当计数器减到下限值(64到0之间),如果喂狗,也会产生复位信号,当减到0之后,自动产生复位信号。

所以窗口看门狗实际上就是设置一个窗口(上下限),在这个范围内,你才允许你去喂狗,只要不在这个范围之内,都会复位。

4、区别总结

大致区别在两方面:

1、窗口看门狗计时时间比独立看门狗精准
窗口看门狗使用的是系统时钟源
2、窗口看门狗严格限定喂狗时间段,独立看门狗则是只要没有到时间,都能喂狗

通过上面3个步骤,我们就可以启动STM32的看门狗了,使能了看门狗,在程序里面就必须间隔一定时间间喂狗,否则将导致程序复位。利用这一点,我们将通过一个 LED 灯来指示程序是否重启。

作者:ManGoCHEN(陈惜时)

看门狗的喂法(独立看门狗和窗口看门狗的区别)!相关推荐

  1. 7、【STM32】独立看门狗和窗口看门狗(IWDG、WWDG)实验

    前言 使用的是正点原子的探索者开发板进行学习,芯片:STM32F407ZGTx 学习说明此文档为本人的学习笔记,注重实践,关于理论部分会给出相应的学习链接. 注:本文档添加了对代码的在线调试功能,有助 ...

  2. 独立看门狗/窗口看门狗

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

  3. 独立看门狗和窗口看门狗

    为什么要开门狗? 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的 ...

  4. STM32学习(9)-看门狗,独立看门狗(相关的寄存器和函数),窗口看门狗(相关的寄存器和函数)

    1. 看门狗(watchdog)的作用: 实时检测单片机的程序运行状态,防止程序跑飞造成无法预料的结果. 2. STM32包含哪几个看门狗(独立看门狗和窗口看门狗) 3.独立看门狗 3.1 独立看门狗 ...

  5. STM32F1笔记(七)WWDG窗口看门狗

    窗口看门狗与独立看门狗最大的不同是中断,窗口看门狗拥有一个提前唤醒中断.也就是在快要产生复位的前一段时间(T[6:0]=0x40)来提醒需要进行喂狗,否则将复位.因此当窗口看门狗的计数器值减到0x40 ...

  6. 看门狗喂狗被狗咬——窗口看门狗

    喂狗:重新把装载寄存器中的值装载至计数寄存器或者直接往计数寄存器写入数据,保证mcu不会复位. 被狗咬:没有及时喂狗或者喂狗过于频繁,后者只存在于窗口看门狗,在独立看门狗中不存在喂狗过快还被狗咬的现象 ...

  7. 【STM32学习笔记】(15)——窗口看门狗(WWDG)详解

    窗口看门狗(WWDG)概述 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障.除非递减计数器的值在T6位变成0前被刷新,否则看门狗电路在达到预置 ...

  8. STM32学习心得十七:窗口看门狗(WWDG)实验及旧知识点复习

    记录一下,方便以后翻阅~ 主要内容: 1) 窗口看门狗概述: 2) 常用寄存器和库函数配置: 3) 窗口看门狗实验. 窗口看门狗实验内容: 为了对之前的知识进行总结复习,本人在教学案例的基础上又&qu ...

  9. 窗口看门狗实验定时器基本原理

    目录 1.  窗口看门狗 1.1  窗口看门狗概述 1.1.1  窗口看门狗工作示意图 1.1.2  窗口看门狗工作过程总结 1.1.3  窗口看门狗超时时间 1.1.4  为什么要窗口看门狗 ? 1 ...

  10. 窗口看门狗与编程实验

    更多交流欢迎关注作者抖音号:81849645041 目标 了解窗口看门狗的工作原理及其使用场景,通过喂狗事件使窗口看门狗不产生复位. 原理 STM32有两个看门狗,一个是独立看门狗,一个是窗口看门狗. ...

最新文章

  1. 2021年春季学期-信号与系统-第六次作业参考答案-第九小题
  2. html单选框背景图片,如何更改radio、checkbox选项框背景图?
  3. mysql 开启引擎命令_MySql中启用InnoDB数据引擎的方法
  4. redis 发布订阅实际案例_【赵强老师】Redis的消息发布与订阅
  5. Python模块学习 - 用tinify模块压缩和优化图片
  6. 罗永浩:还会给你们做手机 只是需要时间
  7. 即时通讯学习笔记005---在windows中安装OpenFire服务器即时通讯服务器_使用OpenFire内置数据库
  8. 中小微企业公共信用数据的风险评估
  9. 理工大学统考计算机在线作业,北京理工在线作业-现代远程学习技术-20210417121542.pdf-原创力文档...
  10. 转载椭圆曲线原理和openssl命令操作
  11. [转载] python存数据库、c++读数据库_如何从C中读取python pickle数据库/文件?
  12. pd虚拟机 17.1.2 Intel核心Mac专用版
  13. nexus的下载和安装
  14. 计算机专业的有关的外文文献,计算机专业外文外文 计算机专业专著类参考文献有哪些...
  15. 网页加速器1.0.5.6 免费版
  16. 常用计算机病毒表及其专杀工具,维金病毒-谁可以提供一个可以在win98平台下使用的维金病毒专杀工具(好象是....
  17. 又一大动作,海致BDP似卷收购风波
  18. MCV模型流程图整理
  19. iOSapp的json告示
  20. Java集合框架笔记记录 --- 原创@余胜军 但有个人心得

热门文章

  1. Android程序员生活就是这么朴实无华,那真是穷的喝自来水
  2. shell中test命令方法详解
  3. charles的简单使用
  4. apex英雄哪个服务器稳定,apex英雄哪个服务器好
  5. RationalDMIS 7.1 建立坐标系(3-2-1法)
  6. 服务器重装系统后网不通,服务器出现死机网络ping不通等问题处理
  7. python查找文字在图片中的位置_如何快速提取出图片中文字,强烈推荐这款免费软件!...
  8. 斗地主发牌及排序流程
  9. 移动跨平台ReactNative开关组件Switch【15】
  10. JavaWeb | HTTP 协议请求与响应格式