第十一章独立看门狗IWDG实验战舰STM32开发板

第十一章独立看门狗IWDG实验战舰STM32开发板
第十一章独立看门狗IWDG实验战舰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上。代码如下: void ADC_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;

实验5-2 看门狗实验

实验5-2 看门狗定时器应用实验 1、实验目的 了解watchdog 的作用 掌握S3C2410A 的watchdog 定时器的使用方法 2、实验内容 实现看门狗复位 编程实现看门狗喂狗 3、实验设备 S3C2410A 开发板 ADS1.2 集成开发环境,ARM 仿真器、串口连接线 4、实验原理 4.1 看门狗功能简述 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系 统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(watchdog)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 4.2 看门狗的工作原理 其基本原理为:设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti, Ti>Tp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp 时刻修改定时器的记数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 4.3 S3C2410A 的看门狗 S3C2410A 的看门狗定时器有两个功能: 作为常规时钟,并且可以产生中断; 作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128 个时钟 周期(PCLK)的复位信号。 主要特性如下: 通用的中断方式的16bit 定时器。 当计数器减到0(发生溢出),产生128 个PCLK 周期的复位信号。 下图为看门狗的电路示意图,看门狗时钟使用PCLK 作为他的时钟源,PCLK 通过预分 频产生适合的看门狗时钟。 看门狗模块包括一个预比例因子放大器,一个是四分频器,一个16bit 计数器。看门狗 的时钟源来自PCLK,为了得到较宽范围的看门狗信号,PCLK 先被预分频,之后再经过分频器分频。预分频比例因子的分频值,都可以由看门狗控制器(WTCON)决定,预分频值的有效范围从0 到256-1。分频因子可以选择16、32、64 或者128。 看门狗定时器记数值的计算公式如下: t_watchdog=1/ [PCLK/( prescaler value +1)/ Division_factor ]

STM32技术参考手册第11章窗口看门狗(WWDG)

11 窗口看门狗(WWDG) 11.1 简介 窗口看门狗通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的 运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,此看门狗电路在 达到可编程的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器值之前, 如果递减计数器值的第7位(在控制寄存器中) 被刷新,那么也将产生一个MCU复位。这表 明递减计数器需要在一个有限的窗口中被刷新。 11.2 主要特性 ● 可编程的自由运行递减计数器 ● 条件复位 ─当递减计数器的值小于40h,(若看门狗被启动)则产生复位。 ─当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。见图11-2。 11.3 功能描述 如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置1),并且当7位(T[6:0])递减计 数器从40h翻转到3Fh(T6位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄 存器中的值时重新装载计数器,将产生一个复位。 框图 看门狗框 图11-1 看门狗 应用程序在正常的运行过程中必须每隔一定的时间间隔写WWDG_CR寄存器以防止MCU 发生复位。只有当计数器值小于窗口寄存器的值时,才能进行这个写操作。这个要被储存 在WWDG_CR寄存器中的值必须在FFh和C0h之间: ● 启动看门狗 看门狗通常在复位后被禁止。设置WWDG_CR寄存器中的WDGA位将启动看门狗, 一旦被启动后,看门狗则不能再被关闭,除非发生复位。

● 控制递减计数器 递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。 T[5:0]位包含了在看门狗产生复位之前的延时增量;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入WWDG_CR 寄存器时,预分频值是未知的。 配置寄存器(WWDG_CFR) 中包含窗口的上限值:要避免产生复位,递减计数器必须在其值小于窗口寄存器的值并且大于3Fh 时被重新装载,图11-2描述了窗口寄存器的工作过程。 注: T6位可以被用来产生一个软件复位(WDGA 位被置位,T6位清零) 11.4 如何编写看门狗超时程序 图11-2显示了装载到看门狗计数器(CNT )中的6位计数值和看门狗的延迟时间之间的线性关系(以ms 为单位)。此图可用来做为快速计算的参考而未将时间的偏差考虑在内。如果需要更高的精度,可以使用图11-2提供的计算公式。 警告警告::当写入WWDG_CR 寄存器时寄存器时,,始终把T6位写1来避免来避免立即立即立即产生一个复位产生一个复位产生一个复位。。 图11-2 窗口看门狗时序图

嵌入式系统看门狗实验报告

竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告 篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验 《嵌入式系统原理与接口技术》实验报告 实验序号:4实验项目名称:看门狗实验 1 2 3 4 篇二:嵌入式实验报告 目录 实验一跑马灯实验................................................. (1) 实验二按键输入实验................................................. .. (3)

实验三串口实验................................................. . (5) 实验四外部中断实验................................................. .. (8) 实验五独立看门狗实验................................................. (11) 实验七定时器中断实验................................................. (13) 实验十三ADc实验................................................. .. (15) 实验十五DmA实验................................................. .. (17) 实验十六I2c实验................................................. .. (21) 实验十七spI实

看门狗溢出实验 按键不停喂狗

/*----------------------------------------------- 名称:看门狗溢出实验按键不停喂狗 论坛:https://www.360docs.net/doc/cf3813803.html, 编写:shifang 日期:2009.5 修改:无 内容:通过按键喂狗防止溢出复位看门狗演示程序在16383个机器周期内必须至少喂狗一次 标准A T89s52单片机试验通过。 ------------------------------------------------*/ #include sfr WDTRST = 0xA6; sbit K1 = P3^0; sbit K2 = P3^1; sbit LED1=P1^1; sbit LED2=P1^2; void DelayUs2x(unsigned char t);//us级延时函数声明void DelayMs(unsigned char t); //ms级延时 /*------------------------------------------------ 主函数 ------------------------------------------------*/ main() { LED1=0; DelayMs(100); LED1=1; DelayMs(100); TMOD=0x01; TH0=0xc6; //定时16ms

TL0=0x66; EA=1; ET0=1; WDTRST=0x1e; //在程序初始化中激活看门狗。 WDTRST=0xe1; //先送1E,后送E1 if(K1==0) { TR0=1; } while(1) { if(K2==0) { TR0=0; } LED2=1; LED1=1; DelayMs(100); LED2=0; DelayMs(100); } } /*------------------------------------------------ 定时器中断函数 ------------------------------------------------*/ void T ime0(void) interrupt 1 { TH0=0xc6; //定时16ms TL0=0x66; WDTRST=0x1e; //喂狗指令 WDTRST=0xe1; } /*------------------------------------------------ uS延时函数,含有输入参数unsigned char t,无返回值

STM32F103V IWDG 独立看门狗操作

STM32F103V IWDG 独立看门狗操作 最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门 狗功能。查了下STM32 的相关资料,于是利用下库文件来实现IWDG 独立看 门狗操作。首先需要调用库文件#include “stm32f10x_iwdg.h”再配置下看门狗 相关参数 //////////独立看门狗IWDG 设置////////////////////////////////////void WatchDog_int(void) // 独立看门狗IWDG 设置{/* Enable write access to IWDG_PR and IWDG_RLR registers */ IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); /* IWDG counter clock: 32KHz(LSI) / 32 = 1KHz */ IWDG_SetPrescaler(IWDG_Prescaler_32); //独立看门狗预分频为32 /* Set counter reload value to 1000 */ IWDG_SetReload(1000);//设置IWDG 重装载值范围为0~0x0FFF; /* Reload IWDG counter */ IWDG_ReloadCounter();//按照重装载的寄存器的值来重装载IWDG 计数器 /* Enable IWDG (the LSI oscillator will be enabled by hardware) */ IWDG_Enable();//使能独立看门狗} 在主程序中实现喂狗的程序如下: ///////////主程序//////////////////int main(void){ RCC_Configuration(); //时钟配置NVIC_Configuration();//中断配置GPIO_Configuration();//GPIO 配置WatchDog_int();// 独立看门狗IWDG 设置/* 检查是否看门狗复位*/ if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET) { printf(“WatchDog Reset\r\n”); speakertest(); RCC_ClearFlag();//清除标志位} else {;} }

看门狗实验

看门狗实验 1. 为什么要看门狗?看门狗的原理是什么? 外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)它的基本原理为,给看门狗设置一个时间周期,如果在这个周期内程序不能正常运行结束,定时器会自动益处,则系统会自动复位,使系统重新运行进而得到监控系统的作用。假设程序运行的时间为Tp,定时器时间为Ti,Ti>Tp,在Ti时间内程序正常结束则不会发生益处的现象,如果受干扰等原因系统不能在Tp时刻内修改计数器的值,则在Ti时刻时系统会自动复位,引发系统重新运行。 一般情况下都是应用程序在运行结束后去喂狗,当应用程序出现异常而不能去喂狗时,在超过看门狗定时器的时间范围后,cpu会复位,起始喂狗的过程就是给看门狗的寄存器置位,当程序开始运行时,看门狗的计数器开始递减,在减到零之前必须喂狗,否则系统会复位,当减到零时还没有喂狗则系统复位。 2. 看门狗的功能 1)作为常规功能可以产生中断,通用的中断用16bit定时器 2)作为看门狗使用,当时钟计数器减为0时(超时),他将产生一个128个时 (PCLK)钟的的复位信号 我们常见的时钟有3个,FCLK,HCLK,PCLK,他们的工作频率分别是400MHz,400/3MHz,和400/6MHz,看门狗使用的是PCLK时钟。 下图为看门狗的电路示意图 PCLK经过两次降频,prescaler的值从0到256-1,Division_factor的值为16,32,64,128。 看门狗定时器记数值的计算公式如下: t_watchdog的值是寄存计数器(WDTCNT)多长时间自减一次,他的单位是时间,一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中,因此,看门狗启动前要将一个初始值写入看门狗计数器 (WTCNT)中。

STM32窗口看门狗程序

STM32窗口看门狗程序 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位(WWDG->;CR的第六位)变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口配置寄存器(WWDG->;CFR)数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新,那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。

图 3.6.1.1中,T[6:0]就是WWDG_CR的低七位,W[6:0]即是WWDG->;CFR的低七位。T[6:0]就是窗口看门狗的计数器,而W[6:0]则是窗口看门狗的上窗口,下窗口值是固定的(0X40)。当窗口看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都会产生复位。 上窗口值(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位 窗口看门狗寄存器介绍:

如何使用窗口看门狗: 1)使能WWDG时钟 2)设置WWDG_CFR和WWDG_CR两个寄存器 在时钟使能完后,我们设置WWDG的CFR和CR两个寄存器,对WWDG进行配置。包括使能窗口看门狗、开启中断、设置计数器的初始值、设置窗口值并设置分频数WDGTB 3)开启WWDG中断并分组 4)编写中断服务函数 软件例程: //---------------------------wdg.c----------------------- #include "wdg.h" #include "led.h" u8 wwdg_cnt=0x7f; //窗口看门狗计数器初值 void wwdg_init(u8 tr,u8 wr,u8 fprer) { RCC->;APB1ENR|=1;CFR|=fprer;CFR|=1;CFR&=0xff80; //窗口值清零 WWDG->;CFR|=wr; //设定窗口值 WWDG->;CR|=(wwdg_cnt|1;CR|=(cnt&0x7f); //喂狗值 } void WWDG_IRQHandler(void)

实验八 看门狗实验

实验八看门狗实验 一、实验目的 1、了解看门狗的作用; 2、掌握看门狗的使用方法。 二、实验内容 1、编程实现看门狗功能,观察看门狗作用; 2、编程实现看门狗喂狗。 三、实验设备 1、硬件: JX44B0实验板; PC机; JTAG仿真器; 2、软件: PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2; Multi-ICE V2.2.5(Build1319); 四、基础知识 1、用ADS集成开发环境,编写和调试程序的基本过程; 2、应用程序的框架结构。 五、实验说明 1、看门狗的功能和工作原理 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 其基本原理为:当本系统程序完整运行一周期的时间为Tp,看门狗的定时周期时Ti,Ti>Tp,在程序运行一周期后,就修改定时器的计数值,(俗称“喂狗”),只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。 在一个完整的嵌入式机系统或单片机最小系统中通常都有看门狗定时器。而且一般集成在处理芯片中,看门狗实际上就是一个定时器,只是它在期满后将自动引起系统复位。 2、S3C44B0看门狗的控制 S3C44B0的看门狗定时器有两个功能: 1)为常规定时器使用,而且可以引发中断; 2)为看门狗定时器使用,期满时,它可以产生128个时钟周期的复位信号。 下图是S3C44B0看门狗的示意图。输入时钟为MCLK(该时钟频率等于系统的主频),它经过两级分频,最后将分频后的时钟作为该定时器的输入时钟,当计数器期满后可以产生中断或者复位信号。

看门狗实验预习报告

实验8 看门狗实验 一、实验项目 1、利用watchdog产生定时中断,起定时器作用; 2、编程实现喂狗、看门狗和重启系统。 二、实验类型 验证性。 三、计划学时 2学时。 四、实验目的 1、了解watchdog的作用; 2、掌握lpc2103的watchdog定时器的使用方法。 五、实验设备与平台 1、实验设备:计算机(PC),ARM9-2410EP增强型嵌入式教学实验系统,Multi-ICE仿真器。 2、平台:Windows、ADS1.2。 六、涉及的知识点 定时器的使用方法,看门狗的作用以及使用方法。 七、实验相关知识 看门狗功能简述: 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(watchdog)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 看门狗的工作原理: 设系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti。在程序正常运行时,Ti>Tp,看门狗的定时器就不会溢出;若由于干扰等原因使系统不能在Tp时刻内修改看门狗定时器的记数器的记数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 S3C2410A的看门狗简介: S3C2410A的看门狗定时器有两个功能: 1、作为常规时钟,并且可以产生中断;

2、作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个时钟周 期的复位信号。 主要特性如下: 通用的中断方式的16bit定时器; 当计数器减到0(发生溢出),产生128个PCLK周期的复位信号。 下图为看门狗的电路示意图,看门狗时钟使用PCLK作为它的时钟源,PCLK通过预分频产生适合的看门狗时钟。 图5.1 Watchdog定时器框图 八、实验内容与步骤 1.实验说明 由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门 狗的功能,只需对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON)、看 门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。 设计流程如下: *设置看门狗中断操作,包括全局中断和看门狗中断的使能,看门狗中断向量的定义。 *对看门狗控制寄存器(WTCON)的设置,包括设置预分频比例因子、分频器的分频值、 中断使能和复位使能等。 *对看门狗数据寄存器(WTDAT)和看门狗计数寄存器(WTCNT)的设置。 *启动看门狗定时器。 2.看门狗复位功能实验步骤 (1)创建一个工程SHY5_WATCHDOG_1; (2)将“实验程序文档/Include/”目录下的8个头文件2410lib.h 2410slib.h 2410addr.h def.h

STM32开发笔记WWDG和IWDG的用法

STM32 独立看门狗IWDG 与窗口看门狗WWDG 2010年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 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。可通过 IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256, 通过以下方式喂狗: /* Reload IWDG counter */ IWDG_ReloadCounter(); 3. 1.25KHz 即每周期为0.8ms 共计时350 个周期,即350*0.8ms=280ms 看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率 看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数 二,窗口看门狗 STM32F的窗口看门狗中有一个7位的递减计数器,它会在出现下述2种情况之一时产生看

基于ARM看门狗程序设计

课程结业实验报告 课程名称:嵌入式系统设计 报告题目:基于ARM的看门狗程序设计专业班级:通信1601班学号: 学生姓名: 指导教师: 2017 年 6 月20 日

看门狗实验 1 实验目的 (1) 了解WATCHDOG的作用; (2) 掌握WATCHDOG定时器的使用方法。 2 实验内容 (1) 编程添加看门狗功能,观察看门狗作用; (2) 编程实现看门狗喂狗。 3 实验基础知识 (1) 看门狗功能:嵌入式系统运行时受外部干扰或系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路(WATCHDOG)。看门狗的作用是当系统跑飞而进入死循环时,恢复系统的运行。 (2) 看门狗工作原理:设本系统程序完整运转一周的时间是Tp,看门狗定是周期是Ti,Ti>Tp, 在程序运行一周后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因是系统不能在Tp时刻修改定时器的数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用 在一个完整的嵌入式系统中或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,知识它在期满后将自动引起系统复位。(3)看门狗定时器计数值: 输入到计数器的时钟周期t_watchdog =1/(PCLK/Prescaler value + 1)/ Division_factor) 看门狗的定时周期T = WTCNT * t_watchdog (4)看门狗定时器寄存器 控制寄存器(WTCON) 数据寄存器(WTDAT) 计数器寄存器(WTCNT) 4 实验步骤

AVR学习笔记十二、AVR内部的看门狗操作实验

A VR学习笔记十二、A VR内部的看门狗操作实验 -------基于LT_Mini_M16 12.1 基于A Tmega16内部看门狗操作实验 12.1.1、实例功能 A VR单片机的多数型号都有芯片内置的看门狗(watch dog)电路,看门狗电路实际上是一个定时器电路,该定时器采用独立的内部1M的RC振荡器驱动。 根据设置的看门狗定时时间,当程序运行时间超过定时时间后,如果没有及时复位看门狗(就是俗称的“喂狗”),看门狗定时器就会发生溢出,这个溢出将导致程序的复位,从而保证在程序跑飞的情况下,不会长时间没有响应。 本实例就利用WINA VR中自带的看门狗的操作函数来对A Tmega16的内部看门狗进行操作。 本实例有两个功能模块: ●了解WINAVR自带的看门狗操作函数。 ●编写程序,实现对ATmwga16内部口看门狗的操作。 通过本实例的学习,掌握以下知识点: ●如何利用WINA VR自带的看门狗操作函数实现对A Tmega16的内部看门狗的操作。 12.1.2 WINA VR中自带看门狗操作函数的说明 WINA VR中自带了看门狗操作函数,利用这些函数可以很轻松的实现对A VR单片机内部的看门狗进行控制。 如果要使用WINA VR中自带的看门狗操作函数,首先要在程序中包含看门狗操作函数的头文件,使用如下语句即可: #include 下面我们来了解一下看门狗的操作常量的定义。 ●复位看门狗定时器。程序允许在使能看门狗定时器后,在溢出时间到达之前,调用该函数将看门狗复位。如果在规定时间内不调用此函数,则会发生看门狗溢出,导致程序复位。 #define wdt_reset() _asm_ _volatile_(“dwr”) ●使能看门狗定时器,同时设置看门狗溢出时间 #define wdt_enable(timeout) _wdt_write((timeout) | _BV(WDE)) ●关闭看门狗定时器 #define wdt_disable() _wdt_write(0) ●定义看门狗定时器溢出时间 #define WDTO_15MS 0 #define WDTO_30MS 1 #define WDTO_60MS 2 #define WDTO_120MS 3 #define WDTO_250MS 4 #define WDTO_500MS 5 #define WDTO_1S 6 #define WDTO_2S 7 12.1.3 电路和连接 本实例只是对A VR单片机内部看门狗定时器的操作。没有用到任何外部电路(当然电源电路、复位电路、下载电路等构成单片机工作的最基本电路还是需要的。^_^)。 12.1.4 程序设计

stm32独立看门狗操作寄存器 库函数

stm32 独立看门狗[操作寄存器+库函数] 以单片机为核心的微型计算机系统中,单片机经常 会受到来自外界电磁场的干扰。 造成程序跑飞,只是程序的正常运行状态被打断而进入 死循环,从而使单片机控制的系统无法正常工作。看门 狗就是一种专门用于检测单片机程序运行状态的硬件结构。 stm32也是如此。 stm32 的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障时,它也仍然有效。这里需要注意 的是独立看门狗的时钟是一个内部时钟,所以不是准确 的40Khz,而是在30~60Khz之间的一个可变化的时钟, 看门狗的时钟对时间的要求不是很精确,所以时钟有偏 差可以接受。 本例直接操作寄存器实现验证独立看门狗的复位功能, 设定一个800ms的喂狗时间,在主函数中实现LED闪烁,如果设定一个1s的延时,则触发独立看门狗复位,LED 常亮。 库函数实现当外部中断发生(按下PA0按键),长时间不喂狗,引发独立看门狗复位时,向外用串口输出复位提示。

直接操作寄存器 使用独立看门狗,需要了解一下寄存器: 键值寄存器:(IWDG_KR) 低16位有效的寄存器,只写寄存器,读出值恒为0x0000. 软件必须以一定的间隔写入0xAAAA,否则,当计数器为 0时,看门狗会产生复位。 写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器。写入0xCCCC,启动看门狗工作。 预分频寄存器:(IWDG_PR) 第三位有效寄存器,用于设置看门狗的分频系数,最低 为4,最高位256. 通过设置PR[2:0]:位来选择计数器时钟的预分频因子。 要改变预分频因子,IWDG_SR寄存器的PVU位必须为0。 000: 预分频因子=4 100: 预分频因子=64 001: 预分频因子=8 101: 预分频因子=128 010: 预分频因子=16 110: 预分频因子=256 011: 预分频因子=32 111: 预分频因子=256

实验7:CC2530 看门狗实验

计算机科学与技术学院 实验报告 课程名称:无线传感器网络原理与应用

实验七 CC 2530看门狗实验 一、实验目的 有些稳定性要求高的应用中,需要使用看门狗(Watchdog)机制来重启系统。本实验主要介绍看门狗看门狗模式的使用方法及作用。 CC250 芯片中已集成看门狗硬件模块,无需插入扩展板。 二、实验内容 利用看门狗重启系统,实现 LED 的闪烁。 三、实验环境 硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线),PC 机; 软件:IAR 软件。 四、实验步骤 1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关; 2)用烧录线连接汇聚网关上的烧录接口与电脑 USB 接口; 3)点击(\CC2530_simple_demo\cc2530-simple-demo\WATCHDOG)目录下的工程图标 watchdog.eww 打开工程; 4)点击 IAR 中的图标按钮编译程序; 5)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮将程序下载到汇聚网关上; 6)调试运行程序,可以看到,红绿灯闪烁,这是看门狗重启系统的效果。 7)加入喂狗函数,查看实验现象,验证看门狗的看门狗模式的工作原理,学生还可以配置 WDCTL 使看门狗工作与定时器模式。 程序代码 程序源文件路径为/cc2530-simple-demo/ DMA_Test/ watchdog.c

实验总结 本实验验证了看门狗重启系统的效果,while 循环中,注释掉的是喂狗函数,如果即时喂狗,系统便不会重启,小灯也就不会闪烁。

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

嵌入式 实验6 看门狗实验

实验6 看门狗定时器应用实验 1、实验目的 了解watchdog 的作用 掌握S3C2410A 的watchdog 定时器的使用方法 2、实验内容 实现看门狗复位 编程实现看门狗喂狗 3、实验设备 S3C2410A 开发板 ADS1.2 集成开发环境,ARM 仿真器、串口连接线 4、实验原理 4.1 看门狗功能简述 嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现“跑飞”,导致整个系 统瘫痪。为了防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗(watchdog)电路。看门狗的作用就是当系统“跑飞”而进入死循环时,恢复系统的运行。 4.2 看门狗的工作原理 其基本原理为:设本系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti, Ti>Tp,在程序正常运行时,定时器就不会溢出,若由于干扰等原因使系统不能在Tp 时刻修改定时器的记数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用。 4.3 S3C2410A 的看门狗 S3C2410A 的看门狗定时器有两个功能: 作为常规时钟,并且可以产生中断; 作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128 个时钟 周期(PCLK)的复位信号。 主要特性如下: 通用的中断方式的16bit 定时器。 当计数器减到0(发生溢出),产生128 个PCLK 周期的复位信号。 下图为看门狗的电路示意图,看门狗时钟使用PCLK 作为他的时钟源,PCLK 通过预分 频产生适合的看门狗时钟。 看门狗模块包括一个预比例因子放大器,一个是四分频器,一个16bit 计数器。看门狗 的时钟源来自PCLK,为了得到较宽范围的看门狗信号,PCLK 先被预分频,之后再经过分频器分频。预分频比例因子的分频值,都可以由看门狗控制器(WTCON)决定,预分频值的有效范围从0 到256-1。分频因子可以选择16、32、64 或者128。 看门狗定时器记数值的计算公式如下: t_watchdog=1/ [PCLK/( prescaler value +1)/ Division_factor ]

STM32 例程看门狗

独立看门狗实验 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"。 建议:看门狗是定时器的一种,学习看门狗对于理解定时器有着借鉴作用 [编辑] 实验目的: 1.分析和学习固件库 2.理解固件库的结构 3.通过stm32f10x_iwdg.c/.h文件,熟悉IWDG(独立看门狗)的控制和工作原理 4.复习按键中断的使用方法 [编辑] 实验要求: 1.使用LED灯LED1来指示程序是否重启(IWDG) 2.使用按键WAKEUP来不断地喂狗,并用LED4灯指示 [编辑] 硬件分析: [编辑] 看门狗原理: 看门狗又叫watchdog timer(WDT),是一个定时器电路。 ?一个输入端:叫喂狗引脚; ?一个输出端:连接到MCU的RESET引脚; 在系统运行以后,启动了看门狗的计数器,看门狗就开始自动计数; MCU正常工作时,每隔一段时间输出一个信号到喂狗端,将WDT清零; 一旦单片机由于干扰造成程序跑飞后,而进入死循环状态时,在超过规定的时间内“喂狗”程序不能被执行,看门狗计数器就会溢出,从而引起看门狗中断,就会输出一个复位信号到MCU,造成系统复位。 在使用看门狗时,要注意适时喂狗。 [编辑] STM32看门狗简介: [编辑] 启动方式:

通过选项字设定: 硬件或软件启动; [编辑] 基本特色: 自由运行的递减计数器; 内部独立的低功耗时钟LSI提供时钟,即使主时钟失效,看门狗仍处于激活状态;一旦启动独立看门狗,就不能停止(LSI也不能被禁止); 看门狗被激活后,则在计数器计数至0x000时产生复位;在电源稳定期间,即使系统进入STOP和STANDBY模式,独立看门狗复位能将系统从STANDBY模式唤醒。最适合应用于要求看门狗运行时,完全独立与主应用之外的项目 [编辑] 硬件电路分析: 这里的核心是在STM32内部进行,并不需要外部电路。但是考虑到指示当前状态和喂狗等操作,我们需要2个IO口,一个用来输入喂狗信号,另外一个用来指示程序是否重启。 喂狗我们采用板上的WAKEUP键来操作,而程序重启,则是通过LED4来指示的。LED4和WAKEUP的连接在前面跑马灯实验已经介绍了,这里我们不再多说. . STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟并不是准确的40Khz,而是在 30~60Khz之间变化的一个时钟,只是我们在估算的时候,以40Khz的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。通过对LSI进行校准可获得相对精确的看门狗超时时间。有关LSI校准的问题,详见数据手册LSI时钟一节。

STM32学习之独立看门狗IWDG

STM32学习之独立看门狗IWDG STM32 的独立看门狗由内部专门的40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟并不是准确的40Khz,而是在30~60Khz 之间变化的一个时钟,只是我们在估算的时候,以40Khz 的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。 独立看门狗有几个寄存器分别介绍,首先是 键值寄存器IWDG_KR,该寄存器的各位描述如下: 图3.5.1.1 寄存器IWDG_KR 各位描述 在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF 递减计数。当计数器计数到末尾0x000 时,会产生一个复位信号(IWDG_RESET)。无论何时,只要键寄存器IWDG_KR 中被写入0xAAAA,IWDG_RLR 中的值就被重新加载到计数器中从而避免产生看门狗复位。 IWDG_PR 和IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR 寄存器中写入0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。

分频寄存器(IWDG_PR),该寄存器用来设置看门狗时钟的分频系数,最低为4,最高位256,该寄存器是一个32 位的寄存器,但是我们只用了最低3 位,其他都是保留位。预分频寄存器各位定义如下: 重装载寄存器IWDG_RLR:寄存器用来保存重装载到计数器中的值。该寄存器也是一个32 位寄存器,但是只有低12 位是有效的,该寄存器的各位描述如下

状态寄存器(IWDG_SR):如果在应用程序中使用了多个重装载值或预分频值,则必须在RVU位复位后才能重新改变预装载值,在PVU 位复位后才能重新改变预分频值。然而,在预分频和/或重装值更新后,不必等待RVU或PVU复位,可继续执行下面的代码。 只要对以上三个寄存器(除状态寄存器IWDG_SR)进行相应的设置,我们就可以启动STM32的独立看门狗,启动过程可以按如下步骤实现: 1)向IWDG_KR 写入0X5555。 通过这步,我们取消IWDG_PR 和IWDG_RLR 的写保护,使后面可以操作这两个寄存器。 设置IWDG_PR 和IWDG_RLR 的值。 这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间,该时间的计算方式为: Tout=40Khz/((4*2^prer )* rlr)

相关文档
最新文档