《嵌入式实验:-看门狗实验(共4页).doc》由会员分享,可在线阅读,更多相关《嵌入式实验:-看门狗实验(共4页).doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上看门狗实验一、 实验内容1. 编程实现看门狗功能,观察看门狗作用;2. 编程实现看门狗喂狗。二、 实验代码void Main(void)int old_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,); Uart_Select(0); /* 打
2、印提示信息 */PRINTF(n-看门狗测试程序-n);PRINTF(n请将UART0与PC串口进行连接,然后启动超级终端程序(, 8, N, 1)n);PRINTF(n看门狗测试开始n);/* 采用BCD编码,如2004年需要设置的值为0x2004 */ m_date.year= 0x2000+0x04 ; m_date.mon= 0x03 ; m_date.day= 0x02 ; m_date.week_day= 0x02 ; m_date.hour= 0x15 ; m_date.min= 0x40 ; m_date.sec= 0x00 ; /* 修改当前日期和时间 */ rtc_set_
3、date(&m_date); m_date.sec= 0x05 ; /* 设置告警的时间及方式,0x41表示使能RTC告警,以及使能秒时钟告警 */ rtc_alarm_set(&m_date, 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_i
4、ndex; PRINTF(/* 时钟数据为BCD码格式,以16进制显示 */bbbbbbbb%02x:%02x:%02x, m_date.hour, m_date.min, m_date.sec); ;/*/ Function name: rtc_tick_isr/ Description : TICK中断处理程序,程序中设置每秒钟引发一次中断/ 为避免看门狗复位在此处喂狗/ Return type: int/ Argument : void*/void rtc_tick_isr(void)Irq_Clear(IRQ_TICK); /* 清除TICK中断 */*(U8*) 0x) = 0x00
5、; *(unsigned char*)0x = seg7tableled_index%10; led_index+; /* 喂狗 */ rWTCNT = 8448 * 2;三、 实验结果及分析1.运行编译完后,完成”connect”,”download”,”go”后,超级终端上出现如图1-1所示的界面。图1-12.改变时间,即喂狗的时间,得到如图1-2所示的界面。四、 实验体会本实验是关于看门狗的实验编程的,看门狗的作用是微控制器受到干扰后进入错误状态后,使系统在一定时间间隔内复位。通过实验,我了解到,看门狗是保证系统长期、可靠和稳定运行的有效措施。而实验中涉及到了定时器控制寄存器WTCON、定时器数据寄存器WTDAT、定时器/计数器寄存器WTCNT以及前面所学的实时时钟的知识。看门狗定时器数据寄存器(WTDAT)是用于指定超时时间,而看门狗计数寄存器(WTCNT)则是包含看门狗定时器工作的时候计数器的当前计数值。由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门狗的功能,只需要我们对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON)、看门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。本次实验学到了很多,实践永远是理论的试金石,我们总能在实践中学会各种各样的知识。专心-专注-专业