STM32F429 >> 15. IWDG_独立看门狗

发布者:画意人生最新更新时间:2019-08-29 来源: eefocus关键字:STM32F429  IWDG  独立看门狗 手机看文章 扫描二维码
随时随地手机看文章

STM32 有两个看门狗,一个是独立看门狗,另一个是窗口看门狗


独立看门狗用通俗一点的话来解释就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即 IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。


IWDG 功能框图

在这里插入图片描述


①. 独立看门狗时钟

独立看门狗的时钟由独立的 RC 振荡器 LSI 提供,即使主时钟发生故障它仍然有效。LSI 的频率一般在 30~60KHZ 之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHZ。


②. 计数器时钟

递减计数器的时钟由 LSI 经过一个 8 位的预分频器得到,我们可以操作预分频器寄存器 IWDG_PR 来设置分频因子,分频因子可以是:[4,8,16,32,64,128,256,256],计数器时钟CK_CNT= 40/ (4*2^PRV)(PRV 是预分频器寄存器的值),一个计数器时钟计数器就减一。


③. 计数器

独立看门狗的计数器是一个 12 位的递减计数器,最大值为 0XFFF,当计数器减到 0 时,会产生一个复位信号:IWDG_RESET,让程序重新启动运行,如果在计数器减到 0 之前刷新了计数器的值的话,就不会产生复位信号,重新刷新计数器值的这个动作我们俗称喂狗。


④. 重装载寄存器

重装载寄存器是一个 12 位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立看门狗的溢出时间。超时时间 Tout = (4*2^prv) / 40 * rlv (s) ,prv 是预分频器寄存器的值,rlv 是重装载寄存器的值。


⑤. 关键字(密钥)寄存器

键寄存器 IWDG_KR 可以说是独立看门狗的一个控制寄存器,主要有三种控制方式,往这个寄存器写入下面三个不同的值有不同的效果。


键值 键值作用

0xAAAA 把RLR 的值重装载到CNT

0x5555 PR 和RLR 这两个寄存器可写

0xCCCC 启动IWDG

通过写往键寄存器写 0XCCC 来启动看门狗是属于软件启动的方式,一旦独立看门狗启动,它就关不掉,只有复位才能关掉。


⑥. 状态寄存器

状态寄存器 SR 只有位 0:PVU 和位 1:RVU 有效,这两位只能由硬件操作,软件操作不了。


RVU:看门狗计数器重装载值更新,硬件置 1 表示重装载值的更新正在进行中,更新完毕之后由硬件清 0。

PVU: 看门狗预分频值更新,硬件置‘1‘指示预分频值的更新正在进行中,当更新完成后,由硬件清 0。

所以只有当 RVU/PVU 等于 0 的时候才可以更新重装载寄存器/预分频寄存器。


独立看门狗一般用来检测和解决由程序引起的故障,比如一个程序正常运行的时间是50ms,在运行完这个段程序之后紧接着进行喂狗,我们设置独立看门狗的定时溢出时间为60ms,比我们需要监控的程序 50ms 多一点,如果超过 60ms 还没有喂狗,那就说明我们监控的程序出故障了,跑飞了,那么就会产生系统复位,让程序重新运行。


由于看门狗属于单片机内部资源,并且配置非常简单,故程序也非常简短,其初始化程序为:


bsp_iwdg.c

/**

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

  * @file    bsp_iwdg.c

  * @author  Waao

  * @version V1.0.0

  * @date    15-Feb-2019

  * @brief   This file contains some board support package's functions for the IWDG.

  *            

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

  * @attention

  *

  * None

*

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

  */


#include "bsp_iwdg.h"



/**

  * @brief  Configure the IWDG and enable it.

  * @param  None  

  * @retval None

  */

void iwdg_Config(void)

{

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

IWDG_SetPrescaler(IWDG_Prescaler_32);

IWDG_SetReload(0xFFF);

IWDG_Enable();

}


我的程序中使用按键触发中断喂狗:


stm32f4xx_it.c

void KEY1_IRQHandler(void)

{

LED_GREEN;

IWDG_ReloadCounter();

EXTI_ClearITPendingBit(KEY1_INT_EXTI_LINE);

}


在该程序中,每次按下按键都可以喂狗,使计数器重新开始计数,否则计数器为零时程序将重启(复位)


关键字:STM32F429  IWDG  独立看门狗 引用地址:STM32F429 >> 15. IWDG_独立看门狗

上一篇:STM32F429 >> 14. TIM_(二)_高级定时器 (Code)
下一篇:STM32F429 >> 16. WWDG_窗口看门狗

推荐阅读最新更新时间:2024-10-29 18:36

STM32CubeMX系列 | 独立看门狗
1. 独立看门狗简介 看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的复杂一点,看门狗就是能让程序出问题是能重新启动系统 STM32的独立看门狗(IWDG)由内部专门的40KHz低速时钟驱动,即使主时钟发生故障,它也仍然有效。注意IWDG的时钟是一个内部RC时钟,是一个在30~60KHz之间的一个可变化的时钟,只是我们在估算的时候以40KHz的频率来计算,看门狗对时间的要求不是很精确 独立看门口功能框图如下。实际上独立看门口狗是一个递减计数器,当计时器的值减到0时,IWDG会产生一个复位信号,系统复位重新启动。为避
[单片机]
意法半导体推出独立看门狗芯片STWD100
模拟和混合信号集成电路全球领先厂商意法半导体推出一款全新看门狗定时器芯片 STWD100 。通过增加一个芯片使能输入接口,STWD100可在系统编程或开机期间防止自动生成复位信号,为开发人员控制和管理应用提供了更高的灵活性。其它品牌的同级产品均没有芯片使能功能。 作为加入意法半导体看门狗定时器系列产品的首款独立器件,STWD100采用5引脚SC70-5封装,占板面积为2.0 x 2.1mm,节省电路板空间。同时,通过提供一个芯片使能接口,新产品为开发设计带来更多的便利性。新产品还提供另外一款占板面积为2.8 x 2.8mm的SOT23-5封装。 STWD100提供多种配置规格,超时设定包括3.4ms、6.3m
[单片机]
STM32F429 >> 13. SPI 通讯(code)
=========================== SPI 详细教程在这 =============================== bsp_spi_flash.h /** ****************************************************************************** * @file bsp_spi_flash.h * @author Waao * @version V1.0.0 * @date 19-Jan-2019 * @brief This file contains some board support package's
[单片机]
第29章 STM32F429的系统bootloader之USB DFU方式固件升级
29.1 初学者重要提示 学习本章节前,务必优先学习第28章。 本章用到的相关软件和文档下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=96573 。 软件STM32CubeProg和DfuSe都支持USB DFU,但是两个软件不能都安装使用,因为这两个软件的USB驱动不同,导致工作在系统bootloader模式的板子通过USB线接到电脑端时,只有一个软件的驱动被识别。 DfuSe是老版的USB DFU软件,不推荐大家使用了。建议使用STM32CubeProg,此软件实现了之前的DfuSe,STLINK小软件和Flashloader三合一,并且支持外部EEPRO
[单片机]
第29章 <font color='red'>STM32F429</font>的系统bootloader之USB DFU方式固件升级
STM32F429之使用FPU和DSP
CMSIS的DSP库提供了一类高级数学处理功能,包括: Basic math functions Fast math functions Complex math functions Filters Matrix functions Transforms Motor control functions Statistical functions Support functions Interpolation functions 该库使用不同的函数来处理8位、16位和32位整型以及32位浮点型数据。 STM32F429具有浮点处理器(FPU),在开启FPU的情况下,浮点数运算性能大大提高,配以DSP库的
[单片机]
stm32f103 独立看门狗
STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,所以并不是准确的40Khz,而是在30~60Khz之间的一个可变化的时钟,只是我们在估算的时候,以40Khz的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。 首先我们得讲解一下看门狗的原理。我们总结一下: 单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)。 下面我们在了解
[单片机]
stm32f103 <font color='red'>独立</font><font color='red'>看门狗</font>
STM32F1_WDG看门狗独立+窗口)
前言 今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。 总结一下二者的区别: 1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR 2)、IWDG没有中断,WWDG有中断 3)、IWDG是12位递减的。WWDG是7位递减的 4)、IWDG只有下限,WWDG有下限和上限 5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。 看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也
[单片机]
STM32F1_WDG<font color='red'>看门狗</font>(<font color='red'>独立</font>+窗口)
STM32 嵌入式学习入门 —— 窗口看门狗 & 独立看门狗
一、看门狗概述: 1.为什么需要看门狗? 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。STM32内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗/窗口看门狗)可以用来检测和解决由软件错误引起的故障。当计数器达到给定的超时值时,触发一个中断(仅适用窗口看门狗)或者产生系统复位。
[单片机]
STM32 嵌入式学习入门 —— 窗口<font color='red'>看门狗</font> & <font color='red'>独立</font><font color='red'>看门狗</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved