嵌入式实验: 看门狗实验

一、实验内容
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,115200);
    Uart_Select(0);
    /* 打印提示信息 */
    PRINTF("\n---看门狗测试程序---\n");
    PRINTF("\n请将UART0与PC串口进行连接,然后启动超级终端程序(115200, 8, N, 1)\n");
exosip    PRINTF("\n看门狗测试开始\n");
    /* 采用BCD编码,如2004年需要设置的值为0x2004 */
    ar        =    0x2000+0x04 ;
            =    0x03 ;
    m_date.day        =    0x02 ;
    m_date.week_day    =    0x02 ;
    m_date.hour        =    0x15 ;
    m_date.min        =    0x40 ;
    m_date.sec        =    0x00 ;
   
    /* 修改当前日期和时间 */
    rtc_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);
          }uicc
加工助剂acr    };
}
/*****************************************************************************
// Function name    : rtc_tick_isr
// Description        : TICK中断处理程序,程序中设置每秒钟引发一次中断
//                    为避免看门狗复位在此处喂狗
// Return type        : int
// Argument        : void
*****************************************************************************/
void rtc_tick_isr(void)
调料盒{
    Irq_Clear(IRQ_TICK);        /* 清除TICK中断 */
    *((U8*) 0x10000006) = 0x00;
      *(unsigned char*)0x10000004 = seg7table[led_index%10]; 
     
      led_index++;
     
      /* 喂狗 */
      rWTCNT = 8448 * 2;
}
三、实验结果及分析
1.运行编译完后,完成connect,download,go后,超级终端上出现如图1-1所示的界面。
图1-1
2.改变时间,即喂狗的时间,得到如图1-2所示的界面。
四、实验体会
本实验是关于看门狗的实验编程的,看门狗的作用是微控制器受到干扰后进入错误状态后,使系统在一定时间间隔内复位。通过实验,我了解到,看门狗是保证系统长期、可靠和稳定运行的有效措施。而实验中涉及到了定时器控制寄存器WTCON、定时器数据寄存器WTDAT、定时器/计数器寄存器WTCNT以及前面所学的实时时钟的知识。看门狗定时器
数据寄存器(WTDAT)是用于指定超时时间,而看门狗计数寄存器(WTCNT)则是包含看门狗定时器工作的时候计数器的当前计数值。由于看门狗是对系统的复位或者中断的操作,所以不需要外围的硬件电路。要实现看门狗的功能,只需要我们对看门狗的寄存器组进行操作。即对看门狗的控制寄存器(WTCON)、看门狗数据寄存器(WTDAT)、看门狗计数寄存器(WTCNT)的操作。本次实验学到了很多,实践永远是理论的试金石,我们总能在实践中学会各种各样的知识。

本文发布于:2024-09-21 17:28:48,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/126719.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:看门狗   实验   时间
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议