欢迎来到天天文库
浏览记录
ID:56060541
大小:165.50 KB
页数:7页
时间:2020-03-15
《基于ARM看门狗程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程结业实验报告课程名称:嵌入式系统设计报告题目:基于ARM的看门狗程序设计专业班级:通信1601班学号:学生姓名:指导教师:2017年6月20日看门狗实验1实验目的(1)了解WATCHDOG的作用;(2)掌握WATCHDOG定时器的使用方法。2实验内容(1)编程添加看门狗功能,观察看门狗作用;(2)编程实现看门狗喂狗。3实验基础知识(1)看门狗功能:嵌入式系统运行时受外部干扰或系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。为防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路(W
2、ATCHDOG)。看门狗的作用是当系统跑飞而进入死循环时,恢复系统的运行。(2)看门狗工作原理:设本系统程序完整运转一周的时间是Tp,看门狗定是周期是Ti,Ti>Tp,在程序运行一周后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因是系统不能在Tp时刻修改定时器的数值,定时器将在Ti时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用在一个完整的嵌入式系统中或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,知识它在期满后将自动
3、引起系统复位。(3)看门狗定时器计数值:输入到计数器的时钟周期t_watchdog=1/(PCLK/Prescalervalue+1)/Division_factor)看门狗的定时周期T=WTCNT*t_watchdog(4)看门狗定时器寄存器控制寄存器(WTCON)数据寄存器(WTDAT)计数器寄存器(WTCNT)4实验步骤5(1)新建一个工程watchdog,添加相应的文件,并修改watchdog的工程设置;创建watchdog.c并加入到工程watchdog中,部分参考代码如下:/*functio
4、ns*/voidrtc_tick_isr(void)__attribute__((interrupt("IRQ")));;voidrtc_int_isr(void)__attribute__((interrupt("IRQ")));;//设置寄存器参数#defineWDT_ENABLE(0x01<<5)#defineWDT_INT_ENABLE(0x01<<2)#defineWDT_RST_ENABLE(0x01<<0)#defineWDT_CLK_SEL(0X3<<3)/*1/128*/#define
5、WDT_PRE_SCALER((PCLK/1000000-1)<<8)/*49voidwatchdog_init(){rWTCNT=8448*2;/*设置看门狗初始值*/rWTCON=WDT_ENABLE
6、WDT_RST_ENABLE
7、WDT_CLK_SEL
8、WDT_PRE_SCALER;/*打开看门狗*/}voidrtc_set_date(st_date*p_date){rRTCCON=0x01;rBCDYEAR=p_date->year;rBCDMON=p_date->mon;rBCDDAY=p_d
9、ate->day;rBCDDATE=p_date->week_day;rBCDHOUR=p_date->hour;rBCDMIN=p_date->min;rBCDSEC=p_date->sec;rRTCCON=0x00;}voidrtc_get_date(st_date*p_date)5{…}voidrtc_tick_init(chartick){Irq_Request(IRQ_TICK,rtc_tick_isr);rRTCCON=0x0;//Noreset[3],MergeBCDcounters[2]
10、,BCDclockselectXTAL[1],RTCControldisable[0]rTICNT=(tick&0x7f)
11、0x80;/*TICK中断使能,周期为(1+tick)/128秒*/Irq_Enable(IRQ_TICK);}voidMain(void){intold_index;st_datem_date;/*配置系统时钟*/ChangeClockDivider(1,1);//1:2:4ChangeMPllValue(0xa1,0x3,0x1);//FCLK=202.8MHz/*中断初始化*
12、/Isr_Init();/*初始化端口*/Port_Init();/*初始化串口*/Uart_Init(0,115200);Uart_Select(0);/*设置告警的时间及方式,0x41表示使能RTC告警,以及使能秒时钟告警*/rtc_alarm_set(&m_date,0x41);rtc_tick_init(127)/*打开看门狗复位功能*/5watchdog_init();old_index=led_index;PRINTF("请在2
此文档下载收益归作者所有