ZigBee-CC2530单片机 - 实现软件自动复位

该程序详细展示了如何使用CC2530单片机通过软件设置实现系统自动复位。主要功能包括LED初始化、系统时钟初始化、软件延时、看门狗初始化及喂狗操作。在main函数中,通过喂狗操作避免系统不断复位,使得LED1每隔1秒闪烁一次。
摘要由CSDN通过智能技术生成

ZigBee-CC2530单片机 - 实现软件自动复位

程序源码

#include "ioCC2530.h"
#define LED1 P1_0     // P1_0定义为P1_0
#define LED2 P1_1     // P1_0定义为P1_1

/**************************************************************
函数名称:led_Init
功能:LED初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void led_Init(void)
{
  P1SEL  = 0x00;              //P1为普通 I/O 口
  P1DIR |= 0x01;               //P1.0输出  
  LED1 = 0;                   // 灭LED1  
}


/**************************************************************
函数名称:systemClock_Init
功能:系统时钟初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void systemClock_Init(void)
{
   unsigned char clkconcmd,clkconsta;
   CLKCONCMD &= 0x80;
   /* 等待所选择的系统时钟源(主时钟源)稳定 */
  clkconcmd = CLKCONCMD;    // 读取时钟控制寄存器CLKCONCMD
  do
  {
    clkconsta = CLKCONSTA;    // 读取时钟状态寄存器CLKCONSTA
  } while(clkconsta != clkconcmd);  // 直到选择的系统时钟源(主时钟源)已经稳定 
}

/**************************************************************
函数名称:delay
功能:软件延时
入口参数:time——延时时间长短
出口参数:无
返回值:无
**************************************************************/
void delay(unsigned int time)
{ unsigned int i;
  unsigned char j;
  for(i = 0; i < time; i++)
  {  for(j = 0; j < 240; j++)
      { asm("NOP");  // asm是内嵌汇编,nop是空操作,执行一个指令周期
        asm("NOP");
        asm("NOP");
       }  
   }  
}

/**************************************************************
函数名称:watchdog_Init
功能:看门狗初始化
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void watchdog_Init(void)   
{
   WDCTL = 0x00;              //看门狗模式,时间间隔一秒
   WDCTL |= 0x08;             //启动看门狗
}

/**************************************************************
函数名称:FeedWD
功能:喂狗
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void FeedWD(void)
{
  WDCTL |= 0x0A;
  WDCTL |= 0x05;
}

/**************************************************************
函数名称:main
功能:程序主函数
入口参数:无
出口参数:无
返回值:无
**************************************************************/
void main(void)
{
  systemClock_Init();  
  led_Init();
  watchdog_Init();
  delay(100);     //延时小于1秒。若大于1秒,会出现什么情况?
  LED1 =1;          //亮LED1  
  while(1)
  {
   // FeedWD();      //系统不断复位,小灯每隔1s闪烁一次)
   }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WW......

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

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

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

打赏作者

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

抵扣说明:

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

余额充值