【实验五】窗口看门狗实验

发布者:TranquilDreams最新更新时间:2017-09-26 来源: eefocus关键字:窗口看门狗  STM32 手机看文章 扫描二维码
随时随地手机看文章

一、实验目的

1)了解STM32窗口看门狗;

2)了解STM32窗口看门狗与独立看门狗的异同;

3)会使用窗口看门狗;

4)利用STM32窗口看门狗的中断功能来喂狗。


二、STM32 窗口看门狗简介

窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看

门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU

复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。


简而言之,窗口看门狗有两个门限就上窗口和下窗口;下窗口值是固定的0x40;而上窗口由我们自己设置;当看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都

会产生复位。


涉及的寄存器有:控制寄存器(WWDG_CR)、配置寄存器(WWDG_CFR)、状态寄存器(WWDG_SR)。

配置步骤:

1) 使能 WWDG 时钟
2) 设置窗口值和分频数
3) 开启 WWDG 中断并分组
4) 设置计数器初始值并使能看门狗
5) 编写中断服务函数


独立看门狗与窗口看门狗的异同:相同的地方就是二者在一定情况下都会产生MCU复位;而IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立

工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。


三、硬件设计

LED灯、窗口看门狗。


四、软件设计


  1. void WWDG_Init(u8 tr,u8 wr,u32 fprer)  

  2. {   

  3.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);  //   WWDG时钟使能  

  4.   

  5.     WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT.     

  6.     WWDG_SetPrescaler(fprer);////设置IWDG预分频值  

  7.   

  8.     WWDG_SetWindowValue(wr);//设置窗口值  

  9.   

  10.     WWDG_Enable(WWDG_CNT);   //使能看门狗 ,  设置 counter .                    

  11.   

  12.     WWDG_ClearFlag();//清除提前唤醒中断标志位   

  13.   

  14.     WWDG_NVIC_Init();//初始化窗口看门狗 NVIC  

  15.   

  16.     WWDG_EnableIT(); //开启窗口看门狗中断  

  17. }   

  18. //重设置WWDG计数器的值  

  19. void WWDG_Set_Counter(u8 cnt)  

  20. {  

  21.     WWDG_Enable(cnt);//使能看门狗 ,  设置 counter .       

  22. }  

  23. //窗口看门狗中断服务程序  

  24. void WWDG_NVIC_Init()  

  25. {  

  26.     NVIC_InitTypeDef NVIC_InitStructure;  

  27.     NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;    //WWDG中断  

  28.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;   //抢占2,子优先级3,组2    

  29.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;   //抢占2,子优先级3,组2   

  30.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;   

  31.     NVIC_Init(&NVIC_InitStructure);//NVIC初始化  

  32. }  

  33.   

  34. void WWDG_IRQHandler(void)  

  35.     {  

  36.   

  37.     WWDG_SetCounter(WWDG_CNT);    //当禁掉此句后,窗口看门狗将产生复位  

  38.   

  39.     WWDG_ClearFlag();     //清除提前唤醒中断标志位  

  40.   

  41.     LED1=!LED1;      //LED状态翻转  

  42.     }  



五、实验结果


成功!


关键字:窗口看门狗  STM32 引用地址:【实验五】窗口看门狗实验

上一篇:【实验六】定时器中断实验
下一篇:【实验四】独立看门狗实验

推荐阅读最新更新时间:2024-03-16 15:38

STM32启动文件选择的区别
说的直白点就是以下区别,在选择启动文件的时候有选择性区别! startup_stm32f10x_cl.s 互联型的STM32F105xx,STM32F107xx startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_hd_vl.s 大容量的STM32F100xx startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_ld_vl.s 小容量的STM32F100xx startup_stm32f10x_md.s 中容量
[单片机]
stm32中的串口管脚
USART1_CK ------ PA8 USART1_TX ------ PA9 USART1_RX ----- PA10 USART1_CTS ----- PA11 USART1_RTS ----- PA12 USART2_CTS ----- PA0 USART2_RTS ----- PA1 USART2_TX ----- PA2 USART2_RX ----- PA3 USART2_CK ----- PA4 USART3_TX ----- PB10 USART3_RX ----- PB11 USART3_CK ----- PB12 USART3_CTS ----- PB13 USART3_RTS ----- PB1
[单片机]
STM32 Keil-MDK工程模板 V3.5 固件库
原来一直在用3.3 的固件库,3.4 的出来好久了 也没顾得上更新如今的3.5 的库再也忍不住了,建好了个新的V3.5的工程模板 用的是最新的MDK4.20 . 3.5 到3.3 对于一般用户而言 基本没有什么 界面的上变革 目前看来好像仅仅改变了一些定义所处的文件位置,看起来跟合理些,SD 等的驱动更加稳定。我一直很是喜欢STM32的官方固件库 完好的遵循ANSI 风格,代码编写严谨,还有一点C语言面向对象的感觉。更重要的是开源,我想这才是能流行起来的原因。 工程移植了 KEIL 的图形化配置向导 stm32_Init.c 工程路径 Cortex_M3_Project_V3.5\STM32\STM32F10X_HD\RVMDK
[单片机]
STM32 PVD中断问题
void PVD_Init(void) { NVIC_InitTypeDef NVIC_InitStruct; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitStruct.NVIC_IRQChannel = PVD_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStr
[单片机]
<font color='red'>STM32</font> PVD中断问题
STM32之GPIO_Mode
一、GPIO配置 (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 GPIO_Speed_10MHz 最高输出速率10MHz GPIO_Speed_2MHz 最高输出速率2MHz GPIO_Speed_50MHz 最高输出速率50MHz 1.1 I/O口的输出模式下,有3种输出速度可选(2M
[单片机]
STM32驱动12bit AD TLC2543(I/O模拟方式)
/****************************************************************************************** * 文件名称 :tlc2543.c * 版权 : * 模块名称 :TLC2543驱动程序 * cpu : stm32f103rct6 主频:72M * 作者 : * 创建日期 :2009-10-13 * 功能概要 : *----------------------------------------修改历史------------------------------------------ * 当前版本 :
[单片机]
嵌入式STM32学习:I2C-读写EEPROM2
bsp_i2c_ee.h #ifndef __I2C_EE_H #define __I2C_EE_H #include stm32f4xx.h /* AT24C01/02每页有8个字节 */ #define I2C_PageSize 8 /* AT24C04/08A/16A每页有16个字节 */ //#define I2C_PageSize 16 /* STM32 I2C 快速模式 */ #define I2C_Speed 400000 /* 这个地址只要与STM32外挂的I2C器件地址不一样即可 */ #define I2C_OWN_ADDRESS7
[单片机]
利用STM32 ST-LINK Utility查看内核运行状态
本文围绕STM32 ST-LINK Utility讲几点主要功能及相关拓展知识: 1.STM32编程下载; 2.利用该编程工具查看内核运行状态; 3.Option Bytes选项字配置; 1STM32编程下载 STM32 ST-LINK Utility一个最重要的功能就是对STM32进行编程。支持常见的hex、bin文件,还有早期摩托罗拉定义的srec和s19格式的文件(说实话,我都不了解这两种格式的文件)。 这里主要想提示一下初学者:hex带有地址,而bin文件不带地址,下载时需要填写起始地址。 下面看两张在STM32 ST-LINK Utility中下载选择文件的图大家就明白了。 1.选择hex下载,地址不
[单片机]
利用<font color='red'>STM32</font> ST-LINK Utility查看内核运行状态
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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