(stm32f103学习总结)—独立看门狗(IWDG)
一、IWDG介绍
1.1 IWDG简介
STM32F1芯片内部含有两个看门狗外设,一个是独立看门狗IWDG,另 一个是窗口看门狗WWDG。两个看门狗外设(独立和窗口)均可用于检测 并解决由软件错误导致的故障。独立看门狗简单理解其是就是一个12位 递减计数器,当计数器从某一个值递减到0时(如果看门狗已激活),系 统就会产生一次复位。如果在计数器递减到0之前刷新了计数器值,那么 系统就不会产生复位。这个刷新计数器值过程我们称之为“喂狗”。看 门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作
1.2 IWDG结构框图
要更好的理解独立看门狗,就需要了解它内部的结构

二、IWDG配置步骤
(1)开启寄存器访问(给IWDG_KR寄存器写入0X5555)
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
2)设置IWDG预分频系数和重装载值
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
void IWDG_SetReload(uint16_t Reload);
Tout = (4*2^pre) / 40 * rlr
其中Tout为独立看门狗溢出时间,单位是ms。pre是预分频器系数(0-6),rlr 是重装载寄存器的值,公式内的40是独立看门狗的时钟。
(3)重载计数器值(喂狗)(给IWDG_KR寄存器写入0XAAAA)
IWDG_ReloadCounter();
(4)开启IWDG(给IWDG_KR寄存器写入0XCCCC)(外设开启)
IWDG_Enable();
4.编写独立看门狗控制程序
本章所要实现的功能是:通过K_UP按键进行喂狗,喂狗的时候D2指示 灯亮,同时串口输出“喂狗”提示信息,超过喂狗时间系统重启D2指示 灯灭,同时串口输出“复位系统”提示信息,同时使用D1指示灯闪烁表 示系统运行。程序框架如下:
(1)初始化IWDG(开启IWDG,设置溢出时间)
(2)编写主函数
1 #ifndef _iwdg_H
2 #define _iwdg_H
3
4 #include "system.h"
5 void IWDG_Init(u8 pre,u16 rlr);
6 void IWDG_FeedDog(void); //喂狗
7
8 #endif
1 #include "iwdg.h"
2
3 /*******************************************************************************
4 * 函 数 名 : IWDG_Init
5 * 函数功能 : IWDG初始化
6 * 输 入 : pre:预分频系数(0-6)
7 rlr:重装载值(12位范围0xfff)
8 独立看门狗复位时间计算公式:t=(4*2^pre*rlr)/40
9 * 输 出 : 无
10 *******************************************************************************/
11 void IWDG_Init(u8 pre,u16 rlr)
12 {
13 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //取消寄存器写保护
14 IWDG_SetPrescaler(pre);//设置预分频系数 0-6
15 IWDG_SetReload(rlr);//设置重装载值
16 IWDG_ReloadCounter(); //重装载初值
17 IWDG_Enable(); //打开独立看门狗
18
19 }
20
21 /*******************************************************************************
22 * 函 数 名 : IWDG_FeedDog
23 * 函数功能 : 喂狗
24 * 输 入 : 无
25 * 输 出 : 无
26 *******************************************************************************/
27 void IWDG_FeedDog(void) //喂狗
28 {
29 IWDG_ReloadCounter(); //重装载初值
30 }
1 #include "system.h"
2 #include "SysTick.h"
3 #include "led.h"
4 #include "usart.h"
5 #include "key.h"
6 #include "iwdg.h"
7
8
9 /*******************************************************************************
10 * 函 数 名 : main
11 * 函数功能 : 主函数
12 * 输 入 : 无
13 * 输 出 : 无
14 *******************************************************************************/
15 int main()
16 {
17 u8 i=0;
18
19 SysTick_Init(72);
20 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
21 LED_Init();
22 USART1_Init(9600);
23
24 KEY_Init();
25 IWDG_Init(4,800); //只要在1280ms内进行喂狗就不会复位系统
26
27 led2=1;
28 printf("复位系统\r\n");
29
30 while(1)
31 {
32 if(KEY_Scan(0)==KEY_UP)
33 {
34 IWDG_FeedDog();//喂狗
35 led2=0;
36 printf("喂狗\r\n");
37 }
38
39 i++;
40 if(i%20==0)
41 {
42 led1=!led1;
43
44 }
45 delay_ms(10);
46 }
47 }
(stm32f103学习总结)—独立看门狗(IWDG)的更多相关文章
- stm32 独立看门狗 IWDG
独立看门狗IWDG 独立看门狗简单理解就是一个12位递减计数器,当计数器从某一个值递减到0时,系统就会产生一次复位 独立看门狗由专用低速时钟LSI驱动,其频率一般在30-60KHz之间,通常选择40K ...
- STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
- 独立看门狗 IWDG
一,独立看门狗 二,独立看门狗的时钟源 独立看门狗拥有自己的时钟源,不依赖PLL时钟输出的分频信号,能够独立运行,这样子的好处就是PLL假如受到干扰, 导致运行异常,独立的看门狗还能正常地进行工作,如 ...
- STM8L独立看门狗IWDG
简单扼要 void IWDG_Init(void)//初始化 { IWDG->KR = 0xcc;//启动IWDG IWDG->KR = 0x55;//解除PR及RLR的写保护 IWDG- ...
- stm32 独立看门狗学习
STM32F10xxx内置两个看门狗,提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障. 独立看门狗(IWDG)由专用的低速 ...
- IWDG—独立看门狗
本章参考资料:<STM32F4XX 中文参考手册> IWDG 章节.学习本章时,配合<STM32F4XX 中文参考手册> IWDG 章节一起阅读,效果会更佳,特别是涉及到寄存器 ...
- 第34章 IWDG—独立看门狗—零死角玩转STM32-F429系列
第34章 IWDG—独立看门狗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)
一 前沿废语: 之前有很风靡的游戏,名字叫<看门狗>.该游戏用了很新的引擎技术,打造出了一个辽阔庞大的世界,内容是玩家Aiden·Pearce(主角)是一名精通黑客技术的高手,当时 ...
- STM32独立看门狗(IWDG)
造成程序跑飞,只是程序的正常运行状态被打断而进入死循环,从而使单片机控制的系统无法正常工作.看门狗就是一种专门用于检测单片机程序运行状态的硬件结构. STM32内部自带了两个看门狗,独立看门狗(IWD ...
随机推荐
- 二分查找法&大O表示法
二分查找法的输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null Python代码(来源于<算法图解>一书): def binary_search( ...
- MySQL索引下推,原来这么简单!
大家好,我是大彬~ 今天给大家分享MySQL的索引下推. 什么是索引下推 索引条件下推,也叫索引下推,英文全称Index Condition Pushdown,简称ICP. 索引下推是MySQL5.6 ...
- Activity跳转显式方法及隐式方法
1 public class AActivity extends AppCompatActivity { 2 private Button btnJump; 3 @Override 4 protect ...
- Java 类方法和类变量
目录 一.类变量 1.如果定义类变量 2.如何访问类变量 3.类变量的使用注意事项和细节 二.类方法 1.类方法的形式 2.类方法的调用 3.类方法经典使用场景 4.类变量和类方法 三.main方法 ...
- JVM上篇:JVM与Java体系结构
JVM笔记 JVM传言 Java不是最强大的语言,但是JVM是最强大的虚拟机 虚拟机分类 系统虚拟机 类似VMware,就属于系统虚拟机,它提供了一个可运行完整操作系统的平台 程序虚拟机 Java虚拟 ...
- Visual Studio快捷技能
一.移动光标
- 矩池云里查看cuda版本
可以用下面的命令查看 cat /usr/local/cuda/version.txt 如果想用nvcc来查看可以用下面的命令 nvcc -V 如果环境内没有nvcc可以安装一下,教程是矩池云上如何安装 ...
- 矩池云上TensorBoard/TensorBoardX配置说明
Tensorflow用户使用TensorBoard 矩池云现在为带有Tensorflow的镜像默认开启了6006端口,那么只需要在租用后使用命令启动即可 tensorboard --logdir lo ...
- tensorflow core 核心目标依赖图
Tensorflow的核心代码在core模块中,56w行的代码量让人望而生畏,熟悉了bazel工具之后,发现BUILD文件是理清代码结构的很好的资源,但使用bazel query语法提取出来//ten ...
- 如何用webgl(three.js)搭建处理3D隧道、3D桥梁、3D物联网设备、3D高速公路、三维隧道桥梁设备监控-第十一课
开篇废话: 跟之前的文章一样,开篇之前,总要写几句废话,大抵也是没啥人看仔细文字,索性我也想到啥就聊啥吧. 这次聊聊疫情,这次全国多地的疫情挺严重的,本人身处深圳,深圳这几日报导都是几十几十的新增病例 ...