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

📄 main.c

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

#define RLED P1_0
#define YLED P1_1

#define uchar unsigned char

/*****************************************
//定义全局变量
*****************************************/
uchar counter = 0;

/*****************************************
//T3配置定义
*****************************************/
// Where _timer_ must be either 3 or 4
// Macro for initialising timer 3 or 4
//将T3/4配置寄存复位
#define TIMER34_INIT(timer)   \
   do {                       \
      T##timer##CTL   = 0x06; \
      T##timer##CCTL0 = 0x00; \
      T##timer##CC0   = 0x00; \
      T##timer##CCTL1 = 0x00; \
      T##timer##CC1   = 0x00; \
   } while (0)

//Macro for enabling overflow interrupt
//打开T3/4溢出中断
#define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \
   (T##timer##CTL =  (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08)




//启动T3
#define TIMER3_START(val)                         \
    (T3CTL = (val) ? T3CTL | 0X10 : T3CTL&~0X10)

//时钟分步选择
#define TIMER3_SET_CLOCK_DIVIDE(val)              \
  do{                                             \
    T3CTL &= ~0XE0;                               \
      (val==2) ? (T3CTL|=0X20):                   \
      (val==4) ? (T3CTL|=0x40):                   \
      (val==8) ? (T3CTL|=0X60):                   \
      (val==16)? (T3CTL|=0x80):                   \
      (val==32)? (T3CTL|=0xa0):                   \
      (val==64) ? (T3CTL|=0xc0):                  \
      (val==128) ? (T3CTL|=0XE0):                 \
      (T3CTL|=0X00);             /* 1 */          \
  }while(0)

//Macro for setting the mode of timer3
//设置T3的工作方式
#define TIMER3_SET_MODE(val)                      \
  do{                                             \
    T3CTL &= ~0X03;                               \
    (val==1)?(T3CTL|=0X01):  /*DOWN            */ \
    (val==2)?(T3CTL|=0X02):  /*Modulo          */ \
    (val==3)?(T3CTL|=0X03):  /*UP / DOWN       */ \
    (T3CTL|=0X00);           /*free runing */     \
  }while(0)


/*****************************************
//T3及LED初始化
*****************************************/
void Init_T3_AND_LED(void)
{
    P1DIR = 0X03;
    RLED = 1;
    YLED = 1;

    TIMER34_INIT(3);                  //初始化T3
    TIMER34_ENABLE_OVERFLOW_INT(3,1);  //开T3中断
    EA = 1;
    T3IE = 1;

    //T3CTL |= 0XA0;                    //时钟32分频101
    TIMER3_SET_CLOCK_DIVIDE(16);
    TIMER3_SET_MODE(0);                 //自动重装00->0xff
    T3CC0 = 0Xf0;
    TIMER3_START(1);                    //启动
};

/*****************************************
//主函数
*****************************************/
void main(void)
{
  Init_T3_AND_LED();
  YLED = 0;
  while(1);                     //等待中断
}

#pragma vector = T3_VECTOR
 __interrupt void T3_ISR(void)
 {
 	IRCON = 0x00;			//可不清中断标志,硬件自动完成
        //YLED = 0;                       //for test
         if(counter<200)counter++;	//10次中断LED闪烁一轮
        else
        {
          counter = 0;                  //计数清零
         RLED = !RLED;                   //改变小灯的状态
        }
 }

⌨️ 快捷键说明

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