嵌入式系统看门狗实验报告
《嵌入式系统原理与应用》实验报告04-看门狗实验
签名:
日期:
成绩
WDFEED=0x55;
}
void FeedDog(void)
{
WDFEED=0xaa;
WDFEED=0x55;
}
int main (void)
{
uint32 dly;
PINSEL0=0x00;
PINSEL1=0x00;
IO0DIR=led;
IO0SET=led;
for(dly=0;dly<500000;dly++);
1.实验效果截图
2.源程序
#include "config.h"
#define key (1<<20)//set the button to be P0.20
#define led (1<<7)
void WDT_Init(uint32 time)
{
WDTC=time;
WDMOD=0x03;
WDFEED=0xaa;
二、实验设备(环境)及要求
硬件:PC机;
软件:PC机操作系统windows XP,Proteus软件,ADS1.2
三、实验内容与步骤
实验内容:
运行程序时,LED灯闪烁一下,并启动看门狗;当按键按下时,停止喂狗,此时会引起看门狗复位;复位之后,程序重新运行,此时LED灯又闪烁了一下。
四、实验结果与数据处理
《嵌入式系统原理与接口技术》实验报告
实验序号:4实验项目名称:看门狗实验
学 号
XXXX
姓 名
XXX
专业、班
计算机科学与技术
实验地点
1-416
指导教师
XXX
实验时间
嵌入式操作系统中的看门狗
处理器( P ) 为大家提供了广泛的选择。软件常常是解 决问题的成本最低、灵活性最高的方案。
软件看门狗的特性: 本身独立工作, 基本上不依赖CPU ; CPU 在一个固定的时间间隔内和系统打一次
交道( 喂一次狗) , 以表明系统目前工作正常; 当 CP U 陷入死循环后, 能及时发觉并使系统
看门狗初始化
V oHale Waihona Puke d W DT Init( v oid)
{ W DT C = 0x 10000; W DM O D = 0x 03; W dtF eed( ) ; }
喂狗操作
vo id RstW dt ( vo id)
{ IRQ Disable( ) ; / / 关中断 W DFEED = 0x AA ; W DFEED = 0x 55; IRQ Enable ( ) ; / / 打开中断 }
1 基本原理与特性
所谓“看门狗”是指在系统设计中通过软件或硬件 方式在一定的周期内监控系统的运行状况。如果在规 定时间内没有收到来自系统的触发信号, 则系统会强 制复位, 以保证系统在受到干扰时仍然能够维持正常 的工作状态。它主要有寄存器、定时器和看门狗模等部 件构成, 其内部结构如图 1 所示。
图中w dt c 、w df eed 等分别代表看门狗寄存器, 以
系统, 如数控机床、机器人、自动化设备等, 如果系统在出现故障时, 会出现一些严重的后果, 为了避免不必
要的损失, 在此可以利用看门狗自动恢复。介绍了看门狗的基本原理, 以及软件的具体实现。
【关键词】嵌入式操作系统, 看门狗, 喂狗
中图分类号: T P 316
嵌入式系统中看门狗的使用总结
嵌入式系统中看门狗的使用总结最近需要在板子上加上一块WatchDog,以确保在系统出错时自动重启,所以看了一些在嵌入式系统中使用看门狗的资料,现在总结如下:一、看门狗原理在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。
看门狗其实就是一个可以在一定时间内被复位的计数器。
当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。
系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗”),不让复位信号产生。
如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。
这就好比你的身边有一只时刻饥饿的狗,你不按时给它肉吃,它就会吃你的肉,你被吃了......挂了,投胎转世,彻底重新做人了。
不幸的是来世你还得喂狗-_-!!二、看门狗的种类在现在的嵌入式系统中主要可以分为两种类型的看门狗:1、CPU内部自带的看门狗:此类看门狗一般是将一个芯片中的定时器来作为看门狗,通过程序的初始化,写入初值,设定溢出时间,并启动定时器。
程序按时对定时器赋初值(或复位),以免被咬。
这种看门狗是可以被禁用的(只要停止这个定时器即可),好比对那只要咬你的狗来个“葵花点穴手”。
大部分CPU都内置看门狗,硬件原理可参考各芯片数据手册。
优点:可以通过程序改变溢出时间;可以随时禁用缺点:需要初始化;如果程序在初始化、启动完成前跑飞或在禁用后跑飞,看门狗就无法复位系统,这样看门狗的作用就没有了,系统恢复能力降低。
2、独立的看门狗芯片:这种看门狗主要有一个用于喂狗的引脚(一般与CPU的GPIO相连)和一个复位引脚(与系统的RESET 引脚相连),如果没有在一定时间内改变喂狗脚的电平,复位引脚就会改变状态复位CPU。
此类看门狗一上电就开始工作,无法禁用。
现在常用的芯片有:CAT705/CAT706、IMP706等等,溢出时间在1.6秒左右。
看门狗实验
看门狗实验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)中。
7.看门狗实验
IWDG_SetReload(rlr);
IWDG_ReloadCounter(); IWDG_Enable(); }
3.3 独立看门狗主程序
回到主界面,在 main.c 文件里面编写如下代码:
#include "led.h" #include "delay.h"
#include "sys.h"
#include "wdg.h"
2.5 预分频寄存器IWDG_PR(STM32参考手册 P318)
2.6 重装寄存器IWDG_RLR(STM32参考手册 P318)
2.7 独立看门狗超时时间
溢出时间计算: Tout=((4×2^prer) ×rlr) /40 时钟频率LSI=40K, 一个看门狗时钟周期就是最短超时时间。 最长超时时间= (IWDG_RLR寄存器最大值)X看门狗时钟周期
delay_ms(100);
PBout(0)=0;
while(1);
}
#include "sys.h"
#include "wdg.h"
int main(void)
{ delay_init(); LED_Init();
5.3 窗口看门狗主程序
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8);
void WWDG_Init(u8 tr,u8 wr,u32 fprer);
void WWDG_Set_Counter(u8 cnt); void WWDG_NVIC_Init(void); #endif
嵌入式系统试验报告
嵌入式系统实验报告学院:计算机科学与工程姓名:___________学号:_______________专业:_______________指导老师:______________完成日期:______________实验一:流水灯案例、8位数码管动态扫描案例一、实验目的1.1 进一步熟悉Keil C51集成开发环境调试功能的使用;1.2 学会自己编写程序,进行编译和仿真测试;1.3 利用开发板下载hex 文件后验证功能。
二、实验原理2.1 :实验原理图030B 〜I ।卜RSI I ™Hi 」 口 UICDR Hr hJJK RR 18q U I. 海水灯电浒周LhE U_EEM^Li > > 第 X > k >n - » =白 L a £0EBS2.2:工作原理2.2.1:流水灯电路中有LO,1,L2,L3,4,L5,L6,L7共八个发光二极管,当引脚LED_ SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。
A〜H引脚连接STM32F108VB芯片的PE8〜PE15,程序初始化时,对其进行初始设置。
引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。
注意,LED SEL 连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的I0不可用,需对AFIO_ MAPR寄存器进行设置,设置其为10可用。
2.2.2: 8位数码管数码管中的A~G、DP段分别连接到电路图中的A~G、H线上,当某段上有一-定的电压差值时,便会点亮该段。
当£3输入为1,也就是LED_ 5£1输入为0时,根据SELO〜SEL2的值确定选中的数码管,即位选,再根据A~H引脚的高低电平,点亮对应段,即段选。
三、实验结果3.1:流水灯对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0-L7从左至右依次点亮,间隔300ms。
实验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 ]看门狗的定时周期为T=WTCH×t_watchdog一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中。
6Zigbee实验报告《看门狗》
1)打开鼎轩VSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;
2)用烧录线连接汇聚网关上的烧录接口与电脑USB接口;
3)点击(\cC2530-simpledemo\cc2530-simple-demo\WATCHDOG)目录下的工程图标watchdog.eww打开工程;.
WDCTL = 0x50;
}
/***************************
//主函数
*************************itLed();//调用初始化函数
Init_Watchdog();
LED1=1;
while(1)
{
LED2=~LED2; //仅指示作用。
LED1 = 0; //LED1灯熄灭
LED2 = 0;//LED2灯熄灭
}
void Init_Watchdog(void)
{
WDCTL = 0x00; //这是必须的,打开IDLE才能设置看门狗
WDCTL |= 0x08;
//时间间隔一秒,看门狗模式
}
void FeetDog(void)
{
WDCTL = 0xa0;
for(j=587;j>0;j--);
}
第二页
实验内容与步骤
/****************************
//初始化程序
*****************************/
void InitLed(void)
{
P1DIR |= 0x03; //P1_0、P1_1定义为输出
P1INP |= 0X03; //打开下拉
Delayms(300);
AVR单片机看门狗实验报告2013v1(有不同)
void watchdog_off(void)
{ /* Write logical one to WDTOE and WDE
这里严格要求这样的顺序*/
WDTCR = (1<<WDTOE) | (1<<WDE); /* Turn off WDT 这里严格要求这样的顺序*/
WDTCR = 0x00;
}
void Delay(void) { unsigned char i,j; for(i=200;i>0;i--)
{ for(j=100;j>0;j--); WDR(); //这里喂狗不然超过时间了
BIT 2、1、0 这三位设置看门狗溢出的间隔,在设置好的时间内不喂狗,就重启。
二、 具体例子(基于 ICCAVR7.22)
A、 打开和配置看门狗为最大时间间隔 2.2s void watchdog_on(void) { WDTCR |=(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0); }
{ } }
4.2 加入看门狗后
//ICC-AVR application builder : 2013-9-23 9:24:33 // Target : M16 // Crystal: 4.0000Mhz
#include <iom16v.h> #include <macros.h>
void port_init(void) { PORTD = 0x00; DDRD = 0xff; }
看门狗定时器实训报告
本次实训旨在使学生了解看门狗定时器的基本原理、工作方式以及在嵌入式系统中的应用,通过实际操作,掌握看门狗定时器的配置、使用方法,并学会利用看门狗定时器解决嵌入式系统中的故障和异常。
二、实训内容1. 看门狗定时器原理- 看门狗定时器是一种监测硬件或软件故障的定时器,其工作原理是在程序运行过程中不断重装载,以防止溢出引发中断或复位。
- 看门狗定时器分为独立看门狗和窗口看门狗两种类型。
2. 独立看门狗(FWDGT)- 独立看门狗使用独立的32kHz内部时钟,适用于对计时精度要求不高的场合。
- 独立看门狗内部有一个12位的向下计数的定时器,当计数值达到0时,会产生一个系统复位。
3. 窗口看门狗(WWDGT)- 窗口看门狗使用PCLK分频而来的时钟,计数器位数较小,需要在窗口范围内重装载以防复位。
4. 看门狗定时器的配置与使用- 了解看门狗定时器的相关寄存器,如预分频器、计数器、重装载寄存器、键寄存器和状态寄存器等。
- 根据实际需求配置看门狗定时器的时钟源、计数器值、窗口范围等参数。
- 在程序中定期重装载看门狗定时器,以防止系统复位。
5. 看门狗定时器的实际应用- 利用看门狗定时器解决嵌入式系统中的故障和异常。
- 通过看门狗定时器监控程序运行状态,防止死锁。
- 作为系统安全特性的一部分,确保在检测到异常时能够安全地重启系统。
1. 准备工作- 准备好实训所需的硬件设备和软件环境,如单片机开发板、调试器、IDE等。
2. 环境搭建- 根据实际需求搭建实训环境,包括硬件电路连接和软件配置。
3. 看门狗定时器配置- 了解看门狗定时器的相关寄存器,如预分频器、计数器、重装载寄存器、键寄存器和状态寄存器等。
- 根据实际需求配置看门狗定时器的时钟源、计数器值、窗口范围等参数。
4. 程序编写- 编写程序,实现看门狗定时器的初始化、重装载和监控功能。
- 在程序中定期重装载看门狗定时器,以防止系统复位。
5. 调试与验证- 使用调试器对程序进行调试,观察看门狗定时器的运行状态。
看门狗实验
看门狗实验一、实验目的1.掌握“看门狗”(MAX 813L )复位控制的硬件接口技术2.掌握“看门狗”(MAX 813L )复位控制驱动程序的设计方法二、实验说明为了控制系统不受外界干扰而出现死机现象,可采用MAX813L 复位监控芯片,该芯片具备复位及监视跟踪两大功能。
主要功能:·精密电源电压、监控4.65V ·200ms 复位脉冲宽度·V1=1V 时保证复位RESET 有效。
·TTL/CMOS 兼容的防抖动人工复位输入·独立的监视跟踪定时器1.6S 溢出时间。
·电源故障或欠电压报警的电压监控 ·加电,掉电有电压降低时输出复位信号。
·低电平有效的人工复位输入 。
各引脚的功能和意义如图:(1)MR :人工复位输入、当输入降至0.8V 时产生复位脉冲,低电平有效的输入可用开关短路 到地或TTL/CMOS 逻辑驱动,不用时浮空。
(2)VCC :+5V 输入。
(3)GND :地。
(4)PFI :电源故障比较器输入,高PFI 低于1.25V 时PFO 输出低电平吸收电流;否则PFO 输出保持高电平,如果不用将PFI 接地或VCC 。
(5)PFO :电源故障比较器输出,高PFI 低于1.25V 时,输出低电平且吸收电流;否则PFO 输出 保持高电平。
(6)WDI :监视跟踪定时器输入,WDI 保持高或低电平时间长达1.6S ,WDI 输出低电平,WDI 浮空或接高阻三态门将禁止监控跟踪定时器功能,只要发生复位,内部监视跟踪定时的清零。
(7)RESET :复位输出(低电平有效)。
(8)WDO :监视跟踪定时器输出,当内部监视跟踪定时器完成1.6S 计数后,本脚输出低电平,直到下一次监视跟踪定时器清零, 才再变为高电平,在低电源或VCC 低于复位门限电压时,WDO 就保持低电平,只要VCC 上升到复位门跟电压以上后 WDO 就变为高电平而没有滞后。
看门狗实验报告
看门狗实验报告看门狗实验报告引言:近年来,随着科技的不断进步,智能家居已经成为了人们生活中的一部分。
其中,看门狗作为智能家居的一种重要组成部分,不仅可以保障家庭安全,还能提供便利。
本文将对看门狗的实验进行报告,探讨其功能、优势以及未来的发展。
一、看门狗的功能看门狗是一种通过声音、图像等感知技术,能够自动识别陌生人和异常情况的智能设备。
其主要功能包括以下几个方面:1. 安全监控:看门狗能够通过高清摄像头实时监控家庭环境,一旦检测到异常情况,如入侵者或火灾等,会立即发出警报并通知家庭成员。
这种智能化的安全监控系统,为家庭带来了更高的安全保障。
2. 远程控制:通过手机APP或者智能音箱等设备,家庭成员可以随时随地远程控制看门狗。
比如,当家庭成员不在家时,可以通过手机APP查看家中的实时图像,了解家庭状况,确保家人的安全。
3. 语音交互:看门狗还具备智能语音交互功能,可以通过语音指令实现各种操作。
比如,家庭成员可以通过语音指令让看门狗打开门锁、关闭灯光等,提供了更加便捷的生活体验。
二、看门狗的优势相比传统的门禁系统,看门狗具有以下几个明显的优势:1. 智能化:看门狗采用了先进的人工智能技术,能够通过学习和分析,自主判断何为异常情况。
相比传统门禁系统,其具备更高的准确性和智能性,能够更好地保障家庭安全。
2. 便捷性:看门狗的远程控制功能,使得家庭成员可以随时随地掌握家庭状况,并进行相应的操作。
不再需要携带钥匙或者依赖其他人的帮助,大大提高了生活的便利性。
3. 可视化:通过高清摄像头,看门狗能够提供清晰的实时图像,让家庭成员可以随时了解家中的情况。
这种可视化的特点,不仅带来了安全感,还为家庭成员提供了更多的互动和娱乐方式。
三、看门狗的未来发展随着科技的不断进步,看门狗在未来将有更广阔的应用前景:1. 人脸识别技术:目前,看门狗主要通过声音和图像等感知技术进行识别,但是随着人脸识别技术的不断发展,未来的看门狗可能会具备更高的识别准确性和速度,能够更好地辨认家庭成员和陌生人。
嵌入式实验:-看门狗实验
看门狗实验
一、实验内容
1.编程实现看门狗功能,观察看门狗作用;
2.编程实现看门狗喂狗。
二、实验代码
void Main(void)
{
int old_index ;
st_date m_date;
/* 配置系统时钟 */
ChangeClockDivider(1,1); 行编译完后,完成”connect”,”download”,”go”后,超级终端上出现如图1-1所示的界面。
图1-1
2.改变时间,即喂狗的时间,得到如图1-2所示的界面。
三、实验体会
本实验是关于看门狗的实验编程的,看门狗的作用是微控制器受到干扰后进入错误状态后,使系统在一定时间间隔内复位。
通过实验,我了解到,看门狗是保证系统长期、可靠和稳定运行的有效措施。
而实验中涉及到了定时器控制寄存器WTCON、定时器数据寄存器WTDAT、定时器/计数器寄存器WTCNT以及前面所学的实时时钟的知识。
看门狗定时器数据寄存器(WTDAT)是用于指定超时时间,而看门狗计数寄存器(WTCNT)则是包含看门狗定时器工作的时候计数器的当前计数值。
由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。
要实现看门狗的功能,只需要我们对看门狗的寄存器组进行操作。
即对看门狗的控制寄存器(WTCON)、看门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。
本次实验学到了很多,实践永远是理论的试金石,我们总能在实践中学会各种各样的知识。
嵌入式系统看门狗的使用
嵌入式系统看门狗的使用随着32 位微控制器在嵌入式产品中的广泛应用,嵌入式操作系统也逐渐被大量应用。
由于嵌入式操作系统的使用, 大大降低了复杂应用系统中软件开发的工作量, 使得嵌入式软件能够采用现代的软件开发技术进行代码编写和调试, 从而也提高了软件的质量。
但在嵌入式应用中, CPU 必须可靠工作, 即使因为某种原因进入一个错误状态, 系统也应该可自动恢复。
看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。
看门狗的基本原理所谓“看门狗”是指在系统设计中通过软件或硬件方式在一定的周期内监控系统的运行状况。
如果在规定时间内没有收到来自系统的触发信号, 则系统会强制复位, 以保证系统在受到干扰时仍然能够维持正常的工作状态。
它主要有寄存器、定时器和看门狗模等部件构成, 其内部结构如图1 所示。
图1、看门狗内部结构在这里看门狗的原理我想大家都已经比较熟悉,我不再罗嗦关于看门狗在前后台运行的程序(无OS)上使用很简单,我们只需要定时的去喂狗就可以。
但是对于使用的嵌入式操作系统的软件我们上面的简单喂狗方式就行不通了。
原因是系统是会执行任务调度的。
每一个任务在运行时就相当于一个前后台系统。
任一时刻只会有一个任务获得CPU的支配权而运行。
这样就要求我们必须在每一个任务中都要执行喂狗动作。
这样一来虽然达到了及时喂狗而不至于让系统复位的目的,但是如果有一个任务现在异常而不能运行的话,或者是两个任务因为资源问题发生死锁,系统其它的任务还会继续喂狗。
这样应用程序虽然出了问题,但是系统依然在按正常运行。
所以在OS中使用看门狗就变得复杂起来。
下面我说一下我是如何在OS中使用看门狗的。
以uCOS-II在STM32的平台上使用为例首先我为每一个任务分配一个软件看门狗计数器。
这样就形成了软件看门狗计数器队列。
这个队列在系统中使用的是全局变量(关于全局变量的使用可以看我上面一篇的“谈谈在UCOS中使用全局变量”一文)。
,设置一个优先级别最高的任务作为监视器,以监视各应用任务是否正常运行,该监视器即为软件看门狗.该任务对其他任务都设定一个计时器,每个被监视的任务在设定的时间内对软件看门狗中相应的定时器定时清零,即“喂软狗”.在其他任务都正常工作的情况下,软件看门狗对内置硬件看门狗定时器周期性清零,即“喂狗”.若某个任务出现故障,则该任务在设置的时间内对软件看门狗不“喂软狗”,此时与之对应的定时器溢出,软件看门狗发送指令,把该任务的堆栈地址指到其起始地址,重启该任务.当在设定的次数内不能有效启动,则监视器任务延时 “ 喂狗”,内置硬件看门狗计数器溢出,自动重启系统.另外,当监视器任务本身或系统硬件出现故障时,不能及时对硬件看门狗定时器清零,则重启系统.监控软件狗的任务原理图如下:12345 系统的实现过程本软件看门狗通过检查各应用任务是否在规定的时间内对其 “ 喂软狗”来确定各任务的运行状态,硬件看门狗通过检查软件看门狗是否在规定的时间内对其 “ 喂狗”来实现对监视器任务的监视.通过微 处理器的定时器中断机制,为每个任务分配计时单元和运行标志.系统具体的执行操作如下:1 )系统中某任务空闲时,以小于 “ 喂软狗”设定的时间间隔为周期,周期性地 “ 喂软狗”.2 )在该任务执行时,预计执行所需的最长耗时,并用稍大于该最大耗时的时问间隔设置监视器中与 其对应的定时器参数,同时中断周期性 “ 喂软狗”模块,启动监视器任务中的定时器倒计数.当该任务正常执行完毕时,发送信号 “ 喂软狗”,对定时器清零,复位该任务供下次使用,同时恢复周期性 “ 喂软狗”模块 .3 )当任务出现异常时,不能在设定的时间间隔内完成该任务,不能对软件看门狗及时清零,使得监 视器中相应的定时器溢出,监视器任务通过内核服务发送指令,把该任务的堆栈地址指到其起始地址,重启该任务,累计其复位次数,同时把该任务的计时器清零.如果在设定的次数内不能够有效启动该任务,软件看门狗则延时喂内置硬件看门狗,内置看门狗计数器溢出,自动重启系统.当系统主程序出现问题或者系统硬件出问题时,软件按看门狗也延迟“喂狗”,重新启动系统,以确保系统长时间稳定运行.这个方法已经成功运行于我的项目,再次分享出来。
linux嵌入式系统开发之看门狗---应用篇
int Getch (void) //无回显的从屏幕输入字符,来达到喂狗的目的
{
int ch;
struct termios oldt, newt; //终端设备结构体
printf("%d\n",i);
//看门狗开始和停止工作,打开和关闭设备具有同样的功能
//关闭
i=WDIOS_DISABLECARD;
printf("%d\n",ioctl(fd,WDIOC_SETOPTIONS,&i));
//打开
//输入如果不是ESC,就喂狗,否则不喂狗,到时间后系统重启
ioctl(fd,WDIOC_KEEPALIVE,NULL);
//write(fd,NULL,1); //同样是喂狗
}
}
close(fd); //关闭设备
return 0;
}
“小王,看清楚了吗?这就是看门狗的应用程序,可不是你说的什么流浪狗,哈巴狗”我拍拍小王的头说。
“看到了,只是感觉没啥用啊,除了你向我炫耀的左右外..”小王调皮地说道。
“啊!啊! 切,我是怕你不懂,所以就没怎么讲它的用途和原理,以及实际的应用..”我吓唬她到,“难的在下一节有关看门狗驱动的编写上,知道不..”
回到这个程序,为了不是看门狗叫(重启咱们的电脑),就不断地要从终端输入字符来喂狗(清空定时器,让计时值总是从0开始计数),这样的话,就可以保持狗不会饥饿,也就不会重启我们的电脑了。不多说了,咱们结合代码来详细介绍。
必要的头文件#include <stdio.h>
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 时钟一节。
嵌入式ARM看门狗实验报告
rRTCCON = 0x0;
//No reset[3], Merge BCD counters[2],
BCD clock select XTAL[1], RTC Control disable[0]
rTICNT = (tick&0x7f)|0x80; /*TICK
中断使能,周期为
(1+tick)/128秒*/
3 实验内容
(1) 编程添加看门狗功能,观察看门狗作用; (2) 编程实现看门狗喂狗。
4 实验步骤
(1) 参照模板工程,新建一个工程watchdog,添加相应的文件,并 修改watchdog的工程设置;创建watchdog.c并加入到工程watchdog中, 部分参考代码如下:
/* functions */
led_index++;
/* 喂狗 */ rWTCNT = 8448 * 2; } (2) 注意设置运行设备,如图1.1所示。
图1.1 设置Devices
(3) 编译watchdog,下载程序并运行,通过超级终端看是否复位, 实验结果如图1.2所示。
图1.2 实验结果
(4) 删除“喂狗”代码,查看运行结果,如图1.3所示。
/* 初始化串口 */
Uart_Init(0,115200);
Uart_Select(0);
/* 设置告警的时间及方式,0x41表示使能RTC告警,以及使能秒
时钟告警 */
rtc_alarm_set(&m_date, 0x41);
rtc_tick_init(127)
பைடு நூலகம்
/* 打开看门狗复位功能 */
watchdog_init();
实验一 看门狗实验
嵌入式看门狗实验
看门狗实验一、实验目的学习 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 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告
篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验
《嵌入式系统原理与接口技术》实验报告
实验序号:4实验项目名称:看门狗实验
1
2
3
4
篇二:嵌入式实验报告
目录
实验一跑马灯实验................................................. (1)
实验二按键输入实
验................................................. .. (3)
实验三串口实验................................................. . (5)
实验四外部中断实验................................................. .. (8)
实验五独立看门狗实验................................................. (11)
实验七定时器中断实验................................................. (13)
实验十三ADc实验................................................. .. (15)
实验十五DmA实验................................................. .. (17)
实验十六I2c实验.................................................
(21)
实验十七spI实验................................................. .. (24)
实验二十一红外遥控实验................................................. .. (27)
实验二十二Ds18b20实验................................................. (30)
实验一跑马灯实验
一.实验简介
我的第一个实验,跑马灯实验。
二.实验目的
掌握sTm32开发环境,掌握从无到有的构建工程。
三.实验内容
熟悉mDKKeIL开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。
通过Isp下载代码到实验板,查看运行结果。
使用JLInK下载代码到目标板,查看运行结果,使用JLInK在线调试。
四.实验设备
硬件部分:pc计算机(宿主机)、亮点sTm32实验板、
JLInK。
软件部分:pc机wInDows系统、mDKKeIL软件、Isp软件。
五.实验步骤
1.熟悉mDKKeIL开发环境
2.熟悉串口编程软件Isp
3.查看固件库结构和文件
4.建立工程目录,复制库文件
5.建立和配置工程
6.编写代码
7.编译代码
8.使用Isp下载到实验板
9.测试运行结果
10.使用JLInK下载到实验板
11.单步调试
12.记录实验过程,撰写实验报告
六.实验结果及测试
源代码:
两个灯LeD0与LeD1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。
七.实验总结
通过本次次实验我了解了sTm32开发板的基本使用,初
次接触这个开发板和mDKKeILc软件,对软件操作不太了解,通过这次实验了解并熟练地使用mDKKeIL软件,用这个软件来编程和完成一些功能的实现。
作为sTm32的入门第一个例子,详细介绍了sTm32的Io口操作,同时巩固了前面的学习,并进一步介绍了mDK的软件仿真功能。
实验二按键输入实验
一.实验简介
在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。
二.实验目的
熟练使用库函数操作gpIo,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。
三.实验内容
实现初始化gpIo,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。
使用JLInK下载代码到目标板,查看运行结果,使用JLInK在线调试。
四.实验设备
硬件部分:pc计算机(宿主机)、亮点sTm32实验板、JLInK、示波器。
软件部分:pc机wInDows系统、mDKKeIL软件、Isp软
件。
五.实验步骤
1在实验1代码的基础上,编写中断初始化代码
2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序
3编写中断服务程序
4编译代码,使用JLInK下载到实验板
5.单步调试
6记录实验过程,撰写实验报告
六.实验结果及测试
源代码:
我们将通过minisTm32板上载有的3个按钮,来控制板上的2个LeD,其中KeY0控制LeD0,按一次亮,再按一次,就灭。
KeY1控制LeD1,效果同KeY0。
KeY_2(KeY_up),同时控制LeD0和LeD1,按一次,他们的状态就翻转一次。
七.实验总结
通过本次实验,我学会了如何使用sTm32的Io口作为输入用。
Tm32的Io口做输入使用的时候,是通过读取IDR 的内容来读取Io口的状态的。
这里需要注意的是KeY0和KeY1是低电平有效的,而wK_up是高电平有效的,而且要确认wK_up按钮与Ds18b20的连接是否已经断开,要先断开,否则Ds18b20会干扰wK_up按键!并且KeY0和KeY1连接在
与JTAg相关的Io口上,所以在软件编写的时候要先禁用JTAg功能,才能把这两个Io口当成普通Io口使用。
篇三:嵌入式实验报告
《嵌入式系统原理与设计》
班级:
姓名:
学号:
任课教师:
开始时间:
结束时间:报告
目录
实验一跑马灯................................................. ................................................... .......51.实验目的................................................. ................................................... .. (5)
2实现方法................................................. ................................................... .........53.代。