嵌入式实验:-看门狗实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1看门狗实验一、实验内容1.编程实现看门狗功能,观察看门狗作用;2.编程实现看门狗喂狗。二、实验代码voidMain(void){intold_index;st_datem_date;/*配置系统时钟*/ChangeClockDivider(1,1);//1:2:4ChangeMPllValue(0xa1,0x3,0x1);//FCLK=202.8MHz/*中断初始化*/Isr_Init();/*初始化端口*/Port_Init();/*初始化串口*/Uart_Init(0,115200);Uart_Select(0);/*打印提示信息*/PRINTF(\n---看门狗测试程序---\n);PRINTF(\n请将UART0与PC串口进行连接,然后启动超级终端程序(115200,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;/*修改当前日期和时间*/2rtc_set_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秒后复位\n\n);while(1){if(old_index!=led_index)/*每隔一秒更新一次数据*/{rtc_get_date(&m_date);old_index=led_index;PRINTF(/*时钟数据为BCD码格式,以16进制显示*/\b\b\b\b\b\b\b\b%02x:%02x:%02x,m_date.hour,m_date.min,m_date.sec);}};}/*****************************************************************************//Functionname:rtc_tick_isr//Description:TICK中断处理程序,程序中设置每秒钟引发一次中断//为避免看门狗复位在此处喂狗//Returntype:int//Argument:void*****************************************************************************/voidrtc_tick_isr(void){Irq_Clear(IRQ_TICK);/*清除TICK中断*/*((U8*)0x10000006)=0x00;*(unsignedchar*)0x10000004=seg7table[led_index%10];led_index++;3/*喂狗*/rWTCNT=8448*2;}三、实验结果及分析1.运行编译完后,完成”connect”,”download”,”go”后,超级终端上出现如图1-1所示的界面。图1-12.改变时间,即喂狗的时间,得到如图1-2所示的界面。4四、实验体会本实验是关于看门狗的实验编程的,看门狗的作用是微控制器受到干扰后进入错误状态后,使系统在一定时间间隔内复位。通过实验,我了解到,看门狗是保证系统长期、可靠和稳定运行的有效措施。而实验中涉及到了定时器控制寄存器WTCON、定时器数据寄存器WTDAT、定时器/计数器寄存器WTCNT以及前面所学的实时时钟的知识。看门狗定时器数据寄存器(WTDAT)是用于指定超时时间,而看门狗计数寄存器(WTCNT)则是包含看门狗定时器工作的时候计数器的当前计数值。由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门狗的功能,只需要我们对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON)、看门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。本次实验学到了很多,实践永远是理论的试金石,我们总能在实践中学会各种各样的知识。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功