文档库 最新最全的文档下载
当前位置:文档库 › 关于stm32f4家的两只看门狗WWDG和IWDG剖析

关于stm32f4家的两只看门狗WWDG和IWDG剖析

关于stm32f4家的两只看门狗WWDG和IWDG剖析

关于stm32f4家的两只看门狗WWDG和IWDG剖析

独立看门狗IWDG

stm32f4 的独立看门狗IWDG,是一个拥有独立时钟驱动、自由运行递减计数器的外设,用于检测并解决由软件错误导致的故障。

IWDG 被开启后IWWDG_RLR 寄存器中的值写入计数器并会自动从

0xFFF 开始递减计时,当递减到0x000 时产生一个复位信号并自动复位,复位处理器啊兄die。(将0xCCCC 写入关键字寄存器IWDG_KR 开启独立看门狗/ 硬件看门狗使能后会上电会自动开启看门狗)

程序中所要做的就是按时将关键字0xAAAA 写到IWDG_KR 寄存器中,

这时IWDG_RLR 寄存器中的值会立即重载到计数器中,从而避免产生看门狗复位(喂狗)。

关键字寄存器IWDG_KR:高16 位保留,低16 位用于关键字写入。三个关键字0xAAAA 表示重置计数器,0xCCCC 启动看门狗,0x5555 失能

IWDG_PR、IWDG_RLR 寄存器的写保护。

预分频寄存器IWDG_PR:低三位有效,用于设置预分频器的分频倍数。

重载寄存器IWDG_RLR:设置计数器重载值,低十二位有效。

状态寄存器IWDG_SR:只有0、1 两位有效,1 位是RVU 用于使能对重载寄存器的写操作哦,0 位是PVU 用于使能对预分频寄存器的写操作。

递减计数器是16 位的:0xFFF~0x000

窗口看门狗WWDG

stm32f4 的窗口看门狗WWDG,是一个由APB1 总线提供时钟的看门狗外设,其主要特色是程序必须要在限定的时间窗口内喂狗,早了不行,晚了也不行。

实验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 ]

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

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

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

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

/*----------------------------------------------- 名称:看门狗溢出实验按键不停喂狗 论坛:https://www.wendangku.net/doc/6315214941.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,无返回值

看门狗实验

看门狗实验 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)中。

实验八 看门狗实验

实验八看门狗实验 一、实验目的 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

基于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 程序设计

实验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 循环中,注释掉的是喂狗函数,如果即时喂狗,系统便不会重启,小灯也就不会闪烁。

嵌入式 实验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时钟一节。

嵌入式看门狗实验

看门狗实验 一、实验目的 学习 CC2530 片内看门狗的工作原理。 配置 CC2530 的看门狗相关的寄存器。 二、实验环境 硬件:PC 机,EBDCC2530 节点板,USB 接口仿真器。 软件:Windows98/2000/NT/XP,IAR 集成开发环境。 三、实验原理 看门狗(WatchDog),准确的说应该是看门狗定时器,则正是专门用来监测单片机程序运行状 态的电路结构。其基本原理是:启动看门狗定时器后,它就会从 0 开始计数,若程序在规定的时间间隔内没有及时对其清零,看门狗定时器就会复位系统(相当于重启电脑)。 图 2-8-1 看门狗原理示意图 看门狗的使用可以总结为:选择模式→选择定时器间隔→放狗→喂狗。 (1)选择模式 看门狗定时器有两种模式,即“看门狗模式”和“定时器”模式。在定时 器模式下,它就相当于普通的定时器,达到定时间隔会产生中断(你可以 在 ioCC2530.h文件中找到其中断向量为 WDT_VECTOR);在看门狗模式下, 当达到定时间隔时,不会产生中断,取而代之的是向系统发送一个复位信 号。本实验中,通过 WDCTL.MODE=0 来选择为看门口模式。 (2)选择定时间隔 如上图所示,有四种可供选择的时钟周期,为了测试方便,我们选择时间 间隔为 1s(即令WDCTL.INT=00)。

(3)放狗 令 WDCTL.EN=1,即可启动看门狗定时器。 (4)喂狗 定时器启动之后,就会从 0 开始计数。在其计数值达到 32768 之前(即<1s ),若我们用以下代码喂狗: WDCTL=0xa0; WDCTL=0x50; 则定时器的计数值会被清 0,然后它会再次从 0x0000 开始计数,这样就防止了其发送复位信号,表现在开发板上就是:LED1 会一直亮着,不会闪烁;若我们不喂狗(即把此代码注释掉),那么当定时器计数达到 32768 时,就会发出复位信号,程序将会从头开始运行,表现在开发板上就是:LED1 不断闪烁,闪烁间隔为 1s 。(注:喂狗程序一定要严格与上述代码一致,顺序颠倒/写错/少写一句都将起不到清 0 的作用。) 程序流程图: 图 2-8-2 看门狗程序流程图 开始 系统时钟初始化 LED 初始化 设定看门狗定时器 的计数时间间隔 启动看门狗 在上述时间间 隔内,喂狗? 程序继续运行 N Y

飞思卡尔S12G系列芯片Demo程序之看门狗实验

1、看门狗代码示例 #include #include "derivative.h" #define LEDCPU PORTD_PD3 #define LEDCPU_dir DDRD_DDRD3 /*************************************************************/ /* 初始化锁相环*/ /* 使用外部晶振:16MHz */ /* 设置总线频率:16MHz */ /*************************************************************/ void INIT_PLL(void) { CPMUPROT=0x26; //解除时钟配置保护 CPMUCLKS_PSTP = 0; CPMUCLKS_PLLSEL = 1; CPMUOSC_OSCE=1; //使能外部晶振 CPMUSYNR = 0x01; //SYNDIV的值为1, CPMUREFDIV =0x81; //REFDIV的值为1 CPMUPOSTDIV=0x00; CPMUPLL=0x10; //锁相环调频启用,用以减少噪音 while(CPMUFLG_LOCK==0); //等待PLLCLK锁定 CPMUPROT=0x01; //使能时钟配置保护 } /*************************************************************/ /* 初始化看门狗*/ /*************************************************************/ void INIT_COP(void) { CPMUPROT =0x26; //解除时钟配置保护 CPMUCLKS &=(~0x10); CPMUCLKS |=0x01; //设置时钟源为晶振时钟 CPMUCOP = 0x07; //设置看门狗复位间隔,2^24个晶振周期,为1.048576s CPMUPROT=0x00; //使能时钟配置保护 } /*************************************************************/ /* 延时函数*/ /*************************************************************/ void delay(void) { unsigned int i;

关于看门狗的作用与相关实验

关于看门狗的作用与相关实验 看门狗的作用:看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作,使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。 软件的可靠性一直是一个关键问题。任何使用软件的人都可能会经历计算机死机或程序跑飞的问题,这种情况在嵌入式系统中也同样存在。由于单片机的抗干扰能力有限,在工业现场的仪器仪表中,常会由于电压不稳、电弧干扰等造成死机。在水表、电表等无人看守的情况下,也会因系统遭受干扰而无法重启。为了保证系统在干扰后能自动恢复正常,看门狗定时器(Watchdog TImer)的利用是很有价值的。 看门狗问题及相关实验现今市面上流行的一些单片机,多嵌有内部WDT,如TI的MSP430系列,Philips的P87XXX和P89XXX系列,MICroChip的PIC列,Atmel的AT89SXX系列和HoLTEk公司的Htxxx系列。但是这些内部看门狗在工作时,多存在一定的误差。一些工程师在设计的过程中,由于忽略了这一点,导致系统出现异常。MSP430系列单片机是美国德州仪器公司(TI)近几年开发的新一代单片机,该系列是一款16位、具有精简指令集、超低功耗的全新概念混合型单片机。在众多单片机系列中,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为一颗耀眼的新星。其内部自带看门狗及复位电路,理论上如果程序跑飞,可用看门狗将其复位。但在实际使用过程中,发现看门狗的作用并非万无一失,以下实验证明了这一点。实验电路如图1所示。 试验程序清单: #includevoid main(void){p1dir l=0x0f; //设置p1.2-.p1.0为输出for(;;){volaTIle unsigned int i;wdtctl=wdtpw+wdtcncl;//复位wdtpiout==0x0t;i=5000;do(i)while(i!=0);}}上述实验启动后,如果程序正常运行,LED会闪烁。缺省时,MSP430的看门狗是允许状态,所运行的程序

相关文档
相关文档 最新文档