目录

独立看门狗IWDG详细解析

为什么要有看门狗?

看门狗的定时原理

寄存器功能简介

看门狗定时器计数原理

看门狗相关寄存器

KR寄存器

PR寄存器

RLR寄存器

SR寄存器

看门狗相关基础知识

什么是“溢出时间”?

预分频系数有什么用?

“溢出时间”如何计算?

不同预分频系数,不同重装载值对应的溢出时间

最短超时时间与最长超时时间

IWDG独立看门狗操作库函数

IWDG独立看门狗操作步骤

函数示例

Main.c

Led.c

Led.h

Iwdg.c

Iwdg.h

Key.h

Key.c

运行结果


独立看门狗IWDG详细解析

为什么要有看门狗?

看门狗的定时原理

寄存器功能简介

看门狗定时器计数原理

看门狗相关寄存器

KR寄存器

PR寄存器

RLR寄存器

SR寄存器

看门狗相关基础知识

什么是“溢出时间”?

溢出时间指的是“从重装载值递减至0的时间”,当距离上次使能键寄存器的时间超过溢出时间,那么看门狗会自动复位,重投开始执行程序。例如:当我们设定溢出时间为1s,但是我们操作键寄存器距离上次使能键寄存器的时间已经是1.2s了,这说明程序已经Reset复位,从头开始执行(从main函数的头部开始执行)。

预分频系数有什么用?

“溢出时间”如何计算?

不同预分频系数,不同重装载值对应的溢出时间

最短超时时间与最长超时时间

最短超时时间

当重装载值是1且预分频系数为1时,溢出时间为(1/40KHz)s

最长超时时间

当重装载值是0x0FFF且预分频系数是256时,溢出时间是(1/40KHz*256*0xFFF)s

IWDG独立看门狗操作库函数

IWDG独立看门狗操作步骤

步骤说明

对应库函数说明

取消寄存器写保护

IWDG_WriteAccessCmd()

设置独立看门狗的预分频系数,确定时钟

IWDG_SetPrescaler()

设置看门狗重装载值,确定溢出时间

IWDG_SetReload()

应用程序喂狗

IWDG_ReloadCounter()

使能看门狗

IWDG_Enable()

函数示例

Main.c

#include "iwdg.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "stm32f10x.h"  int main()
{  delay_init(); // 使能定时器初始化delay函数  delay_ms(500);  LED_InitConfig();  IWDG_InitConfig(625, IWDG_Prescaler_16); // 溢出时间为1s  KEY_InitConfig();  LED0 = 0;  while(1)  {  if(KEY0 == 0)  {  delay_ms(10);  if(KEY0 == 0)  {  IWDG_ReloadCounter(); // 配置KR寄存器将重装载值加载进递减计数器中  }  }     }
}  

Led.c

#include "led.h"
#include "stm32f10x.h"  void LED_InitConfig()
{  GPIO_InitTypeDef GPIO_InitStructure;  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能外设时钟  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化IO口属性  GPIO_ResetBits(GPIOB, GPIO_Pin_5); // 初始化IO口状态
}  

Led.h

#ifndef _LED_H
#define _LED_H  #include "sys.h"  void LED_InitConfig();  #define LED0 PBout(5)  #endif  

Iwdg.c

#include "iwdg.h"
#include "stm32f10x.h"  void IWDG_InitConfig(u16 RLR,u16 PR)
{  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); // 先对KR寄存器写入0x5555来允许修改PR寄存器与RLR寄存器的值  IWDG_SetPrescaler(PR); // 给预分频寄存器设置预分频系数  IWDG_SetReload(RLR); // 在重装载寄存器中设置重装载值  IWDG_ReloadCounter(); // 对KR寄存器吸入0xAAAA来将重装载值装入递减计数器中替换默认值0x0FFF  IWDG_Enable(); // 对KR寄存器写入0xCCCC来配置完IWDG所有属性后使能IWDG独立看门狗
}  

Iwdg.h

#ifndef _IWDG_H
#define _IWDG_H  #include "sys.h"  void IWDG_InitConfig(u16 RLR,u16 PR);  #endif  

Key.h

#ifndef _KEY_H
#define _KEY_H  #include "stm32f10x.h"  void KEY_InitConfig();  #define KEY0 GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)  #endif  

Key.c

#include "key.h"
#include "stm32f10x.h"  void KEY_InitConfig()
{  GPIO_InitTypeDef GPIO_InitStructure;  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); // 使能外设时钟  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOE, &GPIO_InitStructure); // 配置KEY0的属性  // 切记:引脚在输入状态不可以给予引脚初始电平
}  

运行结果

当我们在复位之前按下KEY0时,LED0不会闪烁,LED0会保持亮的状态。

独立看门狗IWDG详细解析相关推荐

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

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

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

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

  3. stm32专题三十四:独立看门狗 IWDG

    独立看门狗简介 IWDG结构框图 (1)独立看门狗时钟 独立看门狗的时钟由独立的 RC 振荡器 LSI 提供, 即使主时钟发生故障它仍然有效,非常独立. LSI 的频率一般在 30~60KHZ 之间, ...

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

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

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

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

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

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

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

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

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

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

  9. 独立看门狗 IWDG

    一,独立看门狗 二,独立看门狗的时钟源 独立看门狗拥有自己的时钟源,不依赖PLL时钟输出的分频信号,能够独立运行,这样子的好处就是PLL假如受到干扰, 导致运行异常,独立的看门狗还能正常地进行工作,如 ...

最新文章

  1. egg extend ts_KPL官方给各战队排T次:大王DYG,AG是老2、TS仅K
  2. Spring boot转发请求
  3. Top 10 Things I Know for Sure-深信不疑的十大哲理
  4. TMainMenu 类 TShortCut值
  5. 科普 | 一文完全理解AUC-ROC曲线
  6. React中的纯组件
  7. 分页地址的地址结构怎么理解?
  8. 计算机桌面变成立体,win7系统将桌面变成立体桌面的两种方法介绍
  9. 数学建模英文论文写作
  10. 词语相似度分析(《知网》、同义词词林、word2vec)
  11. 怎样用计算机二元一次方程,键入公式在计算机如何键入二元一次方程式公式 – 手机爱问...
  12. 用计算机新字库打出的文字,为什么用五笔打字有很多字打不出来(GBK和GB2312字库的区别)...
  13. 上网软件 Chrome/FireFox插件-gooreplacer
  14. 【apt】The following signatures couldn‘t be verified because the public key is not available
  15. leetcode (Arranging Coins)
  16. Python音乐跳舞毯(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)
  17. totolinkn200up怎么设置_TOTOLINK N200UP无线网卡驱动
  18. 【软件逆向-自动化】逆向工具大全
  19. hive取当前周的周一
  20. 了解自动驾驶 从ADAS开始

热门文章

  1. 狼羊白菜过河问题C++
  2. 有关计算机试题,有关职业计算机测试题
  3. ZZULIOJ-1049,平方和与立方和(Python)
  4. C++___vertor
  5. 使用funshionchart技术总结
  6. jquery 点击元素以外任意地方隐藏该元素的方法
  7. A12X性能赶上Intel,苹果放弃Intel还差点什么?
  8. 从神话诗歌到奇幻科学的人类探索史·《月亮》·一
  9. Excel图表之美-陈明霞-专题视频课程
  10. 课程格子是这样做大学生市场的