基于-ARM看门狗程序设计.doc

上传人:夺命阿水 文档编号:9174 上传时间:2022-06-22 格式:DOC 页数:7 大小:157KB
返回 下载 相关 举报
基于-ARM看门狗程序设计.doc_第1页
第1页 / 共7页
基于-ARM看门狗程序设计.doc_第2页
第2页 / 共7页
基于-ARM看门狗程序设计.doc_第3页
第3页 / 共7页
基于-ARM看门狗程序设计.doc_第4页
第4页 / 共7页
基于-ARM看门狗程序设计.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于-ARM看门狗程序设计.doc》由会员分享,可在线阅读,更多相关《基于-ARM看门狗程序设计.doc(7页珍藏版)》请在课桌文档上搜索。

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

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

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

4、NABLE(0x015)#define WDT_INT_ENABLE(0x012)#define WDT_RST_ENABLE(0x010)#define WDT_CLK_SEL(0X3 3)/* 1/128 */#define WDT_PRE_SCALER(PCLK/1000000-1) year; rBCDMON = p_date-mon; rBCDDAY = p_date-day; rBCDDATE = p_date-week_day; rBCDHOUR = p_date-hour; rBCDMIN = p_date-min; rBCDSEC = p_date-sec; rRTCCON

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

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

7、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) = 0x00; *(unsigned char*)0x10000004 =

8、 seg7tableled_index%10; led_index+; /* 喂狗 */ rWTT = 8448 * 2; (2) 注意设置运行设备,如图1.1所示。图1.1 设置Devices(3) 编译watchdog,下载程序并运行,通过超级终端看是否复位,实验结果如图1.2所示。 图1.2 实验结果(4) 删除“喂狗”代码,查看运行结果,如图1.3所示。图1.3 运行结果5 实验总结通过本次实验我进一步了解了看门狗的工作原理和功能,以及看门狗寄存器定时周期的计算方法,同时也对嵌入式系统设计有了更加广泛且深刻的认识。基于arm的程序设计,我锻炼了自己的思考能力和实践能力,通过题目的选择和设计过程中,加强了我思考问题的完整性和实际生活联系的可行性,同时也培养了我们综合应用arm的能力,对arm的各种功能有了进一步的认识,还锻炼了我们个人查阅技术资料的能力 ,动手能力,发现问题,解决问题的能力,我受益匪浅。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号