(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 ...
随机推荐
- shell脚本的调试sh-x
转至:https://blog.csdn.net/yjgithub/article/details/80908079 目录 一.简介 二.sh -x 脚本名.sh 三.set -x 一.简介 使用sh ...
- Pycharm:使用Edit Custom VM Options导致Pycharm无法启动
解决办法: Edit Custom VM Options用来扩大内存,但是内存设置不当可能会导致Pycharm无法启动 如果无法启动,可以在我的文档中的pycharm201X.X(日期不同名字也不同) ...
- IIS部署遇到问题(没有相关资源/权限不足无法读取配置文件)及解决方法
1:找不到web.config,如下图: 解决办法: 点击目录浏览--打开功能--启用(应用),再次浏览解决 2:再次预览出现别的错误500.19,权限不足,如下图: 解决办法:(右键编辑权限或者右上 ...
- (第二章第一部分)TensorFlow框架之文件读取流程
本章概述:在第一章的系列文章中介绍了tf框架的基本用法,从本章开始,介绍与tf框架相关的数据读取和写入的方法,并会在最后,用基础的神经网络,实现经典的Mnist手写数字识别. 有四种获取数据到Tens ...
- SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)
SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...
- laravel7 搜索关键字标红及手机号,身份证号隐藏
控制器代码 public function index(Request $request) { //接受搜索关键字 $word = $request->get('name'); $start = ...
- 利用mysqldump 与 nginx定时器 定时备份mysql库
1.安装mysqldump(如果备份远程mysql库,本地不用安装mysql 也可以单独使用) yum -y install holland-mysqldump.noarch 2.编写备份脚本 首先这 ...
- mysql使用group by分组时出现错误ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and
问题: 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...
- 分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘
Citus 提供对大型数据集的实时查询.我们在 Citus 常见的一项工作负载涉及为事件数据的实时仪表板提供支持. 例如,您可以是帮助其他企业监控其 HTTP 流量的云服务提供商.每次您的一个客户端收 ...
- GitLab 常用命令
1. 进入本地仓库访问位置之后执行命令 1) 远程仓库相关命令检出仓库:$ git clone git://github.com/jquery/jquery.git查看远程仓库:$ git remot ...