32F的窗口看门狗中有一个7位的递减计数器,它会在出现下述2种情况之一时产生看门狗复位:
1)当计数器的数值从0x40减到0x3F时
2)当刷新看门狗时计数器的数值大于某一设定数值时,此设定数值在WWDG_CFR寄存器定义
对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了;如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。
WWDG与IWDG的主要区别是有一个窗口控制,WWDG的中断是给你最后一次喂狗的机会,通常这个中断不是让你执行喂狗操作的;一般进到这个中断时表示你在其它地方安排的喂狗操作不能奏效,而发生这种现象时,肯定是系统有问题了,或者是程序有Bug,或者是碰到了干扰,在这种情况下,这个中断是为了让你的程序在发生真正的看门狗复位前,有一个紧急处理的机会,如保存重要的数据,或做系统刹车等操作。
由此看出,简单地在WWDG中断喂狗,既没有发挥WWDG相对于IWDG的优势,又因为在中断中喂狗而为以后的产品留下了隐患。
注:通常的看门狗与STM32的IWDG特点是一样的。
关键字:STM32 窗口看门狗
引用地址:
如何使用STM32的窗口看门狗
推荐阅读最新更新时间:2024-11-03 08:47
STM32 ADC1_DMA
重温一个旧的例程 ADC 仍然十分简单,将DMA应用于 ADC 这个就比较实用了。 ADC规则数据寄存器(ADC_DR) 0x4001244C /************************************************************** ADC PB1_ADC9 ***************************************************************/ #include STM32Lib\\stm32f10x.h #define ADC1_DR_Address ((uint32_t)0x4001244C) extern u16 adc; void
[单片机]
STM32的看门狗使用方法
简介:stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。主要作用是——可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。 具体的实现步骤:开启看门狗,设置减计数的初始值,当计数值达到超时值时,产生MCU复位,此时本来运行的程序终止重新启动单片机(发生了故障)。在使用了看门狗之后,在正常运行的程序中加入喂狗的程序,即采用定时器的方式每隔一段时间进行一次喂狗重置计数装载值,这样,只要程序正常运行,没有出现故障或软件错误,就会不断的定时喂狗,从而不会使计数值达到超时值产生复位。 独立看门狗IWDG: IWDG主要性能 ●自由运行的递减
[单片机]
利用STM32的定时器输出PWM
使用芯片:STM32F103ZET6 目的:利用stm32的定时器3输出PWM 所用寄存器及相应位(参考STM32参考手册): (1)控制寄存器1(TIM1_CR1) 第0位CEN:计数器使能位;通过函数void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) 来实现。 第4位DIR:计数方式,默认向上,也可以设置为向下计数; 第5、6位CMS:设置计数对齐方式; 第7位ARPE:自动重装载预装载允许位,为0时TIMx_ARR没有缓冲,为1时TIMx_ARR被装入缓冲器 第8、9位CKD:设置定时器的时钟分频因子为1、2、4。 (2)DMA/中断使能寄存器(TIM
[单片机]
基于STM32的带触摸屏的无线解说器
本实例是以STM32F103系列单片机作为核心处理器,利用VS1003芯片进行音频解码的一种无线解说器。通过对触摸显示屏的操作,实现手持部分和终端部分二者的无线通讯。系统采用大容量的SD卡作为存储部分,通过SPI将VS1003B与SD卡的数据与STM32进行交互通信。本解说器在播放时没有出现理论上的断续情况,音质较好,占用的软硬件资源也较少,为后续的扩展留下了很大空间。 无线讲解器通常用于工厂、博物馆、景区等室外空旷场所供参观介绍用,通过事先在场所安放无线发射模块,并控制发射模块的工作范围。听众到达景点后,手上的讲解器将自动接收各个地点的无线编码信号,经解码后即可将存储在SD卡中的语音播放,以便清晰地全程收听全部介绍内容。 1
[电源管理]
STM32学习记录20 FFT
前些日子,因为需要在STM32F103系列处理器上,对采集的音频信号进行FFT,所以花了一些时间来研究如何高效并精确的在STM32F103系列处理器上实现FFT。在网上找了很多这方面的资料做实验并进行比较,最终选择了使用STM32提供的DSP库这种方法。 本文将以一个实例来介绍如何使用STM32提供的DSP库函数进行FFT。 1.FFT运算效率 使用STM32官方提供的DSP库进行FFT,虽然在使用上有些不灵活(因为它是基4的FFT,所以FFT的点数必须是4^n),但其执行效率确实非常高效,看图1所示的FFT运算效率测试数据便可见一斑。该数据来自STM32 DSP库使用文档。 图1 FFT运算效率测试数据 由图
[单片机]
总结写的stm32的KEY控制LED
stm32的学习就是弄懂是怎么进行软件配置,先明白硬件连接,再结合起来; #include stm32f4xx.h #include led.h #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) // 这里读取IO的状态,将stm32的IO口作为输入使用 #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) #define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) #define LED0 PFout(9) //DSO LED
[单片机]
STM32单片机的按键检测程序设计
STM32的按键检测相对比较简单,首先按部就班的初始化连接的到的i/o,然后写一个按键扫描函数,这个和51单片机的差不多。 以下是一个比较典型的例子: 利用按键控制LED: key.h文件 #ifndef__KEY_H #define__KEY_H #include“sys.h“ #defineKEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//读取按键0 #defineKEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键1 #defineKEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//读取按键2
[单片机]
STM32入门学习笔记之外置FLASH读写实验(下)
(2)创建w25q128.c并输入以下代码。 /********************************************************************************************************* FLASH 驱 动 程 序 *********************************************************************************************************/ #include w25q128.h #include delay.h /***************
[单片机]