一、什么是看门狗?

在单片机工作的时候经常会出现受到外界电磁场的干扰导致程序跑飞,而陷入死循环,而使整个系统陷入无法正常工作的状态。

“看门狗”是一种专门用于监测单片机程序运行状态的模块或者芯片。

二、独立看门狗iwdg

独立看门狗应用到的寄存器

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

预分频寄存器IWDG_PR:0~2位有效

重装载寄存器IWDG_RLR:0~11位有效

上述两个寄存器具有写保护功能

状态寄存器IWDG_SR:0~1位有效

独立看门狗操作步骤

独立看门狗程序实践

在STM32F103系列单片机的不完全手册上面有对于独立看门狗的例程,分为初始化和喂狗两部分,这个程序是与上面的步骤相对应的。

在后续的实践和学习中,发现可以用cubeMX进行看门狗的配置(等同于在代码中的初始化),之后在代码中用HAL_IWDG_Refresh函数直接喂狗就可以了。

三、窗口看门狗wwdg

窗口看门狗(WWDG)用于发现由外部接口或者不可预期的逻辑操作导致的软件故障。这些故障会导致程序中断正常运行。当一个程序周期结束时,看门狗电路会产生一个MCU复位信号,除非在看门狗电路复位之前程序返回正常运行逻辑。当计数器减少到预设值的时候,也会产生一个复位信号。这就意味着计数器必须限制在一个指定的窗口内。

【窗口看门狗主要特性】

1、可编程向下计数器

2、复位条件:计数器值小于0x40或者计数器值超出设定的窗口。

3、早期唤醒中断(EWI)计数值等于0x40时产生中断,即等于0x40就产生中断小于0x40就复位。

产生复位条件:计数器计数到小于0x40,计数器值小于配置寄存器(CFR)中设定的窗口值时  产生复位信号。

窗口计数器的计数值在0x7F到0x40之间变化.窗口计数器一旦被使能,就不能停止,直到reset。即使没有使能窗口看门狗,其计数器也会直至不停地计数,所以为了避免刚开始计数就被复位,计数器的值必须设置为大于等于0x40即CR中的T6位必须设置为1并且小于预设值,然后启动WWDG。

窗口看门狗的特点是:不能在狗饱时喂狗,也不能在狗饿时喂狗。狗饿时喂狗,狗要咬人;狗饱的时候喂,狗也要咬人;只能在一个时间段内、当狗半饱的时候喂,狗才能乖乖地干活。一般的看门狗是在任何时间都可以喂狗,不管狗是不是已经饱了。这段时间就是计数器数字在的T[6..0]到0x40之间时,才可以喂狗。这里的窗口,可以理解为喂狗的时间窗口。

四、关于看门狗的应用和一些理解误区

窗口看门狗是挂载在APB1时钟上的一个定时器(计数器),而独立看门狗是应用独立时钟源的一个计数器,对于精准度而言窗口看门狗有更高的时间精确度,但是使用窗口看门狗时

,窗口看门狗的预分频值最高为8,会造成重装载(喂狗)的频率过高,达不到看门狗的效果。

独立看门狗并不能追踪到任务执行到哪里的时候出现了错误,只能在程序跑飞(例如进入hardfault,can error)的时候进行reset。

独立看门狗的喂狗任务可以说是与其他任务是独立的,无论是在定时器中断中,还是在RTOS的多线程系统中,独立看门狗都是独立于其他的任务而存在的,与其他的任务互不干扰。

iwdg和wwdg的更多相关文章

  1. 第35章 WWDG—窗口看门狗—零死角玩转STM32-F429系列

    第35章     WWDG—窗口看门狗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  2. STM32之看门狗(独立与窗口)

    广大的互联网网友们,大家早上中午晚上好,我是某某某..对于狗..看过<忠犬八公>的我.无不深深的被狗的义气与灵气所震撼..我也觉得在所有mcu中用看门狗来形容让系统复位的功能是很恰当的.也 ...

  3. STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示

    一.介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料:             ...

  4. STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)

    一     前沿废语: 之前有很风靡的游戏,名字叫<看门狗>.该游戏用了很新的引擎技术,打造出了一个辽阔庞大的世界,内容是玩家Aiden·Pearce(主角)是一名精通黑客技术的高手,当时 ...

  5. STM8S awu及看门狗IWDG WWDG应用(转)

    源:STM8S awu及看门狗IWDG WWDG应用 AWU的应用(用库函数完成的) //切记要开启中断 且在中断函数中 AWU_GetFlagStatus(); 来清除中断 void AWU_SET ...

  6. STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结

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

  7. watchdog(IWDG)

    1.为了避免程序忙跑跑死了没反应,加上一个看门狗watchdog实时监控着程序,一旦程序没有在规定的时间喂狗,则狗叫使得单片机复位. 2.Independent watchdog(IWDG)内部有时钟 ...

  8. STM8S——watchdog(IWDG)

    IWDG工作原理: 1.当键值寄存器(IWDG_KR)中写入数值0xCC后,独立看门狗就会被启动,计数器开始从它的复位值0xFF开始递减计数,当计数减到0x00时就会产生一个复位信号. 2.使用IWD ...

  9. STM32之旅5——IWDG

    STM32之旅5--IWDG stm32有两个看门狗,一个独立看门狗(IWDG).一个窗口看门狗(WWDG):独立看门狗是时钟源是内部的40kHz的低速时钟,即使主频出问题了,独立看门狗也不会受到影响 ...

随机推荐

  1. CentOS8安装Geant4笔记(三):Geant4介绍、编译、安装支持Qt5界面并运行exampleB1例程显示Qt界面

    前言   上一篇,安装了Qt5环境.  本篇在服务器CentOs8.2上安装geant4软件,geant4使用Qt5来显示.   GEANT4 介绍   Geant4 是一个用于模拟粒子穿过物质的工具 ...

  2. Ubuntu20.04安装RabbitMQ

    本博客旨在自我学习使用,如有任何疑问请及时联系博主 安装erlang 由于RabbitMq需要erlang语言的支持,在安装RabbitMq之前需要安装erlang sudo apt-get inst ...

  3. Android12 新特性及适配指南

    Android 12(API 31)于2021年10月4日正式发布,正式版源代码也于当日被推送到AOSP Android开源项目.截止到笔者撰写这篇文章时,国内各终端厂商的在售Android设备,已经 ...

  4. 如何取消以太坊智能合约授权,防止被黑客盗取Token?

    在小狐狸钱包(MetaMask)日常使用中,有一个细节可能很少人注意到,就是无论你登入什么网站,或者需要跟任何项目签订智能合约都要授权的步骤,这其中就会给黑客留下很多空子,特别是将一个Token用智能 ...

  5. Java案例——冒泡排序

    排序:将一组数据按照固定的规则进行排列 冒泡排序:一种排序方式,对将要排序的相邻的数据进行两两比较,将较大的放在后面,依次对所有的数据进行操作,直到所有的数据按要求完成排序 冒泡排序原理: 1.如果有 ...

  6. 如何构建Docker镜像

    构建Docker 镜像有如下两种方法: (一)使用docker commit命令.(二)使用docker build命令和 Dockerfile 文件.在这里并不推荐使用docker commit来构 ...

  7. Jquery.Datatables dom表格定位 (转)

    Datatables会添加一些控制元素在表格的周围,比如默认状态下改变每页显示条数(l)的空间在左上角,即使搜索框(f)在右上角,表格的信息(i)显示在左下角,分页控件(p)显示在右下角. 这些控件在 ...

  8. [NPUCTF2020]Baby Obfuscation wp

    整体观察main函数,可以发现用户自定义函数和变量存在混淆,猜测为函数名及变量名asc混淆. 对函数进行分析: Fox1为欧几里得算法求最大公约数 Fox5其实是pow Fox4根据逻辑数学的法则实际 ...

  9. C++ 并发编程1

    一个简单的并发编程的举例 #include <iostream> #include <thread> using namespace std; void hello(){ co ...

  10. SpringBoot bean映射yml中的属性举例

    pom:导入配置文件处理器,配置文件进行绑定就会有提示 <dependency> <groupId>org.springframework.boot</groupId&g ...