第一步:安装IAR8.10方法:打开安装文件,选择IAR安装,官方推荐默认安装在系统盘:相关软件安装提示要求输入License,由IAR8.10注册机生成,选项正确后生成License,复制到License#处:输入注册码后按提示一步步进行安装,直至完成程序安装。程序安装完成后默认路径为:安装完成软件界面如下:第二步:CCDEBUGGER驱动安装方法我们将网蜂的CCDEBUGGER插进电脑,提示找到新硬件,选择列表安装。驱动的路径如下图,前提是已经安装IAR8.10。安装完成后,重新拔插仿真器,在设备管理器里找到ChipconSRF04EB,说明驱动安装完成,如下图所示。工程文件的快速建立第一步:打开IAR软件,新建一个Project-CreateNewProject,选择默认选项可以了,点击OK。保存在自己希望的路径。第二步:新建文件,输入#includeioCC2530.h,我们基础实验需要用到的也只有这个头文件。然后保存为.c格式到工程文件路径下。第三步:输入程序然后保存。在左边工程里单击右键---add---刚保存的C文件,添加文件到工程。第四步:在IAR里配置一下几个选项。打开(右点击工程名字)Project---Options,GeneralOptions配置如图GeneralOptions参数,单击圆圈所示按钮,先向上返回上一级目录,然后打开TexasInstruments文件夹,选择CC2530F256芯片。选择Linker—Config—Linkercommandfile选项。单击Linker–Config配置所示按钮,导出配置文件,先向上返回上一级目录,然后打开TexasInstruments文件夹,选择lnk51ew_cc2530F256.xcl。第五步:然后在Debugger选项的Driver里选择TexasInstruments(使用编程器仿真),下面选择io8051.ddf文件,如图所示。至此,基本配置已经完成。第六步:Project-Make编译后显示0错误和0警告。将网蜂CCDEBUGGER和开发板连接好,然后点击:Project-DownloadandDebug(下载与仿真)。快捷键所示:程序在下载中:下载完成,进入仿真调试界面,常用按钮如所示。点击GO(全速运行),程序执行。使CCDEBUGGER可以直接在IAR中下载程序并调试。结束后程序仍然保留在芯片flash内,相当于烧写工具。实验一:点亮LED1GEC电池板的LED部分原理图:CC2530的IO口配置我们需要配置三个寄存器P1SEL、P1DIR、P1INP。IO口功能如下表所示:*P1SEL(0:普通IO口1:第二功能)*P1DIR(0:输入1:输出)*P1INP(0:上拉/下拉1:三态)按照表格寄存器内容,我们对LED1,也就是P1_0口进行配置,当P1_0输出低电平时LED1被点亮。所以配置如下:P1SEL&=~0x01;//作为普通IO口P1DIR|=0x01;//P1_0定义为输出P1INP&=~0X01;//打开上拉由于CC2530寄存器初始化时默认是:P1SEL=0x00;P1DIR=0x00;P1INP=0X00;所以IO口初始化我们可以简化初始化指令:P1DIR|=0x01;//P1_0定义为输出/**************************************程序描述:点亮LED1**************************************/#includeioCC2530.h#defineLED1P1_0//定义P10口为LED1控制端voidIO_Init(void){P1DIR|=0x01;//P1_0定义为输出}voidmain(void){IO_Init();//调用初始化程序LED1=1;//点亮LED1while(1);}实验二:按键实验要求:依次按下按键S3控制LED1的亮和灭GEC电池底板的KEY和LED原理图:LED1初始化:P1SEL&=~0x01;//作为普通IO口P1DIR|=0x01;//P1_0定义为输出P1INP&=~0X01;//打开上拉按键S3初始化:P1SEL&=~0X04;//设置P1.2为普通IO口P1DIR&=~0X04;//按键在P1.2口,设置为输入模式P1INP&=~0x04;//打开P1.2上拉电阻,不影响由于CC2530寄存器初始化时默认是:P1SEL=0x00;P1DIR=0x00;P1INP=0X00;所以IO口初始化我们可以简化初始化指令:P1DIR|=0x01;//P1_0定义为输出P1DIR&=~0X04;//按键在P1.2口,设置为输入模式/**************************************程序描述:依次按下按键S3控制LED1的亮和灭**************************************/#includeioCC2530.h#defineuintunsignedint#defineucharunsignedchar//定义控制LED灯的端口#defineLED1P1_0//LED1为P1.0口控制#defineKEY3P1_2//KEY1为P1.2口控制//函数声明voidDelayms(uint);//延时函数voidInitLed(void);//初始化LED1voidKeyInit();//按键初始化ucharKeyScan();//按键扫描程序/****************************延时函数*****************************/voidDelayms(uintxms)//i=xms即延时i毫秒{uintI,j;for(i=xms;i0;i--)for(j=587;j0;j--);}/****************************LED初始化函数*****************************/voidInitLed(void){P1DIR|=0x01;//P1_0定义为输出LED1=1;//LED1灯熄灭}/****************************按键初始化函数*****************************/voidInitKey(){P1SEL&=~0X04;//设置P1.2为普通IO口P1DIR&=~0X04;//按键在P1.2口,设置为输入模式P1INP&=~0x04;//打开P1.2上拉电阻,不影响}/****************************按键检测函数*****************************/ucharKeyScan(void){if(KEY3==0){Delayms(10);if(KEY3==0){while(!KEY3);//松手检测return1;//有按键按下}}return0;//无按键按下}/***************************主函数***************************/voidmain(void){InitLed();//调用初始化函数InitKey();while(1){if(KeyScan())//按键改变LED状态LED1=~LED1;}}实验三:外部中断要求:依次按下按键S3控制LED1的亮和灭,通过中断方式。GEC的KEY和LED部分原理图,如下图所示:CC2530的外部中断我们需要配置三个寄存器P0IEN、PICTL、P0IFG、IEN1。各寄存器功能如下表所示:按照表格寄存器内容,我们对LED1和按键S1,也就是P1.0和P1.2口进行配置,当P1.2输出低电平时LED1被点亮,S3按下时P1.2产生外部中断从而控制LED1的亮灭。所以配置如下:LED1简化初始化:P1DIR|=0x01;//P1_0定义为输出外部中断初始化:P0IEN|=0X10;//P04设置为中断方式PICTL|=0X01;//下降沿触发IEN1|=0X20;//允许P0口中断;P0IFG=0x00;//初始化中断标志位/******************************************程序描述:按键S3外部中断方式改变LED1状态*******************************************/#includeioCC2530.h#defineuintunsignedint#defineucharunsignedchar//定义控制LED灯的端口#defineLED1P1_0//定义LED1为P1.0口控制#defineKEY3P1_2//中断口//函数声明voidDelayms(uint);//延时函数voidInitLed(void);//初始化P1口voidKeyInit();//按键初始化ucharKeyValue=0;/****************************//延时函数*****************************/voidDelayms(uintxms)//i=xms即延时i毫秒{uinti,j;for(i=xms;i0;i--)for(j=587;j0;j--);}/****************************LED初始化程序*****************************/voidInitLed(void){P1DIR|=0x01;//P1_0、P1_1定义为输出LED1=1;//LED1灯熄灭}/****************************KEY初始化程序--外部中断方式*****************************/voidInitKey(){P1IEN|=0X04;//P1.2设置为中断方式PICTL|=0X02;//下降沿触发IEN2|=0X10;//允许P1口中断;P1IFG&=~0x04;//初始化中断标志位EA=1;}/****************************中断处理函数*****************************/#pragmavector=P1INT_VECTOR//格式:#pragmavector=中断向//量,紧接着是中断处理程序__interruptvoidP1_ISR(void){Delayms(10);//去除抖动if(KEY3==0){LED1=~LED1;//改变LED1状态P1IFG&=~0x04;//清中断标志P1IF=0;//清中断标志}while(KEY3);}/***************************主函数***************************/voidmain(void){InitLed();//调用初始化函数InitKey();while(1){}}