ARM之看门狗
来源:互联网 发布:mac镜像安装方法 编辑:程序博客网 时间:2024/05/16 17:57
看门狗(watchdog)包括一个4分频的预分频器和一个32位的计数器,时钟通过预分频器输入定时器。定时器递减计数,递减的最小值为0XFF。如果设置一个小于0XFF的值,系统会将0XFF装入计数器,因此最小看门狗间隔为t(pclk)X256X4。
看门狗的用途是使微控制器在进入错误状态后的一定时间内复位。当看门狗使能时,如果用户程序没有在周期时间内喂狗(重装),看门狗会产生一个系统复位。
看门狗的特性如下:
1.如果没有周期性重装,则产生片内复位。
2.调试模式。
3.由软件使能,但要求禁止硬件复位或看门狗复位/中断~。
4.错误/不完整的喂狗时序会导致复位/中断(如果使能)。
5.指示看门狗复位的标志。
6.带内部预分频器的可编程32位定时器。
7.可选择t(pclk)X4的倍数的时间周期。
基本操作:看门狗应当根据下面的方法来使用
1.在WDTC寄存器中设置看门狗定时器的固定装载值;
2.在WDMOD寄存器中设置模式;
3.通过向WDFEED寄存器顺序写入0XAA和0X55启动看门狗;
4.在看门狗向下溢出之前应当再次喂狗,以防止复位/中断~!
当看门狗计数器想下溢出时,程序计数器将从0x00000000开始,和外部复位一样。可以检查看门狗超时标志WDTOF来确定看门狗是否产生复位条件,WDTOF标志必须由软件清零。
基础实验:
1.看门狗溢出复位实验:
由于LPC复位后执行FLASH内的代码,因而需将程序写入FLASH中,即在ADS中选择DebugInFlash或者RelInFlash。正常情况下,周期喂狗,防止看门狗溢出,当意外情况发生,喂狗周期被打断,超过WDTC设定的时间,看门狗将回溢出并产生复位,发生WDT复位后,程序判断看门狗溢出标志是否已被清楚,若没有被清除,则蜂鸣器鸣叫报警。
2.看门狗溢出产生内中断实验:
看门狗使能后,需要程序在规定周期内重新喂狗,否则会产生看门狗溢出。看门狗溢出能产生中断或者复位,具体由用户程序决定。程序使能看门狗,设定看门狗溢出时间值,并且设定WDMOD为溢出产生中断,PS:看门狗超时中断只能通过禁止VIC中断的方式返回!
void delay(int nTime)
{
// time=0: adjust the Delay function by WatchDog timer.
// time>0: the number of loop time
// resolution of time is 100us.
int i,adjust=0;
if(nTime==0)
{
nTime = 200;
adjust = 1;
delayLoopCount = 400;
//PCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable
rWTCON = ((PCLK/1000000-1)<<8)|(2<<3);
rWTDAT = 0xffff; //for first update
rWTCNT = 0xffff; //resolution=64us @any PCLK
rWTCON = ((PCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start
}
for(;nTime>0;nTime--)
for(i=0;i<delayLoopCount;i++);
if(adjust==1)
{
rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); //Watch-dog timer stop
i = 0xffff - rWTCNT; //1count->64us, 200*400 cycle runtime = 64*i us
delayLoopCount = 8000000/(i*64); //200*400:64*i=1*x:100 -> x=80000*100/(64*i)
}
}
- ARM之看门狗
- ARM 看门狗
- 十一.ARM裸机学习之定时器、看门狗和RTC时钟
- ARM看门狗定时器设置
- arm看门狗的作用
- arm看门狗的作用
- ARM笔记(看门狗)
- ARM+Linux下看门狗应用
- ARM的看门狗定时器进阶
- XS128之看门狗COP
- linux之看门狗
- S3C2440之看门狗
- LPC2103学习之看门狗
- NUC140之看门狗
- Linux之看门狗
- PIC单片机之看门狗
- DSP时钟之看门狗
- 树莓派之看门狗
- 使用Intent-Filter来决定打开方式
- [翻译]High Performance JavaScript(005)
- vs2005 c++ MFC IE8 添加变量 脚本错误 此网站的某个加载项运行失败
- ubuntu 10.04 更新源 sources.list
- Oracle Sql Loader中文字符导入乱码的解决方案
- ARM之看门狗
- 问题解释方式的突破技巧www.themanage.cn
- 领域驱动设计和开发实战
- Visual C++ 6.0各个版本介绍
- oracle的表空间、分区表、以及索引的总结
- 自己胡乱写了个二分搜索,求鉴定。急,
- 控件子类化的两种方式
- Student Management System(完整版) (我同学写的)
- 什么是servlet