STM32F107的独立看门-窗口看门狗实验总结

合集下载

窗口看门狗实验心得体会

窗口看门狗实验心得体会

窗口看门狗实验心得体会作为一种新兴的网络安全方案之一,窗口看门狗近年来备受关注。

作为一名从业人员,为了更好地掌握这项技术,我特地进行了一次窗口看门狗实验,并在此分享一下我的心得体会。

首先,我想简单介绍一下什么是窗口看门狗。

窗口看门狗实际上是一种Windows平台上的安全技术,主要是通过监控系统中的进程和网络通信来检测和预防恶意行为的发生。

简单来说,就是将一只“看门狗”放到了我们的电脑里,时刻“守护”着我们的安全。

那么,具体来说,窗口看门狗是如何实现的呢?其实,窗口看门狗主要通过以下四个方面来进行检测和防护:1. 监控系统中的进程。

窗口看门狗可以监控所有正在运行的进程,并对这些进程的行为进行监测,如进程的创建、关闭等。

如果发现某个进程的行为异常,窗口看门狗会立即进行预警或者阻止其继续运行。

2. 监控系统中的网络通信。

窗口看门狗可以监控所有的网络通信,包括传入和传出的数据包。

如果发现某个数据包包含恶意代码或者连接了不受信任的服务器,窗口看门狗会同样立即进行预警或者阻止其继续传输。

3. 杀毒软件兼容性。

窗口看门狗与杀毒软件相辅相成。

在进行防护的同时,窗口看门狗可以实时监测杀毒软件的状态,防止恶意软件对杀毒软件进行攻击,从而保证我们电脑的安全。

4. 无缝衔接Windows系统。

窗口看门狗的最大优点是它与Windows系统无缝衔接,并且对系统的影响极小。

所以即使我们安装了窗口看门狗,我们也感受不到什么不同,而且它不会影响我们使用电脑的速度。

说了这么多,其实窗口看门狗最最重要的作用还是能够为我们提供实时的安全保障。

在进行实验的过程中,我发现窗口看门狗可以监控系统中所有进程和网络通信,并进行智能的行为分析。

如果它发现有威胁性的行为发生,就会立即进行预警和阻止,从而保证我们电脑的安全。

当然,窗口看门狗也有一些不足之处。

比如,它只能保护我们的电脑防止恶意行为,但它不能修复或者清除已经感染的病毒。

所以,我们还需要配合使用杀毒软件等其他安全工具一起,才能更好地保护我们的电脑。

什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析

什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析

什么是stm32看门狗?独立看门狗和窗口看门狗工作原理解析独立看门狗是限制喂狗时间在0-x内,x由你的相关窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。

喂狗的时间不能过早也不能过晚。

窗口看门狗的上窗口就是配置寄存器WWDG->CFR里设定的W[6:0];下窗口是固定的0x40;WWDG_SetPrescaler(WWDG_Prescaler_8);void NVIC_Configuration(void)void EXTI_Configuration(void)在Stm32f10x_it.c文件中:void WWDG_IRQHandler(void)void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line9) != RESET)
{
/* Turn off led connected to PC.07 */
GPIO_WriteBit(GPIOC, GPIO_Pin_7, Bit_RESET);
/* As EXTI line9 pending bit is not cleared, the CPU will execute indefinitely
this ISR and when the WWDG counter falls to 3Fh the WWDG reset occurs */
}
}。

ST单片机:独立看门狗和窗口看门狗

ST单片机:独立看门狗和窗口看门狗

ST单片机:独立看门狗和窗口看门狗
STM32单片机中有两只看门狗,分别是独立看门狗和窗口看门狗。

这两只看门狗有什么区别,今天来看一下。

1. 时钟源的区别
▪独立看门狗使用的是内部低速时钟,其频率为40kHz,但是这个40KHz不是准确的,其大致的范围是(30-60)KHz。

该时钟与外设时钟无关,所以不受系统晶振影响。

▪窗口看门狗使用的是PCLK1的时钟,该时钟与晶振相关。

2. 喂狗时间不同
▪独立看门狗喂狗时只要下限大于0就可以,上限是0XFFF。

而窗口看门狗必须在一个区域内喂狗才可以,上限是0x7F,下限是0X40,
3. 计数器不同
▪独立看门狗的计数器是12位递减的,即最大值是0XFFF;
▪窗口看门狗的计数器是7位递减的,即最大值是0X7F;
4. 产生结果不同
▪独立看门狗时,如果超时不喂狗,则直接产生复位,程序从头执行;
▪独立看门狗会在计数器到达0X40时产生中断,在0X3F时产生复位,所以可以把独立看门狗看成是一种中断。

使用用途举例
▪独立看门狗可以用来防止程序跑飞,在程序中开启看门狗,定时喂狗,尤其在通讯中使用广泛,当逻辑处理不当,使程序一直处于发送或接收状态不退出时,这时独立看门狗可以使程序复位,程序从头执行。

▪窗口看门狗可以产生中断,利用这一特点可以用来进行数据保存,当产生窗口看门狗中断时,可以用来保存数据。

一文读懂STM32之独立看门狗-窗口看门狗的原理

一文读懂STM32之独立看门狗-窗口看门狗的原理

一文读懂STM32之独立看门狗/窗口看门狗的原理一、独立看门狗STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。

看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。

看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)。

在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。

当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。

无论何时,只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR 中的值就会被重新加载到计数器中从而避免产生看门狗复位。

IWDG_PR和IWDG_RLR寄存器具有写保护功能。

要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。

将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。

重装载操作(即写入0xAAAA)也会启动写保护功能。

只要对以上三个寄存器进行相应的设置,我们就可以启动STM32的独立看门狗,启动过程可以按如下步骤实现(独立看门狗相关的库函数和定义分布在文件stm32f10x_iwdg.h和stm32f10x_iwdg.c中):1)取消寄存器写保护(向IWDG_KR写入0X5555)通过这步,我们取消IWDG_PR和IWDG_RLR的写保护,使后面可以操作这两个寄存器,设置IWDG_PR和IWDG_RLR的值。

这在库函数中的实现函数是:IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);2)设置独立看门狗的预分频系数和重装载值设置看门狗的分频系数的函数是:voidIWDG_SetPrescaler(uint8_TIWDG_Prescaler);//设置IWDG预分频值。

最新STM32窗口看门狗实验

最新STM32窗口看门狗实验

2020/10/23
广州市星翼电子科技有限公司
9
ALIENTEK
《例说STM32》
8.3 窗口看门狗配置步骤
1)使能WWDG时钟。
WWDG不同于IWDG,IWDG有自己独立的40Khz时钟, 不存在使能问题。而WWDG使用的是PCLK1的时钟,需 要先使能时钟。
2)设置WWDG_CFR和WWDG_CR两个寄存器
上窗口值(W[6:0])是由用户自己设定的,根据实际要求来设计窗口值,但是一 定要确保窗口值大于0X40,否则窗口就不存在了。 窗口看门狗的超时公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1; 其中:
Twwdg:WWDG超时时间(单位为ms) Fpclk1:APB1的时钟频率(单位为Khz) WDGTB:WWDG的预分频系数 T[5:0]:窗口看门狗的计数器低6位
STM32窗口看门狗实验
ALIENTEK
《例说STM32》
8.1 窗口看门狗原理
➢ 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成 的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6 位(WWDG->CR的第六位)变成0前被刷新,看门狗电路在达到预置的时间周 期时,会产生一个MCU复位。在递减计数器达到窗口配置寄存器(WWDG>CFR)数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也 将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新 。他们的关系可以用下图来说明:
对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但 这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执 行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了。

STM32之窗口看门狗

STM32之窗口看门狗

STM32之窗⼝看门狗简介:跟独⽴看门狗⼀样,也是⽤来检测软件可能出现的错误,不⼀样的是,当独⽴看门狗计数器的值减到0时会产⽣复位,在减到0之前喂狗防⽌复位。

窗⼝看门狗:在某⼀值到0x40之间喂狗才不会产⽣复位,其他情况均会产⽣复位信号,这个某⼀个值称之为窗⼝上限。

计数器数值由看门狗控制寄存器决定可以看出计数器占7位,最⼤值为0x7f功能框图:1.PCLK1默认为36MHz2.PCLK1经过分频器分频⽣成CNT_CK给计数器提供时钟从图中可以看出CNT_CK=PCLK1/4096/(2^WDGTB)3.计数器,见最上⾯第1 2张图,当计数器最⾼位T6由1变为0时,产⽣复位4.设置窗⼝上限值,见配置寄存器,窗⼝上限值不得⼤于计数器最⼤值,不得⼩于窗⼝下限值超时时间计算:超时时间指计数器值减到窗⼝下限下⼀个数值即0x3f所花时间最短超时时间在计数器的值为0x40的时候,最长超时时间在计数器值为0x7f的时候当WDGTB为0时,CNT_CK=36M/4096/1=8789.0625Hz 计数器减⼀次所花时间为 1/8789.0625(s) 最短超时时间=(0x40-0x3f)*/8789.0625约等于113us最长超时时间=(0x7f-0x3f)/8789.0625 约等于7.28ms相关函数:上⾯中的中断函数使能是当计数器从0x40减到0x3f时产⽣的,这个中断称为死前中断。

实验:设置计数器值和窗⼝上限值都为0x7f配置死前中断,在中断中喂狗,并且LED2反转main函数中,LED1⼀直点亮原理图:看门狗头⽂件和源⽂件:#ifndef _WWDG_H#define _WWDG_H#include "stm32f10x.h"void WWDG_Config(void);#endif#include "wwdg.h"static void LED1_GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStruct);GPIO_SetBits(GPIOC,GPIO_Pin_1);//默认熄灭}//中断优先级配置static void WWDG_NVIC_Config(void){NVIC_InitTypeDef NVIC_InitStruct;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStruct.NVIC_IRQChannel=WWDG_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);}void WWDG_Config(void){WWDG_NVIC_Config();LED1_GPIO_Config();RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//开启看门狗时钟 WWDG_SetPrescaler(WWDG_Prescaler_8);//设置分频系数WWDG_SetWindowValue(0x7f);//设置窗⼝上限值WWDG_SetCounter(0x7f);//设置计数器值WWDG_EnableIT();//使能中断WWDG_Enable(0x7f);//开启看门狗}void WWDG_IRQHandler(void){WWDG_ClearFlag();WWDG_SetCounter(0x7f);//设置计数器值//LED2反转if(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1)==SET)GPIO_ResetBits(GPIOC,GPIO_Pin_1);elseGPIO_SetBits(GPIOC,GPIO_Pin_1);//默认熄灭}mian⽂件:#include "stm32f10x.h"#include "wwdg.h"static void LED0_GPIO_Config(void);int main(void){LED0_GPIO_Config();WWDG_Config();while(1);}static void LED0_GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStruct);GPIO_ResetBits(GPIOC,GPIO_Pin_0);//默认点亮}。

STM32学习笔记---WWDG窗口看门狗实验

STM32学习笔记---WWDG窗口看门狗实验

STM32学习笔记---WWDG窗⼝看门狗实验继做了SYSTICK实验后,继续进⾏第8个实验-WWDG窗⼝看门狗实验,本实验通过设置窗⼝看门狗WWDG间断时间来中断来定期的检查是否出错,在WWDG中断函数中加⼊了流⽔灯⽤来测试是否运⾏了看门狗程序中断,⽤PB5-LED1通过窗⼝看门狗间断时间来闪烁,编程⼯程⼤致和USART实验过程差不多,先是开启系统时钟,然后GPIO端⼝时钟,然后复⽤功能时钟AFIO,然后各个模块⽤的的时钟,,呵呵,之后进⼊各个模块初始化,设置,编写⼦程序,中断的话,要在中断函数中填写某模块的中断触发处理函数,重要的是在CONFG.H函数中开启模块的声明,差不多是这样的了。

以下为WWDG函数主要部分://WWDG窗⼝看门狗设置初始化void WWDG_Config(void){//软件看门狗初始化RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);WWDG_SetPrescaler(WWDG_Prescaler_8); //时钟8分频4ms// (PCLK1/4096)/8= 244 Hz (~4 ms)WWDG_SetWindowValue(65); //计数器数值WWDG_Enable(127); //启动计数器,设置喂狗时间// WWDG timeout = ~4 ms * 64 = 262 msWWDG_ClearFlag(); //清除标志位WWDG_EnableIT(); //启动中断}*****************************************************void WWDG_IRQHandler(void){WWDG_SetCounter(0x7F); //更新计数值WWDG_ClearFlag(); //清除标志位switch(WWDGFLAG){case 0:GPIO_SetBits(GPIOB, GPIO_Pin_5);break;case 1:GPIO_ResetBits(GPIOB, GPIO_Pin_5);break;default:break;}WWDGFLAG=!WWDGFLAG;}以下为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共计时350 个周期,即350*0.8ms=280ms综合以上,STM32看门狗时间(时限)与频率计算公式为:看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数stm32独立看门狗和窗口看门狗特性、区别:总结起来,两者大概有以下几点特性和区别:1)独立看门狗没有中断,窗口看门狗有中断2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制3)独立看门狗只有下限,窗口看门狗又下限和上限4)独立看门狗是12位递减的。

看门狗定时器实训报告

看门狗定时器实训报告

本次实训旨在使学生了解看门狗定时器的基本原理、工作方式以及在嵌入式系统中的应用,通过实际操作,掌握看门狗定时器的配置、使用方法,并学会利用看门狗定时器解决嵌入式系统中的故障和异常。

二、实训内容1. 看门狗定时器原理- 看门狗定时器是一种监测硬件或软件故障的定时器,其工作原理是在程序运行过程中不断重装载,以防止溢出引发中断或复位。

- 看门狗定时器分为独立看门狗和窗口看门狗两种类型。

2. 独立看门狗(FWDGT)- 独立看门狗使用独立的32kHz内部时钟,适用于对计时精度要求不高的场合。

- 独立看门狗内部有一个12位的向下计数的定时器,当计数值达到0时,会产生一个系统复位。

3. 窗口看门狗(WWDGT)- 窗口看门狗使用PCLK分频而来的时钟,计数器位数较小,需要在窗口范围内重装载以防复位。

4. 看门狗定时器的配置与使用- 了解看门狗定时器的相关寄存器,如预分频器、计数器、重装载寄存器、键寄存器和状态寄存器等。

- 根据实际需求配置看门狗定时器的时钟源、计数器值、窗口范围等参数。

- 在程序中定期重装载看门狗定时器,以防止系统复位。

5. 看门狗定时器的实际应用- 利用看门狗定时器解决嵌入式系统中的故障和异常。

- 通过看门狗定时器监控程序运行状态,防止死锁。

- 作为系统安全特性的一部分,确保在检测到异常时能够安全地重启系统。

1. 准备工作- 准备好实训所需的硬件设备和软件环境,如单片机开发板、调试器、IDE等。

2. 环境搭建- 根据实际需求搭建实训环境,包括硬件电路连接和软件配置。

3. 看门狗定时器配置- 了解看门狗定时器的相关寄存器,如预分频器、计数器、重装载寄存器、键寄存器和状态寄存器等。

- 根据实际需求配置看门狗定时器的时钟源、计数器值、窗口范围等参数。

4. 程序编写- 编写程序,实现看门狗定时器的初始化、重装载和监控功能。

- 在程序中定期重装载看门狗定时器,以防止系统复位。

5. 调试与验证- 使用调试器对程序进行调试,观察看门狗定时器的运行状态。

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看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)

STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)

STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。

看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。

看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号)。

看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

具体的实现步骤:开启看门狗,设置减计数的初始值,当计数值达到超时值时,产生MCU 复位,此时本来运行的程序终止重新启动单片机(发生了故障)。

在使用了看门狗之后,在正常运行的程序中加入喂狗的程序,即采用定时器的方式每隔一段时间进行一次喂狗重置计数装载值,这样,只要程序正常运行,没有出现故障或软件错误,就会不断的定时喂狗,从而不会使计数值达到超时值产生复位。

一、独立看门狗IWDG:1、IWDG主要性能1)自由运行的递减计数器2)时钟由独立的RC振荡器提供(可在停止和待机模式下工作)3)看门狗被激活后,则在计数器计数至0x000时产生复位2、IWDG功能描述在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。

当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。

无论何时,只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。

void IWDG_ConfiguraTIon(void)。

看门狗功能应用实训报告

看门狗功能应用实训报告

一、实训背景随着微电子技术的不断发展,单片机在各个领域的应用越来越广泛。

为了保证单片机系统在运行过程中不会因为软件错误、硬件故障或电磁干扰等原因导致系统崩溃,看门狗(Watchdog Timer,WDT)功能应运而生。

看门狗是一种用于监控程序运行状态的设备,当程序因错误而无法正常工作时,看门狗会自动复位系统,从而保证系统的稳定运行。

为了提高对看门狗功能的理解和应用能力,本次实训旨在通过实际操作,掌握看门狗功能的原理、设置方法以及在实际应用中的调试技巧。

二、实训目标1. 理解看门狗功能的原理及作用。

2. 掌握STM32单片机看门狗功能的配置方法。

3. 学会使用看门狗功能防止程序跑飞和死循环。

4. 掌握看门狗功能在实际应用中的调试技巧。

三、实训内容1. 看门狗功能原理及作用看门狗是一种定时器,用于监控程序运行状态。

当程序正常运行时,需要定期对看门狗进行喂狗操作,以防止看门狗超时。

如果看门狗超时,则认为程序出现错误,看门狗会自动复位系统,使程序重新开始执行。

2. STM32单片机看门狗功能配置(1)硬件电路:在STM32单片机中,看门狗功能主要由独立看门狗(IWDG)和窗口看门狗(WWDG)实现。

IWDG使用独立的RC振荡器工作,适用于对时间精度要求不高的场合;WWDG则要求在精确的计时窗口内起作用,主要用于需要精确控制时序的应用。

(2)软件配置:在STM32CubeMX中,可以通过以下步骤配置看门狗功能:① 打开STM32CubeMX软件,选择相应的STM32单片机型号。

② 在“System Core”选项卡中,勾选“IWDG”和“WWDG”选项。

③ 在“IWDG”选项卡中,设置预分频系数、重装值等参数。

④ 在“WWDG”选项卡中,设置预分频系数、重装值、窗口值等参数。

⑤ 生成代码,并在Keil uVision中编译、下载程序。

3. 使用看门狗功能防止程序跑飞和死循环(1)程序跑飞:当程序进入死循环时,看门狗会因未进行喂狗操作而超时,系统自动复位,从而避免程序跑飞。

STM32看门狗实验

STM32看门狗实验
硬件分析:
看门狗原理:
看门狗又叫watchdog timer(WDT),是一个定时器电路。 一个输入端:叫喂狗引脚; 一个输出端:连接到MCU的RESET引脚;
在系统运行以后,启动了看门狗的计数器,看门狗就开始自动计数; MCU正常工作时,每隔一段时间输出一个信号到喂狗 端,将WDT清零;一旦单片机由于干扰造成程序跑飞后,而进入死循环状态时,在超过规定的时间内 “喂狗”程序不能被 执行,看门狗计数器就会溢出,从而引起看门狗中断,就会输出一个复位信号到MCU,造成系统复位。 在使用看门狗时,要注意适时喂狗。
注意:对此寄存器进行读操作,将从 VDD 电压域返回预分频值。如果写操作正在进行,则读回的值可能是无效的。因此,
只有当 IWDG_SR 寄存器的 PVU 位为 0 时,读出的值才有效。
预分频值的设定,在 stm32f10x.h 中有如下定义
#define IWDG_Prescaler_4
((uint8_t)0x00)
独立看门狗实验
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环, 程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于 对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"。 建议:看门狗是定时器的一种,学习看门狗对于理解定时器有着借鉴作用
位 31:12 保留,始终读为 0。 位 11:0 RL[11:0]: 看门狗计数器重装载值 (Watchdog counter reload value) 这些位具有写保护功能。 用于定义看门狗计数器的重装载值,每当向 IWDG_KR 寄存器写入 0xAAAA 时,重装载值会被传送到计数器中。随后计数 器从这个值开始递减计数。看门狗超时周期可通过此重装载值和时钟预分频值来计算 。只有当 IWDG_SR 寄存器中的 RVU 位为 0 时,才能对此寄存器进行修改。 注:对此寄存器进行读操作,将从 VDD 电压域返回预分频值。如果写操作正在进行,则读回的值可能是无效的。因此,只 有当 IWDG_SR 寄存器的 RVU 位为 0 时,读出的值才有效。

我的独立看门狗总结

我的独立看门狗总结

我的独立看门狗总结
一、独立看门狗IWDG概述
 1.)看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误
引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。

 2.)功能图:(由于本人无法贴图,请见参考手册,125页)
 3.)独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。

 4.)其中IWDG_PR为预分频器寄存器,IWDG_RLR为重新加载计数器寄存器,IWDG_KR为控制器存器。

IWDG_SR为状态寄存器。

(见图)
 5.)IWDG_KR写入OXCCCC,启动独立看门狗功能,计数器值开始递减,减到0时,看门狗复位。

IWDG_KR写入0XAAAA,计数器值被重新加载,即避免看门狗复位。

IWDG_KR写入0X5555,则允许写IWDG_PR 和IWDG_RLR寄存器写操作。

写入其它值,IWDG_PR 和IWDG_RLR被保护,数据将无法写入这两个寄存器。

IWDG_SR状态寄存器指示预分频值和递减
计数器是否正在被更新。

IWDG_RLR寄存器范围为0-0xfff.
 6.)如果用户在选择字节中启用了硬件看门狗功能,在系统上电复位后,。

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窗口看门狗的真正作用

一文了解STM32窗口看门狗的真正作用
 STM32有2个看门狗:独立看门狗和窗口看门狗。

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

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

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

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

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

STM32F0独立和窗口看门狗的功能解析

STM32F0独立和窗口看门狗的功能解析

STM32F0 独立和窗口看门狗的功能解析概述
对于看门狗,我觉得做单片机或者嵌入式开发的人员来说并不陌生,今天总结STM32F0 看门狗的功能,F0 的看门狗有两种:独立和窗口看门狗。

两种看门狗各有各的特点,应用在不同的场合,下面将分别简单总结一下独立和窗口看门狗的功能。

准备工作
对于看门狗的编程,建议大家准备F0 的参考手册和数据手册,方便查阅相关知识,没有的请到ST 官网或到我360 云盘下载。

今天总结的软件工程是基于“TIM基本延时配置详细过程”修改而来,因此需要将该软件工程下载准备好。

我每次都是提供整理好的软件工程供大家下载,但是,如果你是一位学习者,建议自己亲手一步一步操作。

一个菜鸟的STM32寄存器学习笔记6_独立看门狗IWDG

一个菜鸟的STM32寄存器学习笔记6_独立看门狗IWDG

STM32有两个看门狗一个是独立看门狗IWDG还有一个是窗口看门狗WWDG。

这两者之间的区别主要是:1.独立看门狗的时钟和主时钟是分离的,使用的是内部的低速时钟,所以时钟是不准确的,但是是和主时钟分离的,当主时钟发生错误,独立看门狗还是能工作的。

而窗口看门狗是用的APB1的时钟,APB1用的是主时钟。

说以主时钟会影响到窗口看门狗的工作。

2.独立看门狗在计数接收之前喂狗就可以。

窗口看门狗要在一个时间范围内喂狗,早点晚点都不可以。

这里主要介绍独立看门狗看门狗的作用就是在程序中加入一些喂狗语句,当程序在哪里死掉或者跑飞没有及时的喂狗。

看门狗就会让CPU重启。

独立看门狗就是这个功能,配置方法如下:1.对IWDG->KR写入0x5555解除对PR和RLR寄存器的锁定使这两个寄存器可以写入数据2.在PR中写入预分频值3.在RLR中写入计数的初值4.使能IWDG功能5.在程序相应位置插入喂狗程序详细说明:第一步写入解锁语句根据手册要对PR和RLR进行访问就需要先对KR写入0X5555IWDG->KR=0X5555;第二步设置预分频值和重装载初值这里只有3位有效这个寄存器只有12位有效从中午参考手册中可以看到时钟进来之后通过分频器进行分频然后给计数器提供时钟。

所以可以得出分频系数越大,计数器走的就越慢,相同的初值值减到0的时间就越长。

手册上给了个根据需要的时间来选择分频系数的参考表格在《STM32不完全手册》上有一个公式例如看门狗的复位时间是2秒那我们从上表可以看出公式中的prer最小可以是3然后就可以列出公式2000=((4*2^3)*rlr)/40解出重装载的初值就是2500换成16进制就是9C4就。

我们就可以给PR和RLR中填入数值了IWDG->PR=3;IWDG->RLR=0x9C4;第三步开启看门狗只要给KR寄存器写入0XCCCC;就可以开启看门狗IWDG->KR=0XCCCC;第四步在程序中插入喂狗语句IWDG->KR=0XAAAA;这里可以在有循环的地方,在延时函数里加上一句这个喂狗程序。

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

STM32F107 的独立看门/窗口看门狗实验总结
看门狗的作用:由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称看门狗(watchdog) 。

STM32F1**的两种看门狗:独立看门狗和窗口看门狗。

独立看门狗使用独立的时钟(外部低速时钟LSI),适合应用于需要看门狗作为一个在主程序之外能够完全独立工作,并且对时间精度要求低的场合,原理是在设定时间内喂狗就可以了。

窗口看门狗使用的是系统时钟(APB1 时钟分频),适合应用于程序监控中出现跑飞的时候存储重要参数等场合,其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。

喂狗的时间不能过早也不能过晚。

配有设置喂狗状态的中断函数void
WWDG_IRQHandler(void),
独立看门狗:。

相关文档
最新文档