什么是看门狗

如果程序跑飞了怎么办?
可以用看门狗来监控。
看门狗是:
一个递减的计数器,如果不按时给计数器赋值,计数器的值减到一定程度,就会使系统复位。
也就是说如果程序运行异常,无法正常给计数器赋值(喂狗),系统会自动复位。
STM32F407有两种看门狗:

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

独立看门狗

  • 在键值寄存器(IWDG_KR)中写入0xCCCC:开始启用独立看门狗。
  • 此时计数器开始递减
  • 当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。
  • 无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗),
  • 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。
  • 如果程序异常,就无法正常喂狗,从而系统复位。

  • 时钟源是频率为32K的LSI(low speed internal 时钟),经过预分频寄存器的值分频后,即为独立看门狗的计数器的频率。
  • 预分频寄存器IWDG_PR和键值寄存器IWDG_KR都有写保护功能,要操作他们需要先取消写保护。

    独立看门狗时间计算

    如何计算超时时间,即独立看门狗多久不喂会复位?
    下图适用与M4:


由图可知
分频系数 = (2^PR寄存器的值)×4

∴超时时间= 周期×初值
=(分频系数/32K)× rlr
=(2^PR寄存器的值)×4 ×rlr

独立看门狗适用场合

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

独立看门狗代码写法

#include "iwdg.h"// //初始化独立看门狗
//prer:分频数:0~7(只有低3位有效!)
//rlr:自动重装载值,0~0XFFF.
//分频因子=4*2^prer.但最大值只能是256!
//rlr:重装载寄存器值:低11位有效.
//时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).
void IWDG_Init(u8 prer,u16 rlr)
{//1.取消寄存器写保护:0x5555使能IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对IWDG->PR IWDG->RLR的写//2. 设置IWDG分频系数:写PRIWDG_SetPrescaler(prer); //3. 设置IWDG装载值IWDG_SetReload(rlr);   //4. 喂狗:写0xAAAA到KR,赋初值IWDG_ReloadCounter(); //reload//5. 使能看门狗:写0xCCCC到KRIWDG_Enable();
}//喂独立看门狗
void IWDG_Feed(void)
{IWDG_ReloadCounter();//喂狗:写0xAAAA到KR
}

转载于:https://www.cnblogs.com/YuQiao0303/p/10064757.html

STM32F407 独立看门狗 个人笔记相关推荐

  1. # 软件stm32cubeIDE下配置STM32F103的独立看门狗iwdg-学习笔记-基础样例

    # 软件stm32cubeIDE下配置STM32F103的独立看门狗iwdg-学习笔记-基础样例 (1)叙述 (2)环境说明 (3)学习流程说明 (1)了解网上资料 (2)查找手册 (3)测试逻辑说明 ...

  2. stm32f407关于独立看门狗各种函数(一)(HAL库)

    以下内容全部来自正点原子,本人只是对主要知识点进行整理,方便以后查看. 一.独立看门狗 独立看门狗本质上是一个定时器,这个定时器有一个输出端,可以输出复位信号.该定时 器是一个 12 位的递减计数器, ...

  3. STM32F1笔记(六)独立看门狗IWDG

    STM32F1内置了两个看门狗,独立看门狗IWDG和窗口看门狗WWDG,可以用来检测和解决由软件错误引起的故障. IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精 ...

  4. 【STM32学习笔记】(14)——独立看门狗(IWDG)详解

    独立看门狗(IWDG)概述 STM32F10xxx系列内置两个看门狗(独立看门狗和窗口看门狗),提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决 ...

  5. STM32基础学习笔记(2)---独立看门狗

    一.IWDG(独立看门狗的配置) 理解: 1.独立看门狗用的是内部的低速时钟40Khz(实际为30-60Khz) 2.独立看门狗的作用是 将跑飞的程序重新复位(有时候因为强电磁,太阳黑子活动干扰会把程 ...

  6. STM32学习笔记:独立看门狗和窗口看门狗

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

  7. 【stm32f407】独立看门狗 iwdog

    一.独立看门狗 STM32F4的独立看门狗由内部专门的32Khz低速时钟(LSI)驱动,即使主时钟发生故障,它也仍然有效.这里需要注意独立看门狗的时钟是一个内部RC时钟,所以并不是准确的32Khz,而 ...

  8. STM32学习笔记—独立看门狗

    1.独立看门狗的介绍 2.独立看门狗的使用 3.代码段 1.独立看门狗的介绍 独立看门狗利用系统内部的低速时钟提供机械周期,这个低速时钟与系统的工作时钟不是一个时钟,所以看门狗的运行和系统的运行是互不 ...

  9. STM32cubemx——HAL库学习笔记 六、IWDG独立看门狗的配置

    一.配置STM32cubeMX工程 在配置好时钟和调试设备以后进行一下操作即可以使用 看门狗的溢出时间公式为 Tout= 分频系数/ 时钟 * 重装载值 二.IWDG的技术讲解 可以到看,看门狗相对于 ...

最新文章

  1. App Store兼容性问题
  2. ResNeXt——与 ResNet 相比,相同的参数个数,结果更好:一个 101 层的 ResNeXt 网络,和 200 层的 ResNet 准确度差不多,但是计算量只有后者的一半...
  3. MySQL—创建数据表
  4. Linux 系统的日志管理
  5. mysql 同一帐号多次登录_freeradius2.1.3 防止用户帐号重复登录
  6. 现在php内存使用,php 内存使用信息代码
  7. (06)System Verilog 静态变量与动态变量区别
  8. dell inspiron 只有一个飞行模式 没有wifi_【显示器推荐③】2K常规显示器|显示器|电脑|hdr|dell|hdmi...
  9. vue 项目使用通过经纬度显示地图
  10. 前端Docker教程
  11. 使用javah 生成.h头文件
  12. 还需要注册的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个N*M的组合,即笛卡尔积。表达式如下:...
  13. C语言———指针(1.3间接寻址运算符)
  14. 木瓜移动:黑五网一爆冷跨境电商如何破局?
  15. linux下C语言抓包程序,带图形界面
  16. U号租号平台技术服务支持
  17. Hantek6022BE 虚拟示波器 (二)方波 采样率 带宽
  18. 数学建模学习(90):改进的灰狼优化算法(I-GWO)对多元函数寻优
  19. android 自适应图片轮播,Android使用Recyclerview实现图片轮播效果的方法
  20. Android studio低版本让3.0编译通过,更好的用studio看代码(找不到原作者那个网址链接了,望见谅!)

热门文章

  1. 虚拟机挂载新虚拟硬盘步骤
  2. 03-dotnet core创建区域[Areas]及后台搭建
  3. leetcode 137[转]
  4. Xcode 4.2 中的Automatic Reference Counting (ARC) (转)
  5. C++---deque双端队列
  6. SyntaxError: Identifier ‘XXX‘ has already been declared
  7. 零基础带你学习MySQL—创建表(四)
  8. 实现c++BMP图像的读取合成拆解加边框
  9. 順豐突然爆出一季度巨額虧損9億到11億
  10. 一个人开长途车旅游安全吗?