lesson4(ZIgbee补充3)CC2530看门狗

前言:

看门狗,眼熟的名字。无论在普通的 51,还是高级的 ARM。都离不开他的身影。一个完整的系统总需要一个看门狗,在你程序跑飞的时候帮你一把,使系统重新进入工作状态。它无疑是世界上最忠诚的狗。不过可千万别忘了喂它。

关于看门狗的详细原理介绍见我的另一篇文章

实验功能: 演示打开看门狗后没有喂狗系统不断复位的情况。

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

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

Init_Watchdog:

WDCTL = 0x00;         //这是必须的,打开 IDLE 才能设置看门狗

WDCTL |= 0x08;         //时间间隔一秒,看门狗模式

FeedDog:

WDCTL = 0xa0;         //按寄存器描述来喂狗

WDCTL = 0x50;

 完整程序:

/*描述:打开看门狗后,得记得喂狗,不然
        系统就会不停地复位了。
**************************************/
#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();//防止程序跑飞
  }
}

实验现象:

如果不执行喂狗,则系统将不断复位,会导致绿灯常灭。如果执行喂狗,则绿灯闪烁。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹烟淮雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值