zoukankan      html  css  js  c++  java
  • ZigBee开发(9)--基础实验看门狗

    看门狗,眼熟的名字。无论在普通的 51,还是高级的 ARM。都离不开他的身影。

    一个完整的系统总需要一个看门狗,在你程序跑飞的时候帮你一把,使系统重新进入工作状态。它无疑是世界上最忠诚的狗。不过可千万别忘了喂它。

    CC2530 的看门狗很简单,只需要配置 1 个寄存器 WDCTL。功能如下表所示: (详细参考 CC2530 datasheet.pdf

    按照表格寄存器内容,我们对 WDCTL 具体配置可如下: 

    Init_Watchdog:
    WDCTL = 0x00; //这是必须的,打开 IDLE 才能设置看门狗
    WDCTL |= 0x08; //时间间隔一秒,看门狗模式
    
    
    
    FeedDog:
    WDCTL = 0xa0; //按寄存器描述来喂狗
    WDCTL = 0x50;

    完整代码:

    /**************************************
    程序描述:打开看门狗后,得记得喂狗,不然
    系统就会不停地复位了。把喂狗注
    释掉观察 LED1 现象
    **************************************/
    #include <ioCC2530.h>
    #define uint unsigned int
    #define uchar unsigned char
    //定义控制 LED 灯的端口
    #define LED1 P1_0
    #define LED2 P1_1 //定义 LED2 为 P11 口控制
    //函数声明
    void Delayms(uint xms); //延时函数
    void InitLed(void); //初始化 P1 口
    /****************************
    //延时函数
    *****************************/
    void Delayms(uint xms) //i=xms 即延时 i 毫秒
    {
      uint i,j;
      for(i=xms;i>0;i--)
        for(j=587;j>0;j--);
    }
    /****************************
    //初始化程序
    *****************************/
    void InitLed(void)
    {
      P1DIR |= 0x03; //P1_0、 P1_1 定义为输出
      P1INP |= 0X03; //打开下拉
      LED1 = 0; //LED1 灯熄灭
      LED2 = 0; //LED2 灯熄灭
    }
    void Init_Watchdog(void)
    {
      WDCTL = 0x00; //这是必须的,打开 IDLE 才能设置看门狗
      WDCTL |= 0x08; //时间间隔一秒,看门狗模式
    }
    void FeetDog(void)
    {
      WDCTL = 0xa0;
      WDCTL = 0x50;
    }
    /***************************
    //主函数
    ***************************/
    void main(void)
    {
      InitLed(); //调用初始化函数
      Init_Watchdog();
      LED1=1;
      while(1)
      {
        LED2=~LED2; //仅指示作用。
        Delayms(300);
        LED1=0;
        //通过注释测试,观察 LED1,系统在不停复位。
        FeetDog(); //喂狗,防止程序跑飞
      }
    }
  • 相关阅读:
    PAT (Advanced Level) 1080. Graduate Admission (30)
    PAT (Advanced Level) 1079. Total Sales of Supply Chain (25)
    PAT (Advanced Level) 1078. Hashing (25)
    PAT (Advanced Level) 1077. Kuchiguse (20)
    PAT (Advanced Level) 1076. Forwards on Weibo (30)
    PAT (Advanced Level) 1075. PAT Judge (25)
    PAT (Advanced Level) 1074. Reversing Linked List (25)
    PAT (Advanced Level) 1073. Scientific Notation (20)
    PAT (Advanced Level) 1072. Gas Station (30)
    PAT (Advanced Level) 1071. Speech Patterns (25)
  • 原文地址:https://www.cnblogs.com/tianxxl/p/9873455.html
Copyright © 2011-2022 走看看