独立看门狗简介

IWDG结构框图

(1)独立看门狗时钟

独立看门狗的时钟由独立的 RC 振荡器 LSI 提供, 即使主时钟发生故障它仍然有效,非常独立。 LSI 的频率一般在 30~60KHZ 之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHZ,所以独立看门狗的定时时间并一定非常精确,只适用于对时间精度要求比较低的场合。

(2)计数器时钟

实际的计数频率为:

(3)计数器

(4)重装载寄存器

重装载寄存器是一个 12 位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。

(5)键寄存器

寄存器说明:

(6)状态寄存器:

如何使用IWDG

RCC复位描述

STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。

1 系统复位

2 电源复位

3 备份域复位

*************************************************************************************************************************

如果独立看门狗 IWDG 产生复位,我们可以从RCC复位和时钟控制寄存器中获取复位原因:

以下是各种复位标志位:

代码分析

标准库中,关于 IWDG 总共就只有以下几个函数,都是配置或读取寄存器,非常简单,就不看源码了:

/** @defgroup IWDG_Exported_Functions* @{*/void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
void IWDG_SetReload(uint16_t Reload);
void IWDG_ReloadCounter(void);
void IWDG_Enable(void);
FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);

常用的独立看门狗配置 和喂狗操作:

/** 设置 IWDG 的超时时间* Tout = prv/40 * rlv (s)*      prv可以是[4,8,16,32,64,128,256]* prv:预分频器值,取值如下:*     @arg IWDG_Prescaler_4: IWDG prescaler set to 4*     @arg IWDG_Prescaler_8: IWDG prescaler set to 8*     @arg IWDG_Prescaler_16: IWDG prescaler set to 16*     @arg IWDG_Prescaler_32: IWDG prescaler set to 32*     @arg IWDG_Prescaler_64: IWDG prescaler set to 64*     @arg IWDG_Prescaler_128: IWDG prescaler set to 128*     @arg IWDG_Prescaler_256: IWDG prescaler set to 256** rlv:预分频器值,取值范围为:0-0XFFF* 函数调用举例:* IWDG_Config(IWDG_Prescaler_64 ,625);  // IWDG 1s 超时溢出*/void IWDG_Config(uint8_t prv ,uint16_t rlv)
{   // 使能 预分频寄存器PR和重装载寄存器RLR可写IWDG_WriteAccessCmd( IWDG_WriteAccess_Enable );// 设置预分频器值IWDG_SetPrescaler( prv );// 设置重装载寄存器值IWDG_SetReload( rlv );// 把重装载寄存器的值放到计数器中IWDG_ReloadCounter();// 使能 IWDGIWDG_Enable();
}// 喂狗
void IWDG_Feed(void)
{// 把重装载寄存器的值放到计数器中,喂狗,防止IWDG复位// 当计数器的值减到0的时候会产生系统复位IWDG_ReloadCounter();
}

然后在主函数中进行测试,如果 看门狗复位,那么就能够检测到相应的复位标志。

main.c

int main(void)
{   // 配置LED GPIO,并关闭LEDLED_GPIO_Config();   Delay(0X8FFFFF);/*------------------------------------------------------------*//* 检查是否为独立看门狗复位 */if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET){/* 独立看门狗复位 *//*  亮红灯 */LED_RED;/* 清除标志 */RCC_ClearFlag();/*如果一直不喂狗,会一直复位,加上前面的延时,会看到红灯闪烁在1s 时间内喂狗的话,则会持续亮绿灯*/}else{/*不是独立看门狗复位(可能为上电复位或者手动按键复位之类的) *//* 亮蓝灯 */LED_BLUE;}/*--------------------------------------------------------------*/// 配置按键GPIOKey_GPIO_Config();// IWDG 1s 超时溢出IWDG_Config(IWDG_Prescaler_64 ,625);//while部分是我们在项目中具体需要写的代码,这部分的程序可以用独立看门狗来监控//如果我们知道这部分代码的执行时间,比如是500ms,那么我们可以设置独立看门狗的//溢出时间是600ms,比500ms多一点,如果要被监控的程序没有跑飞正常执行的话,那么//执行完毕之后就会执行喂狗的程序,如果程序跑飞了那程序就会超时,到达不了喂狗//的程序,此时就会产生系统复位。但是也不排除程序跑飞了又跑回来了,刚好喂狗了,//歪打正着。所以要想更精确的监控程序,可以使用窗口看门狗,窗口看门狗规定必须在//规定的窗口时间内喂狗。while(1)                        {
// 这里添加需要被监控的代码,如果有就去掉按键模拟喂狗,把按键扫描程序去掉
//--------------------------------------------------------------------------if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON  ){// 喂狗,如果不喂狗,系统则会复位,LED1则会灭一次,如果在1s// 时间内准时喂狗的话,则绿会常亮IWDG_Feed();//喂狗后亮绿灯LED_GREEN;}   }
//---------------------------------------------------------------------------
}

stm32专题三十四:独立看门狗 IWDG相关推荐

  1. STM32—独立看门狗(IWDG)

    STM32-独立看门狗(IWDG) 独立看门狗(IWDG) STM32-独立看门狗(IWDG) 独立看门狗(IWDG) IWDG 简介 IWDG 功能框图剖析 独立看门狗时钟 计数器 重装载寄存器 键 ...

  2. STM32F103五分钟入门系列(十三)独立看门狗IWDG

    参考:STM32F103五分钟入门系列(十三)独立看门狗IWDG 作者:自信且爱笑' 发布时间:2021-07-31 19:50:28 网址:https://blog.csdn.net/Curnane ...

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

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

  4. 独立看门狗IWDG详细解析

    目录 独立看门狗IWDG详细解析 为什么要有看门狗? 看门狗的定时原理 寄存器功能简介 看门狗定时器计数原理 看门狗相关寄存器 KR寄存器 PR寄存器 RLR寄存器 SR寄存器 看门狗相关基础知识 什 ...

  5. 从零实现 独立看门狗IWDG STM32的待机与唤醒,在待机过程中如何喂狗

    欢迎大家留言交流~ 前言: 最近在学习原子的阿波罗,进行到待机实验,实验目的是摁下KEY_UP的时候就可以让MCU从待机模式唤醒了.而KEY1在按下的时候进入休眠.(验证过程比较繁琐,只看结论的小伙伴 ...

  6. cubeIDE开发, stm32独立看门狗IWDG的CubeMX配置及HAL库底层实现分析

    一.STM32 的IWDG简介 2.1 看门狗原理 看门狗本质上就是一种计数器,和我们现实生活中一炷香现象.沙漏现象等是同理的,计数器一般有两种做法,一种是递增,超过固定阀值报警:一种是递减,通常值降 ...

  7. STM32 - 独立看门狗IWDG - 使用注意事项+代码

    一.包含头文件 #include "stm32f10x_iwdg.h" 二.设置 独立看门狗 的超时时间 1.配置代码 /** 设置 IWDG 的超时时间* Tout(ms) = ...

  8. [STM32 ]内部独立看门狗IWDG

    看门狗大家应该都不陌生,STM32内部带有独立看门狗和窗口看门狗两种:其中独立看门狗依赖于内部的晶振LSI进行工作,窗口看门狗依赖于系统时钟工作: 看门狗的作用,防止程序跑飞无法实现自复位而存在:如果 ...

  9. Linux高级应用(十四)看门狗的驱动设计

    一.什么是看门狗定时器 看门狗是一个定时器(倒计时),有计时的功能.当看门狗的计数值减为0,会产生一个复位信号给处理器,这样处理器就会重启,软件就会重新运行. 二.看门狗定时器的作用 当系统在运行的过 ...

最新文章

  1. iwebshop商户手机模板_认证小红书企业号手机端最详细的认证流程!认证之前看这篇!...
  2. Android初学:联系创建Activity
  3. 年底怎样才能“被评优”
  4. 交换机配置软件_如何配置远程登陆交换机?最简单的解释方式,一看就懂
  5. boost::fusion::remove_if用法的测试程序
  6. android和flask交互,java - 当我从Android向Flask Web服务发送参数时,如何解决“ SSL库故障”? - 堆栈内存溢出...
  7. java登录界面命令_Java命令行界面(第3部分):jbock
  8. 本地使用Rfam 12.0+
  9. 怎么解锁blockinput锁定的键盘_电脑键盘上的三个灯分别是什么作用?虽然很简单,但是很实用...
  10. JavaScript——模块化的历史进程梳理
  11. iOS 单个页面设置横屏
  12. 深度linux 官网,深度OS
  13. CFAR原理详解及其matlab代码实现
  14. 过去分词做宾语补足语
  15. 谷歌统计 Google Analytics使用gtag.js 进行数据统计(VUE)
  16. H264编码-码率控制原理以及JM代码分析
  17. 全国5M分辨率遥感图免费下载!还有遥感卫星视频可下载
  18. python神经网络构建图_如何用卷积神经网络构建图像?
  19. Switch case 使用及嵌套语法
  20. Python绘制3D立体花

热门文章

  1. 奥比中光Astra Pro VS2019 openni2.3 配置
  2. 20本机器学习与数据科学书籍
  3. 微信小程序校园小情书
  4. 毕业设计的目的与要求
  5. 【Gurobi】| Gurobi中非线性约束的对偶值的获取:QCP、QCQP、SOCP
  6. 无线打印行业调研报告 - 市场现状分析与发展前景预测
  7. 宁波大学计算机非全,宁波大学非全日制研究生管理办法(试行)
  8. 时间的增加,减少,以及时间差
  9. tensorflow学习笔记(1)------北京大学 曹健
  10. 《最后的武士》渡边谦在战场上问阿汤哥的一句话