一、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)的更多相关文章

  1. stm32 独立看门狗 IWDG

    独立看门狗IWDG 独立看门狗简单理解就是一个12位递减计数器,当计数器从某一个值递减到0时,系统就会产生一次复位 独立看门狗由专用低速时钟LSI驱动,其频率一般在30-60KHz之间,通常选择40K ...

  2. STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结

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

  3. 独立看门狗 IWDG

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

  4. STM8L独立看门狗IWDG

    简单扼要 void IWDG_Init(void)//初始化 { IWDG->KR = 0xcc;//启动IWDG IWDG->KR = 0x55;//解除PR及RLR的写保护 IWDG- ...

  5. stm32 独立看门狗学习

    STM32F10xxx内置两个看门狗,提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障. 独立看门狗(IWDG)由专用的低速 ...

  6. IWDG—独立看门狗

    本章参考资料:<STM32F4XX 中文参考手册> IWDG 章节.学习本章时,配合<STM32F4XX 中文参考手册> IWDG 章节一起阅读,效果会更佳,特别是涉及到寄存器 ...

  7. 第34章 IWDG—独立看门狗—零死角玩转STM32-F429系列

    第34章     IWDG—独立看门狗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  8. STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)

    一     前沿废语: 之前有很风靡的游戏,名字叫<看门狗>.该游戏用了很新的引擎技术,打造出了一个辽阔庞大的世界,内容是玩家Aiden·Pearce(主角)是一名精通黑客技术的高手,当时 ...

  9. STM32独立看门狗(IWDG)

    造成程序跑飞,只是程序的正常运行状态被打断而进入死循环,从而使单片机控制的系统无法正常工作.看门狗就是一种专门用于检测单片机程序运行状态的硬件结构. STM32内部自带了两个看门狗,独立看门狗(IWD ...

随机推荐

  1. 使用linux 的shell脚本进行sftp文件上传与下载

    一.批量上传: #!/bin/bash #SFTP配置信息 #用户名 USER=root #密码 PASSWORD=5EYS40T04BMF #待上传文件根目录 SRCDIR=/u02/dab/sft ...

  2. ❀ Spring5学习大总结

    一.了解 Spring 基本介绍.主要思想 IoC/DI 1.了解 Spring 基本介绍 (1) Spring是什么? Spring 是一个轻量级的 DI/IoC 和 AOP 容器的开源框架,致力于 ...

  3. Java:各版本官方文档

    JDK16:https://docs.oracle.com/en/java/javase/16/docs/api/index-files/index-1.html JDK15:https://docs ...

  4. Chrome:插件安装

    1.首先要下载一油猴插件管理器 得到crx文件 2.打开'扩展程序',在Chrome右上角 3.启动开发者模式(右上角),然后将油猴crx文件拖入界面中,会自动安装油猴 安装完成后,在工具栏中会出现油 ...

  5. 虚拟机服务启动失败报错npm ERR! code ELIFECYCLE

    可能是由于node_modules模块中缺失或者某些东西冲突引起的,我们可以使用如下的方法解决这个: rm -rf node_modules 删除,不询问 rm package-lock.json 删 ...

  6. 对element-ui的table组件的二次封装

    首先,使用过element-ui的table组建的同学都知道,每次使用的时候表头字段都要一个一个的去写,写起来很麻烦,既不美观又浪费时间,基于以上原因,对table组件进行二次封装,使我们在使用的时候 ...

  7. 目标检测常用库MMCV安装中遇到的问题总结

    我看很多教程说mmcv是只支持linux,支持windows版本较少,所以很难和torch.cuda匹配上,所以报错较多难安装.今天试了一下,遇到的和想到的报错问题基本如下: 一.首先是Microso ...

  8. tip多文件上传(自找)

    HTMl代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  9. Centos8 Yum 安装Nginx指定版本

    查看系统和EPEL的nginx版本   dnf info nginx 通过官方 yum 源安装nginx       vi /etc/yum.repos.d/nginx.repo 列出所有版本    ...

  10. jsplumbWithVue实现流程编排

    最近业务需求,通过拖拽,实现流程编排,包括编排元素中的各种属性,刚开始拿到这个需求,一头雾水啊,找度娘渡了好久,FQ翻了很久,各种博客CSDN搜索,最终技术选型还是定在了jsplumb,这要感谢@萌级 ...