STM32 的看门狗

合集下载

STM32单片机的模拟看门狗的库函数设置

STM32单片机的模拟看门狗的库函数设置

STM32单片机的模拟看门狗的库函数设置ADC的模拟看门狗用于检查电压是否越界。

他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LTR中设置。

库函数是使用ADC_AnalogWatchdogThresholdsConfig设置的,无论是常规通道还是注入通道,都非常简单。

当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断。

捕获这个中断,可以做出一些应对措施。

数据手册上特别之处的一个东西:模拟看门狗说使用的比较数据与ADC_CR2寄存器中设置的数据对齐方式无关。

看门狗比较是在数据对齐之前完成的。

先进行看门狗比较,再将数据放入ADC_DR数据寄存器。

在ST的库中,只有简单的三个与看门狗相关的函数:void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,uint16_t LowThreshold);void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel); 使用ADC_AnalogWatchdogThresholdsConfig设置触发看门狗的上下限使用ADC_AnalogWatchdogSingleChannelConfig配置要使用模拟看门狗的通道配置完成后使用ADC_AnalogWatchdogCmd启动模拟看门狗。

我写的函数很简单,就这么三行。

将模拟看门狗加在ADC1的CH1上。

代码如下:voidADC_WatchdogConfig(void){ ADC_AnalogWatchdogSingleChannelConfig(ADC1,ADC_Chan nel_0); ADC_AnalogWatchdogThresholdsConfig(ADC1,1500,0xFFF); ADC_AnalogWatchdogCmd(ADC1,ADC_AnalogWatchdog_SingleRegEnable);}NVIC中初始化模拟看门狗:void NVIC_Config(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;。

STM32F103系列单片机中的定时器工作原理解析

STM32F103系列单片机中的定时器工作原理解析

STM32F103系列单片机中的定时器工作原理解析
STM32F103系列的单片机一共有11个定时器,其中:
2个高级定时器
4个普通定时器
2个基本定时器
2个看门狗定时器
1个系统嘀嗒定时器
出去看门狗定时器和系统滴答定时器的八个定时器列表;
8个定时器分成3个组;
TIM1和TIM8是高级定时器
TIM2-TIM5是通用定时器
TIM6和TIM7是基本的定时器
这8个定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下这3种计数模式
计数器三种计数模式
向上计数模式:从0开始,计到arr预设值,产生溢出事件,返回重新计时
向下计数模式:从arr预设值开始,计到0,产生溢出事件,返回重新计时
中央对齐模式:从0开始向上计数,计到arr产生溢出事件,然后向下计数,计数到1以后,又产生溢出,然后再从0开始向上计数。

(此种技术方法也可叫向上/向下计数)
基本定时器(TIM6,TIM7)的主要功能:
只有最基本的定时功能,。

基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动
通用定时器(TIM2~TIM5)的主要功能:
除了基本的定时器的功能外,还具有测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。

8--独立看门狗

8--独立看门狗

3)重载计数值喂狗(向 IWDG_KR 写入 0XAAAA) 库函数里面重载计数值的函数是:
IWDG_ReloadCounter(); //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器 通过这句,将使 STM32 重新加载 IWDG_RLR 的值到看门狗计数器里 面。 即实现独立看门狗的喂狗操作。
4) 启动看门狗(向 IWDG_KR 写入 0XCCCC) 库函数里面启动独立看门狗的函数是:
IWDG_Enable(); //使能 IWDG 通过这句,来启动 STM32 的看门狗。注意 IWDG 在一旦启用,就不 能再被关闭!想要关闭,只能重启,并且重启之后不能打开 IWDG, 否则问题依旧,所以在这里提醒大家,如果不用 IWDG 的话,就不要 去打开它,免得麻烦。
THE END!!
设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂狗时间 (
也就是看门狗溢出时间) ,该时间的计算方式为: Tout=((4×2^prer) ×rlr) /40 其中 Tout 为看门狗溢出时间(单位为 ms) ;prer 为看门狗时钟预分频值 (IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值) ; 比如我们设定 prer 值为 4, rlr 值为 625,那么就可以得到 Tout=64×625/40=1000ms,这样,看门狗的溢出时间就是 1s,只要你在一 秒钟之内,有一次写入 0XAAAA 到 IWDG_KR,就不会导致看门狗复位( 当然写入多次也是可以的)。这里需要提醒大家的是,看门狗的时钟不是准 确的 40Khz,所以在喂狗的时候,最好不要太晚了,否则,有可能发生看门
键寄存器(IWDG_KR)
预分频寄存器(IWDG_PR)

第十二章 STM32单片机看门狗编程及其应用

第十二章 STM32单片机看门狗编程及其应用

• 在WWDG中断服务程序中,不应该重装递减计数器,而是让应 用程序在发生复位前,安排一些紧急处理的任务:保存一些 重要数据和状态参数、或做系统刹车等操作。
工程素质和技能归纳
• 复习C语言中的函数指针内容,掌握其在嵌入式系统中的应 用。 • 理解看门狗的作用,掌握STM32单片机独立看门狗的工作机 制、配置流程和方法。 • 掌握STM32单片机窗口看门狗的工作机制、配置流程和方 法,以及注意事项。
STM32单片机窗口看门狗编程
• 窗口看门狗( Window Watchdog,WWDG),通常用来检 测由外部干扰或不可预见的逻辑条件造成的应用程序背离正 常运行序列而产生的软件故障。WWDG从APB1时钟分频后 得到的时钟驱动,通过可配置的时间窗口来检测应用程序非 正常的过迟或过早的操作。
独立看门狗与窗口看门狗的区别
机器人辅助32位单片机课程
第十二章 STM32单片机看门狗编程及其应用
华中科技大学控制科学与工程系 深圳市中科鸥鹏智能科技有限公司 彭刚
摘要
• 看门狗介绍 • STM32单片机独立看门狗编程
任务一 任务二 独立看门狗编程 认识系统节编程
任务三 窗口看门狗编程
任务一 独立看门狗编程
• 利用IWDG进行检测和解决由系统错误引起的故障。 • 例程参考P284:IWDG.c • 当程序正常运行时,每隔30ms会重新装载IWDG计数器。当程 序进入死循环时,计数器递减到0,系统发生复位。当系统检 测到复位后电量LED。
任务一 独立看门狗编程
• 需要注意: • (1)因为独立看门狗使用的是LSI,所以复位与时钟初始化 函数RCC_Configuration中加入:
WWDG“过早”复位
WWDG“过迟”复位和“过早”复位

stm32看门狗原理

stm32看门狗原理

stm32看门狗原理stm32看门狗原理解析什么是看门狗•看门狗(Watchdog)是一种用于监控嵌入式系统运行状态的设备或模块。

•它可以定时检测系统是否正常运行,并在异常情况下采取相应措施,比如重启系统。

•stm32看门狗是一种特殊的硬件单元,用于监控stm32微控制器的运行状态。

看门狗的工作原理•stm32看门狗是通过一个可配置的定时器和一个计数器实现的。

•看门狗的计数器会在系统启动时开始计数,超过预设的阈值时,看门狗将产生一个复位信号。

•在正常的系统运行过程中,我们需要定期喂狗,也就是重置看门狗的计数器。

如果超过计数器范围内指定的时间没有重置,看门狗就会认为系统发生故障。

•当看门狗检测到系统异常时,它会强制将stm32芯片重新启动,使系统恢复到初始状态。

stm32看门狗的配置方法•首先,我们需要在stm32的初始化代码中启用看门狗模块。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // 使能看门狗时钟WWDG_SetPrescaler(WWDG_Prescaler_8); // 设置预分频器的分频系数为8WWDG_SetWindowValue(127); // 设置看门狗的窗口值WWDG_Enable(80); // 启动看门狗并设置计数器初值为80•上述代码会启用stm32看门狗模块,并进行一些基本的参数配置。

•接下来,在系统的运行过程中,我们需要定期喂狗,以防止系统异常。

WWDG_SetCounter(80); // 重置看门狗计数器•上述代码会重置看门狗计数器,确保系统正常运行时不会触发看门狗的复位信号。

看门狗的注意事项•为了确保系统的正常运行,需要根据系统的需求合理设置看门狗的参数,包括预分频器、窗口值和计数器初值等。

•设置过小的参数可能会导致误触发看门狗的复位信号,系统频繁重启。

•设置过大的参数可能无法及时检测到系统异常,系统在故障时无法及时恢复。

如何设计STM32单片机独立看门狗程序?

如何设计STM32单片机独立看门狗程序?

如何设计STM32单片机独立看门狗程序?[导读]今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O 引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。

即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。

今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。

即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。

1.1独立看门狗简介看门狗定时器 (WDT,Watch Dog Timer)是单片机的组成部分,它实际上是一个计数器,一般给看门狗一个数值,程序开始运行后看门狗开始倒计时。

如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始计数,也就是所谓的“喂狗”。

如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。

独立看门狗由专用低速时钟(LSI)驱动,计时主时钟发生故障它也仍然有效。

看门狗主要是用于在发生系统软件故障时,将系统复位。

也可以用于将系统从休眠或空闲模式唤醒。

STM32开发笔记WWDG和IWDG的用法

STM32开发笔记WWDG和IWDG的用法

STM32 独立看门狗IWDG 与窗口看门狗WWDG2010年05月03日星期一21:54 独立看门狗Iwdg——有独立时钟(内部低速时钟LSI---40KHz),所以不受系统硬件影响的系统故障探测器。

主要用于监视硬件错误。

窗口看门狗wwdg——时钟与系统相同。

如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。

一,独立看门狗看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数1.STM32独立看门狗IWDG的时限定为280微秒。

这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。

/* IWDG timeout equal to 280 ms (the timeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 –0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。

STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗

STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗

STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗
在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起的故障,低功耗模式是为了在CPU不需要继续运行时进入到休眠模式用以节省电能。

其中独立看门狗的时钟由独立的RC振荡器(STM32F10x 一般为40kHz)提供,即使在主时钟出现故障时,也仍然有效,因此可以在停止和待机模式下工作。

而且独立看门狗一旦启动,除了系统复位,它不能再被停止。

但这样引发的一个问题是当MCU进入到低功耗模式后由于CPU停止运行无法喂狗,会导致系统频繁复位。

那如何解决这个问题呢,难道独立看门狗和低功耗模式没法同时使用?
一个很好的方式是在休眠模式下通过RTC定时唤醒来喂狗,喂完够在进入继续进入到休眠模式。

比如看门狗复位的时间间隔为10s。

那么在进入休眠模式前设置RTC闹钟中断时间为5s。

这样每隔5s唤醒一次喂一次狗。

便可以很好的解决这个问题。

while(1)
{
// 执行任务
Task1();
Task2();
// ..
// 喂狗
dev_iwdg_feed();
// 进入待机模式开关
if(m_bEnterStandByMode)
{
// 使能外部中断,GPIOB3,用以MCU从待机模式唤醒
dev_exTI_enable(TRUE);
ENTERSTOPMODE:
// 设置RTC闹钟,5秒钟产生一次RTC闹钟中断*/
dev_rtc_setAlarm(5);。

STM32看门狗WWDG和IWDG的区别是什么

STM32看门狗WWDG和IWDG的区别是什么

STM32 看门狗WWDG 和IWDG 的区别是什么STM32 有2 个看门狗:独立看门狗和窗口看门狗。

独立看门狗IWDG:独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器,主要用于监视硬件错误。

窗口看门狗WWDG:系统内部的故障探测器,时钟与系统相同。

如果系统时钟不走了,这个狗也就失去了作用了,主要用于监视软件错误。

简单的讲,看门狗就是检测系统故障的,如果因为系统故障而没有及时喂狗,则引发复位重启。

对于一般的独立看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但是这样有一个隐患,有可能程序跑乱了又跑回正常的地方,或者跑乱的程序正好执行了刷新看门狗操作,这样的情况下一按的看门狗就检测不出来故障了;但是如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗,也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行,非正常地跳过了某些程序段的情况。

stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么

stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么

stm32看门狗时间计算独立看门狗和窗口看门狗的特性是什么STM32看门狗时间计算(TWDG):1.STM32看门狗的例子IWDG的时限定为280微秒。

这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。

/* IWDG TImeout equal to 280 ms (the TImeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动; 因此,即使主时钟发生故障它也仍然有效。

窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。

可通过IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256,通过以下方式喂狗:/* Reload IWDG counter */IWDG_ReloadCounter();3. 1.25KHz 即每周期为0.8ms。

stm32复位电路设计 浅析stm32复位电路方法

stm32复位电路设计 浅析stm32复位电路方法

stm32复位电路设计浅析stm32复位电路方法说到复位,我们都不会陌生,系统基本都有一个复位按键。

复位的种类有很多:上电复位、掉电复位、复位引脚复位、看门狗复位、软件复位等。

本文探讨的就是在stm32中复位电路如何设计。

STM32介绍STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。

内存包括64KB到256KB 闪存和20KB到64KB嵌入式SRAM。

新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。

stm32复位电路设计复位电路的作用是为了是系统恢复到初始状态的,单片机的复位方式也是存在好几种的:上电复位,系统复位,备份区域复位上电复位:其产生的条件是,当系统上电、掉电,以及系统从待机模式返回时,发生电源复位。

电源复位能够复位除了备份区域寄存器之外的所有寄存器的状态。

系统复位:以下任一事件发生时,均能产生一个系统复位:1. NRST引脚上的低电平(外部复位)2. 窗口看门狗计数终止(WWDG复位)3. 独立看门狗计数终止(IWDG复位)4. 软件复位(SW复位)5. 低功耗管理复位系统复位能够复位除时钟控制寄存器CRS中的复位标志和备份区域中的寄存器之外的所有寄存器。

备份区域复位:对于备份区域的复位,一种是在软件复位的时候设定备份区域控制寄存器。

STM32单片机ADC的模拟看门狗的测试

STM32单片机ADC的模拟看门狗的测试

STM32单片机ADC的模拟看门狗的测试ADC的模拟看门狗用于检查电压是否越界。

他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LTR中设置。

库函数是使用ADC_AnalogWatchdogThresholdsConfig设置的,无论是常规通道还是注入通道,都非常简单。

当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断。

捕获这个中断,可以做出一些应对措施。

数据手册上特别之处的一个东西:模拟看门狗说使用的比较数据与ADC_CR2寄存器中设置的数据对齐方式无关。

看门狗比较是在数据对齐之前完成的。

先进行看门狗比较,再将数据放入ADC_DR数据寄存器。

在ST的库中,只有简单的三个与看门狗相关的函数:void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx,uint32_t ADC_AnalogWatchdog); void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx,uint16_t HighThreshold,uint16_t LowThreshold);void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx,uint8_t ADC_Channel);使用ADC_AnalogWatchdogThresholdsConfig设置触发看门狗的上下限使用ADC_AnalogWatchdogSingleChannelConfig配置要使用模拟看门狗的通道配置完成后使用ADC_AnalogWatchdogCmd启动模拟看门狗。

我写的函数很简单,就这么三行。

将模拟看门狗加在ADC1的CH1上。

代码如下:void ADC_WatchdogConfig(void){ADC_AnalogWatchdogSingleChannelConfig(ADC1,ADC_Channel_0);ADC_AnalogWatchdogThresholdsConfig(ADC1,1500,0xFFF);ADC_AnalogWatchdogCmd(ADC1,ADC_AnalogWatchdog_SingleRegEnable);。

STM32L4独立看门狗(IWDG)介绍

STM32L4独立看门狗(IWDG)介绍
PCLK1/APB1 (up to 80MHz) PRESCALER (WDGTB)
Refresh Window
time
WWDG_CR
6-Bit Down Counter
WWDG features (2/2)
• Early Wakeup Interrupt (EWI bit in WWDG_CFR):
12-bit window comp
VDD voltage domain
• Window option
• New register : IWDG_WINR
• Selectable HW/SW start + selectable Low-power freeze in Standby or Stop
• To prevent IWDG reset:
• Write to IWDG_KR register with 0xAAAA key value at regular intervals before the counter reaches 0 and within the window (if window option enabled) • Safe Reload Sequence (key) + window
WWDG Reset WWDG_CFR
T[6:0] CNT down counter
comparator = 1 when T6:0 > W6:0
-
W6 W5 W4 W3 W2 W1 W0
W[6:0] 3Fh
Write WWDG_CR
CM P
WDGA T6 T5 T4 T3 T2 T1 T0
Refresh not allowed T6 bit Reset

STM32L15x —— 独立看门狗IWDG和窗口看门狗WWDG

STM32L15x —— 独立看门狗IWDG和窗口看门狗WWDG

Same as STM32F-1系统外设独立看门狗(IWDG)IWDG ——概述可通过option byte来选择是否使能硬件IWDG功能更先进的安全功能:IWDG使用独立的低速时钟LSI作为时钟源,并在主时钟无效时仍然保持运行 一旦使能了IWDG,该功能就不能被禁止(LSI也不能被停止)安全的刷新修改序列由于IWDG模块属于VDD供电域,因此即使在停止和待机模式下,仍然保持功能(IWDG的复位信号能将芯片从待机模式下唤醒)防止IWDG复位信号产生:在计数器自减到0之前,向IWDG_KR寄存器写入AAAAhRCC_CSR寄存器的IWDGRSTF位指示是否产生了IWDG复位事件使用32KHz的LSI,IWDG复位的最短和最长时间间隔为125us和32.7s8-bitPRESCALERLSI(38KHz)12-bitreload value12-bitdown counterPrescalerRegisterStatusRegisterReloadRegisterKeyRegisterIWDGReset VDD voltage domainVCORE voltage domainIWDG最适合那些不需要很高精度,但需要独立于主进程之外的独立看门狗的应用Same as STM32F-1系统外设窗口看门狗(WWDG)WWDG ——概述可配置的时间窗口,应用程序需要在一个有限的时间窗口内刷新自减计数器有条件的复位: 当窗口看门狗使能,并且自减计数器小于40h(T6=0)时,产生复位当窗口看门狗使能,并且在自减计数器达到窗口寄存器数值之前更新了自减计数器,产生复位防止窗口看门狗复位信号产生:定期的,在自减计数器数值小于窗口范围(W[6:0])时,写T[6:0](其中T6位写1)早期唤醒中断(EWI):当自减计数器达到40h 时产生中断Î此中断可用于重载自减计数器 RCC_CSR 的WWDGRSTF 位指示是否发生了WWDG 复位事件使用32MHz 的PCLK1时钟时,WWDG 的最短和最长复位时间间隔分别是128us 和65.54msWWDG最适合那些需要精准时间控制的看门狗的应用Refreshnot allowed Refresh WindowT[6:0] CNT down countertimeW[6:0]3FhT6 bitResetCM PW0W1W2W3W4W5W6-T0T1T2T3T4T5T6WDGAWWDG_CR WWDG_CFR PRESCALER (WDGTB)6-Bit Down CounterPCLK1(up to 32MHz)Write WWDG_CRcomparator = 1 whenT6:0 > W6:0WWDG Reset。

STM32F103系列单片机最实用看门狗的详细资料概述

STM32F103系列单片机最实用看门狗的详细资料概述

STM32F103系列单片机最实用看门狗的详细资料概述为什么使用看门狗事情很简单先前做的一款采集数据的产品不知道为何异常,陷入死循环然后“死机”,分析了很多次,没发现原因,但是每次重新上点后就能正常采集到数据。

后来找到了解决方法:看门狗!目的是当程序走入死循环或者硬件异常时,可以自动复位,这样就可以得到跟重新上电后差不多的效果了。

使用的平台:stm32f103系列单片机使用的烧写调试模式:Jlink SWD 模式。

使用STM32官方模板库。

ST系列单片机看门狗分为两种:1.独立看门狗,2.窗口看门狗。

独立看门狗:可参看RM(reference Manual)的Independent watchdog (IWDG)当然,只是简要查看下RM中的介绍(至于寄存器的操作,我们可以略过,因为我们使用库的开发,但是基本流程一定要了解!)。

在这里我们要抓住几个关键点:a、stm32f10x系列有两个看门狗,看门狗主要用于检测由于软件出错的问题,并触发系统自动复位,或者触发一个中断(窗口看门狗才有)。

b、独立看门狗的时钟源为LSI,尽管主时钟出错,它还是能保持激活状态。

窗口看门狗的时钟源为APB1时钟,并且可以修改分频值。

c、独立看门狗:有独立时钟(内部低速时钟LSI),所以不受系统硬件影响的系统故障探测器。

主要用于监视硬件错误。

精确度要求比较低。

d、窗口看门狗:时钟与系统相同。

如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。

精确度要求更高。

看门狗原理简介:有某个寄存器按照时钟源不断的递减(有只狗,不断的消耗能量),当该。

基于STM32的宿舍防火防盗系统

基于STM32的宿舍防火防盗系统

基于STM32的宿舍防火防盗系统STM32是一款具有高性能、低功耗和良好扩展性的微控制器。

它具有丰富的外设接口,如ADC、DAC、SPI、I2C等,可以方便地与其他设备进行通信和控制。

STM32还具有实时时钟、看门狗、多种休眠模式等功能,适用于各种应用场景。

在宿舍防火防盗系统中,STM32可以作为主控制器,负责收集和处理各种传感器数据,并控制各个设备的动作。

通过温度传感器和烟雾传感器实时监测宿舍区域的气温和烟雾浓度。

当检测到异常情况时,STM32会立即启动报警装置,发出声光报警信号,同时通过GSM模块向管理员发送报警信息。

STM32还可以控制密码解锁装置。

在正常情况下,只有通过管理员授权的宿舍成员才能使用密码解锁进入宿舍。

如果管理员需要临时解锁,可以通过手机APP向STM32发送指令,实现临时解锁功能。

基于STM32的宿舍防火防盗系统具有以下优点:可以实时监测宿舍区域温度和烟雾浓度,及时发现火情,防止事故的发生。

具备密码解锁功能,可以有效防止非法入侵,保护宿舍财产安全。

当出现异常情况时,可以及时发出报警信号,通知管理员进行处理,提高了响应速度和应对效率。

报警装置的精确度和可靠性有待进一步提高。

有时候可能会出现误报或漏报的情况,影响系统性能。

系统的智能化程度还有待加强。

例如,可以通过加入更多智能算法,如人工智能、深度学习等,提高系统的预测能力和自主决策能力。

提高传感器的精度和可靠性。

可以采用更先进的传感器技术和算法,提高报警装置的准确性和稳定性。

加强系统的智能化程度。

引入更多智能算法和机器学习技术,提高系统的自主决策能力和预测能力。

例如,可以通过分析历史数据,预测未来一段时间内的温度和烟雾浓度变化,提前进行预警。

优化密码解锁功能。

可以加入生物识别技术,如指纹识别、面部识别等,提高密码解锁的安全性和可靠性。

基于STM32的宿舍防火防盗系统在提高宿舍安全性方面具有重要作用。

虽然目前系统还存在一些不足之处,但随着技术的不断进步和应用场景的不断扩展,相信未来的宿舍防火防盗系统将会更加智能化、高效化和可靠化。

STM32单片机的独立看门狗和窗口看门狗的特点及用法解析

STM32单片机的独立看门狗和窗口看门狗的特点及用法解析

STM32单片机的独立看门狗和窗口看门狗的特点及用法解析1.看门狗介绍看门狗这东西虽然简单,但我相信绝大多程序员没有足够重视它。

使用看门狗保证系统正常地运行是非常有必要的。

我们在设计产品时,代码以及硬件设计缺陷或是外界电磁干扰都有可能使系统死机,如果不能正常对其进行复位,系统的可靠性将大打折扣。

看门狗分为软件看门狗和硬件看门狗两类,其原理都是使用一个独立定时器来计时,超出时间就会产生复位信号,主要区别看是否具有独立的硬件结构,如果有,就是硬件看门狗,如果是一个普通定时器实现的那么就是软件看门狗。

STM32F407片内有两个看门狗:独立看门狗IWDG以及窗口看门狗WWDG,下面来讨论各自的特点和用法。

2.IWDG的特点以及使用IWDG是一个独立看门狗,具有独立于系统的时钟,与片外看门狗更为相似,使用片内独立的阻容时钟发生电路计时,记录时间为=(时钟频率(40KHz)/ 分频数)*IWDG_SetReload (t),t《0xFFF.也就是说记录的最大设定的复位时间为(1/40K)*256*0xFFF = 26.2 S。

由于IWDG使用的时钟本身不准确,会因为漂移产生一定变化,喂狗时应该给出一定的裕量。

另外,这个时钟与系统时钟并无关联,所有也不能与系统进行同步产生中断,一旦定时时间到后就会产生复位信号,系统来不及存储当前运行状态就会重启,可以在要求不高的场合使用。

3.WWDG的特点以及使用WWDG具有一个独立的7位定时器,使用系统时钟,可以产生系统中断。

其定时最时间为(1/PCLK1)* 4096)* 分频系数(最大为8)*(0x7F –0x3F)= 58ms.其复位的条件是:(1)当计数器的数值从0x40减到0x3F(2)当刷新看门狗时计数器的数值大于窗口上限值时满足任何一条都可以产生复位信号。

通常情况下设置窗口上限值为0x7F,下限值默认为0x40,计数器向下数到0x40就会产生中断,下个910us后变为0x3F就会复位系统。

STM32看门狗实验

STM32看门狗实验
实验目的:
1.分析和学习固件库 2.理解固件库的结构 3.通过 stm32f10x_iwdg.c/.h 文件,熟悉 IWDG(独立看门狗)的控制和工作原理 4.复习按键中断的使用方法
实验要求:
1.使用 LED 灯 LED1 来指示程序是否重启(IWDG) 2.使用按键 WAKEUP 来不断地喂狗,并用 LED4 灯指示
最适合应用于要求看门狗运行时,完全独立与主应用之外的项目
硬件电路分析:
这里的核心是在 STM32 内部进行,并不需要外部电路。但是考虑到指示当前状态和喂狗等操作,我们需要 2 个 IO 口,一 个用来输入喂狗信号,另外一个用来指示程序是否重启。喂狗我们采用板上的 WAKEUP 键来操作,而程序重启,则是通过 LED4 来指示的。LED4 和 WAKEUP 的连接在前面跑马灯实验已经介绍了,这里我们不再多说
/* Check the parameters */ assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess)); IWDG->KR = IWDG_WriteAccess; } 可以看出,该函数的作用就是把输入参数传递到 IWDG_KR 中去. 在 stm32f10x.h 中我们找到输入参数的定义,如下所示 #define IWDG_WriteAccess_Enable ((uint16_t)0x5555) #define IWDG_WriteAccess_Disable ((uint16_t)0x0000) #define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \
STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗 的时钟并不是准确的 40Khz,而是在 30~60Khz 之间变化的一个时钟,只是我们在估算的时候,以 40Khz 的频率来计算, 看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。 通过对 LSI 进行校准可获得相对精确的看门狗超时时间。有关 LSI 校准的问题,详见数据手册 LSI 时钟一节。

STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处

STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处

STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处
STM32 单片机中的独立看门狗与窗口看门狗有哪些
不同之处
1.关于看门狗的解释不再说明,窗口看门狗简而言之即只能看某个窗口期即某段时间内才能够喂狗。

32 的独立看门狗是没有中断的,而窗口看门狗可根据需要配置中断
2.关于独立看门狗和窗口看门狗的应用,手册p316 即17.1 节讲的非常清楚。

首先独立看门狗和窗口看门狗都可用来监视软件程序是否正常运行,而
具体而言,因为独立看门狗独立于系统时钟单独运行,因此其可用来监视是
否发生了硬件错误,比如说系统时钟故障,看门狗仍然能够起到重启的作
用,但是独立看门狗的计时精度比较差,更多的应用在独立系统运行之外的
对计时要求低的地方。

而窗口看门狗是由系统时钟提供的,因此其计时也会
很准确,当然其也就只能用来检测软件故障,比如硬件故障系统时钟坏了,
自身也就不动了,也就没有检测硬件故障的作用,因此窗口看门狗是用在检
测应用软件是否准确运行时使用的。

当然我们用系统情况下其实完全可以不使用32 提供的看门狗,我们自己某个任务的一个变量即实现看门狗的功能了。

3.另外注意,看门狗只是解决软件异常,独立看门狗称为硬件看门狗是其。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[组图]STM32 的看门狗 ★★★【字体:小 大】
STM32 的看门狗
作者:peixiuhu… 文章来源:peixiuhui 点击数:472 更新时间:2011-7-25
停了,即使CPU进入了休眠模式,狗也可以生效.当CPU进入休眠模式,并且是深度休眠的时候,这个看门狗可以作为一个CPU
|
Atmel爱特梅尔
|
Microchip
|
Cypress赛普拉斯
LED1_ON;
SysTickDelay(500);
LED1_OFF;
/*闪LED1 5秒后没喂狗将自动复位LED1又闪LED2亮*/
IWDG_Enable(); //启动看门狗,自动就会使能内部的40K
for(;;)
void IWDG_Configuration(void)
{
/* 写入0x5555,用于允许狗狗寄存器写入功能 */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* 狗狗时钟分频,40K/256=156HZ(6.4ms)*/
T[5:0]位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入WWDG_CR寄存器时,预分频值是未知的。
配置寄存器(WWDG_CFR)
中包含窗口的上限值:要避免产生复位,递减计数器必须在其值小于窗口寄存器的数值并且大于0x3F时被重新装载,图155描述了窗口寄存器的工作过程。
独立看门狗(IWDG)由专用的40kHz的低速时钟驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。
另一个重装载计数器的方法是利用早期唤醒中断(EWI)。设置WWDG_CFR寄存器中的WEI位开启该中断。当递减计数器到达0x40时,则产生此中断,相应的中断服务程序(ISR)可以用来加载计数器以防止WWDG复位。在WWDG_SR寄存器中写’0’可以清除该中断。
看这么多7788的肯定晕直接看代码:
USB控制器
综合设计
微控制器
模拟与电源管理
综合设计
.索思达(SSDDSP).61IC(美国站)您好!欢迎来到61IC网![会员中心][注册新帐号]
综合设计
微控制器
汽车电子
模拟应用
ห้องสมุดไป่ตู้ 综合设计
AVR单片机
AVR32单片机
IWDG_SetPrescaler(IWDG_Prescaler_256);
/* 喂狗时间 5s/6.4MS=781 .注意不能大于0xfff*/
IWDG_SetReload(781);
/* 喂狗*/
IWDG_ReloadCounter();
|
Renesas瑞萨电子
|
您现在的位置: 61IC电子在线 >> 厂商 >> 意法半导体 >> 微控制器 >> 正文
●启动看门狗 在系统复位后,看门狗总是处于关闭状态,设置WWDG_CR寄存器的WDGA位能够开启看门狗,随后它不能再被关闭,除非发生复位。
●控制递减计数器
递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。
那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。
17.2
WWDG主要特性
●可编程的自由运行递减计数器
●条件复位
─当递减计数器的值小于0x40,(若看门狗被启动)则产生复位。
─当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。见图155。
●如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免WWDG复位。
如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置’1’),
并且当7位(T[6:0])递减计数器从0x40翻转到0x3F(T6位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,也将产生一个复位。应用程序在正常运行过程中必须定期地写入WWDG_CR寄存器以防止MCU发生复位。只有当计数器值小于窗口寄存器的值时,才能进行写操作。储存在WWDG_CR寄存器中的数值必须在0xFF和0xC0之间:
加入收藏
设为首页
联系站长
. 网站A应用 . FPGA资源 . 移动技术 . 爱科技 .
16.2
IWDG主要性能
●自由运行的递减计数器
●时钟由独立的RC振荡器提供(可在停止和待机模式下工作)
●看门狗被激活后,则在计数器计数至0x000时产生复位
16.3
IWDG功能描述
图153为独立看门狗模块的功能框图。
{
/* 窗口看门狗时钟允许 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
/* 看门狗节拍 = (36M/4096)/8 = 1098 Hz就是说一秒钟计数器减1098下*/
微控制器
模拟与电源管理
综合设计
微控制器
数字信号处理器
模拟与电源管理
/* 使能狗狗*/
IWDG_Enable();
}
#include "STM32Lib\\stm32f10x.h"
#include "hal.h"
int main(void)
{
ChipHalInit(); //片内硬件初始化
STM32 的看门狗Blackfin
SHARC
TigerSHARC
ADSP-21xx
模拟与电源管理
综合设计
ChipOutHalInit(); //片外硬件初始化
if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST)!=RESET)
{
LED2_ON;
RCC_ClearFlag();
}
/*如果上次的复位是看门复位的话LED2点亮*/
厂商 . 代码 . 下载 . 产品 . 商城 . 邮购须知 .
|
嵌入式厂商首页
|
ADI亚德诺
的定时唤醒闹钟,以达到超低功耗的同时还会定时醒来.看门狗由于最大可以分频到256,看门狗定时器最大可以设置到0xfff,所以最最长的喂狗时间是26秒.....用于CPU的唤醒恰到好处。
用户手册:
STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
AT91系列ARM
综合设计
PIC微控制器
模拟与接口
综合设计
PSoC
在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。
无论何时,只要键寄存器IWDG_KR中被写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位 。
|
NXP恩智浦
|
飞思卡尔
|
意法半导体
这个就是窗口看门狗的例程了,窗口看门狗的特性:
喂狗太快—复位,喂狗太慢—复位.迟了喂狗,还可以有中断.WWDG_IRQHandler
#include "STM32Lib\\stm32f10x.h"
void WWDG_Configuration(void)
{
if(GET_LEFT())
{
IWDG_ReloadCounter(); //手动喂狗
}
}
}
WWDG简介
窗口看门狗通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新,
相关文档
最新文档