⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 CC2430相关的一些实验程序,开发环境为IAR,如果有兴趣的人是不错的资料.
💻 C
字号:
//cd wxl
#include <ioCC2430.h>

#define uint unsigned int
#define uchar unsigned char
#define DELAY 10000

//小灯控端口定义
#define RLED P1_0
#define YLED P1_1

/**************************************************************	
* mode   0 	 1	 2	3
*  	PM0	PM1	PM2	PM3			
****************************************************************/
#define SET_POWER_MODE(mode)                   \
   do {                                        \
      if(mode == 0)        { SLEEP &= ~0x03; } \
      else if (mode == 3)  { SLEEP |= 0x03;  } \
      else { SLEEP &= ~0x03; SLEEP |= mode;  } \
      PCON |= 0x01;                            \
      asm("NOP");                              \
   }while (0)

#define CRYSTAL 0x00
#define RC      0x01

#define XOSC_STABLE (SLEEP & 0x40)

#define HIGH_FREQUENCY_RC_OSC_STABLE    (SLEEP & 0x20)

#define SET_MAIN_CLOCK_SOURCE(source) \
   do {                               \
      if(source) {                    \
        CLKCON |= 0x40;               \
        while(!HIGH_FREQUENCY_RC_OSC_STABLE); \
        if(TICKSPD == 0){             \
          CLKCON |= 0x08;             \
        }                             \
        SLEEP |= 0x04;                \
      }                               \
      else {                          \
        SLEEP &= ~0x04;               \
        while(!XOSC_STABLE);          \
        asm("NOP");                   \
        CLKCON &= ~0x47;              \
        SLEEP |= 0x04;                \
      }                               \
   }while (0)

void Delay(void);
void Initial(void);
void PowerMode(uchar sel);
void Init_clocks(uchar para1,uchar para2,uchar para3,uchar para4);

/****************************************************************
*函数功能:延时						
*入口参数:无							
*返回值  :无							
*说  明	:可在宏定义中改变延时长度			
****************************************************************/
void Delay(void)
{
	uint tt;
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
	for(tt = 0;tt<DELAY;tt++);
}

#define TIMER_TICK_DIVIDE(divide)       \
  do{                                   \
    CLKCON &= ~0X38;                    \
    (divide==1)?(CLKCON |= 0X00):       \
    (divide==2)?(CLKCON |= 0X08):       \
    (divide==4)?(CLKCON |= 0X10):       \
    (divide==8)?(CLKCON |= 0x18):       \
    (divide==16)?(CLKCON |= 0x20):      \
    (divide==32)?(CLKCON |= 0x28):      \
    (divide==64)?(CLKCON |= 0x30):      \
    (CLKCON |= 0x38);                   \
    }while(0);

/****************************************************************
*	函数功能:初始化I/O,控制LED							
*	入口参数:无						
*	返回值	:无						
*	说  明	:初始化完成后关灯				
****************************************************************/
void Initial(void)
{
	//P1 out
	P1DIR = 0x03;     //定义P1_0,P1_1为输出
	RLED = 1;
	YLED = 1;         //close led
}

/****************************************************************
*	函数功能:主函数					
*	入口参数:					
*	返回值	:无						
*	说  明	:10次绿色LED闪烁后进入睡眠状态			
****************************************************************/
void main()
{
	uchar count = 0;
	Initial();
	RLED = 0;       //开红色LED,系统工作指示
	Delay();        //延时
	Delay();
	Delay();
	Delay();

	while(1)
	{
		YLED = !YLED;
		count++;
		if(count == 20)SET_POWER_MODE(3);
		//10次闪烁后进入睡眠状态

		//Delay();
		Delay();
                //延时函数无形参,只能通过改变系统时钟频率
                //来改变小灯的闪烁频率
	};
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -