cc2530 看门狗小实验


看门狗程序的编程思路

1.设置好系统时钟源

2.初始化看门狗,选择看门狗模式,1秒的间隔

3.循环使用喂狗程序

/***********************************************
* @project : 看门狗实验
* @时间    :2014年1月20日
* @姓名    :林少游
***********************************************/

#include <ioCC2530.h>

#define uint unsigned int 
#define uchar unsigned char

#define YLED P1_0
#define BLED P1_1

/***********************************************
* @fn     :SET_MAIN_CLOCK
* @brief  : 设置系统主时钟
* @param  :source - 0:选择32MHz的XOSC  
                     1:选择16MHz的RCOSC
* @return :none
***********************************************/
void SET_MAIN_CLOCK(uint source)
{
  if(source)
  {
    CLKCONCMD |= 0X40;          //RCOSC
    while(!(CLKCONSTA & 0X40)); //等待晶振稳定
  }
  else 
  {
    CLKCONCMD &= ~0X47;         //XOSC
    while(CLKCONSTA & 0X40);    //等待晶振稳定
  }
}

/***********************************************
* @fn     :Init_IO
* @brief  : 初始化LED灯
* @param  :none
* @return :none
***********************************************/
void Init_IO()
{
  P1DIR |= 0X03;              //P1.0,P1.1 设置为输出
  YLED = 0;
  BLED = 0;                   //灯全灭
}

/***********************************************
* @fn     :Init_WatchDog
* @brief  : 初始化看门狗
* @param  :none
* @return :none
***********************************************/
void Init_WatchDog()
{
  WDCTL = 0X00;
  WDCTL |= 0X08;              //选择看门狗模式,1秒的间隔
}

/***********************************************
* @fn     :Delay
* @brief  : 延时
* @param  :n - 延时长度
* @return :none
***********************************************/
void Delay(uint n)
{
  uint i;
  for(i=0;i<n;i++);
  for(i=0;i<n;i++);
  for(i=0;i<n;i++);
  for(i=0;i<n;i++);
  for(i=0;i<n;i++);
}

/***********************************************
* @fn     :FeedDog
* @brief  : 喂狗
* @param  :none
* @return :none
***********************************************/
void FeedDog()
{
  WDCTL = 0XA0;
  WDCTL = 0X50;               //看门狗模式下,定时器计数清零
}



/***********************************************
* @brief : 主函数
***********************************************/
main()
{
  SET_MAIN_CLOCK(0);          //系统时钟设置为32MHz
  Init_IO();                  //初始化LED灯
  Init_WatchDog();            //初始化看门狗
  
  Delay(10000);               //延时
  YLED = 1;
  BLED = 1;                   //灯全亮
  
  
  while(1)
  {
    FeedDog();                //喂狗,若注释该语句,则系统不断重启,LED灯就不断闪烁
  }
  
  
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值