(完整word版)基于ARM看门狗程序设计_第1页
(完整word版)基于ARM看门狗程序设计_第2页
(完整word版)基于ARM看门狗程序设计_第3页
(完整word版)基于ARM看门狗程序设计_第4页
(完整word版)基于ARM看门狗程序设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程结业实验报告课程名称:嵌入式系统设计报告题目:基于ARM勺看门狗程序设计专业班级:通信1601班 学号: 学生姓名:指导教师:2017年 6月20日看门狗实验1 实验目的(1) 了解 WATCHDOG 的作用;(2) 掌握 WATCHDOG 定时器的使用方法。2 实验内容(1) 编程添加看门狗功能,观察看门狗作用;(2) 编程实现看门狗喂狗。3 实验基础知识(1) 看门狗功能: 嵌入式系统运行时受外部干扰或系统错误, 程序有时会出现 “跑飞” ,导致整个系统瘫痪。为防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路( WATCHDOG ) 。看门狗的作用是当系统跑飞而进入

2、死循环时,恢复系统的运行。(2)看门狗工作原理:设本系统程序完整运转一周的时间是Tp,看门狗定是周期是Ti , Ti>Tp, 在程序运行一周后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因是系统不能在Tp 时刻修改定时器的数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用在一个完整的嵌入式系统中或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,知识它在期满后将自动引起系统复位。( 3) 看门狗定时器计数值:输入到计数器的时钟周期 t_watchdog =1/(PCLK/Prescale

3、r value + 1)/ Division_factor)看门狗的定时周期 T = WTCNT * t_watchdog( 4)看门狗定时器寄存器控制寄存器(WTCON )数据寄存器(WTDAT )计数器寄存器( WTCNT )4 实验步骤8(1)新建一个工程watchdog,添加相应的文件,并修改 watchdog的工程设置;创建 watchdog.c并加入到工程watchdog中,部分参考代码如下:/* functions */void rtc_tick_isr(void) _attribute_ (interrupt("IRQ");void rtc_int_isr(

4、void) _attribute_ (interrupt("IRQ");/设置寄存器参数#define WDT_ENABLE(0x01<<5)#define WDT_INT_ENABLE(0x01<<2)#define WDT_RST_ENABLE(0x01<<0)#define WDT_CLK_SEL#define WDT_PRE_SCALERvoid watchdog_init()rWTCNT = 8448 * 2;(0X3<<3)/* 1/128 */(PCLK/1000000-1)<<8)/* 49/* 设

5、置看门狗初始值 */rWTCON = WDT_ENABLE| WDT_RST_ENABLE | WDT_CLK_SEL | WDT_PRE_SCALER;/* 打开看门狗 */void rtc_set_date(st_date* p_date)rRTCCON = 0x01;rBCDYEAR = p_date->year;rBCDMON = p_date->mon;rBCDDAY = p_date->day;rBCDDATE = p_date->week_day;rBCDHOUR = p_date->hour;rBCDMIN = p_date->min;rBC

6、DSEC = p_date->sec;rRTCCON = 0x00;void rtc_get_date(st_date* p_date)void rtc_tick_init( char tick )Irq_Request(IRQ_TICK, rtc_tick_isr);/No reset3, Merge BCD counters2, BCD clock select/*TICK 中断使能,周期为(1+tick)/128 秒*/rRTCCON = 0x0;XTAL1, RTC Control disable0rTICNT = (tick&0x7f)|0x80;Irq_Enable(

7、IRQ_TICK);void Main(void)int old_index ;st_date m_date;/* 配置系统时钟 */ChangeClockDivider(1,1);/ 1:2:4ChangeMPllValue(0xa1,0x3,0x1);/ FCLK=202.8MHz/* 中断初始化*/Isr_Init();/* 初始化端口*/Port_Init();/* 初始化串口 */Uart_Init(0,115200);Uart_Select(0);/* 设置告警的时间及方式, 0x41 表示使能 RTC 告警,以及使能秒时钟告警*/ rtc_alarm_set(&m_dat

8、e, 0x41);rtc_tick_init(127)/* 打开看门狗复位功能*/watchdog_init();old_index = led_index;PRINTF(" 请在 2秒内喂狗,否则系统将在约 2秒后复位 nn");while(1)*/if(old_index != led_index) /* 每隔一秒更新一次数据rtc_get_date(&m_date);old_index = led_index;void rtc_tick_isr(void)Irq_Clear(IRQ_TICK);/* 清除 TICK 中断 */*(U8*) 0x10000006

9、) = 0x00;*(unsigned char*)0x10000004 = seg7tableled_index%10;led_index+;/* 喂狗 */rWTCNT = 8448 * 2;(2) 注意设置运行设备,如图 1.1 所示。Project Settings:CdwuDicftli c>n portGtneral114bli晶2r device :ARMTIasyARWTVsb AFiH91TsbX 坦c£jaU/b勺卜口国,1" devl c g ronfi £tot at i on :F USBCE图 1.1 设置 Devices 编译watchdog,下载程序并运行,通过超级终端看是否复位,实验结果如图1.2所示。图1.2实验结果 删除“喂狗”代码,查看运行结果,如图 1.3所示图1.3运行结果5实验总结通过本次实验我进一步了解了看门狗的工作原理和功能,以及看门狗寄存器定时周期 的计算方法,同时也对嵌入式系统设计有了更加广泛且深刻的认

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论