copyright:柯宗武无线传感器网络实验教程(一)基本输入输出实验主讲教师:柯宗武2013年2月copyright:柯宗武《无线传感器网络》教学方式与实践无关的理论学生自学,并在笔记本上完成教师布置的读书笔记。重点讲解实践相关理论知识,理论与实践同步进行,案例化教学。考核方式:考试50%,课堂笔记、考勤及作业50%,无故缺课者直接重修,本课程没有补考!!!copyright:柯宗武《无线传感器网络实验》考核方式无线传感器网络实验考核方式:手写实验报告质量评估70%,同时交电子稿的,可适当加分,考勤占30%,无故缺课者直接重修,本课程没有补考!!!copyright:柯宗武本周课外阅读阅读教材第一章和第十章,并在笔记本上写读书报告copyright:柯宗武本章内容ZigBee硬件平台---CC2530介绍IAR使用教程CC2530输入输出端口介绍实验一:GPIO输入输出实验指导copyright:柯宗武实验环境安装IAR7.51安装USB转串口安装CP2102USB转串口驱动安装仿真器驱动驱动文件在IAR程序安装目录下,在C:\ProgramFiles\IARSystems\EmbeddedWorkbench5.3Evaluationversion\8051\drivers\TexasInstruments下copyright:柯宗武实验内容1.编写程序实现LED1和LED2交替点亮(跑马灯)。2.编写程序实现当按键按下时启动跑马灯,当按键释放时停止跑马灯。copyright:柯宗武实验指导CC2530内部结构CC2530引脚功能CC2530主板原理图介绍CC2530IO端口介绍使用IAR开发CC2530程序指导参考资料CC2530数据手册CC2530用户手册copyright:柯宗武CC2530的主要特点CC2530采用增强型8051MCU,32/64/128KB闪存,8KBSRAM并内置了ZigBee协议栈。集成了2.4GHzDSSS(直接序列扩频)射频收发器。CC2530主要特点包括:高性能、低功耗的8051MCU2.4GHzIEEE802.15.4的RF收发器极高的接收灵敏度和抗干扰能力32/64/128KB闪存copyright:柯宗武CC2530的主要特点8KBSRAM,具备在供电方式下的数据存储能力强大的DMA(存储器直接存取控制器)功能硬件支持CSMACA具有8路8~14位的ADC具有高级加密标准(AES)协处理器两个USART,支持多种串口通信协议一个IEEE802.15.4媒体介入控制器(MAC)的定时器一个通用16位定时器和两个8位定时器copyright:柯宗武CC2530内部结构:copyright:柯宗武CC2530引脚功能:接地衬垫必须连接到一个坚固的接地面未使用的引脚连接到GNDcopyright:柯宗武CC2530引脚功能:原理图copyright:柯宗武CC2530引脚功能:CC2530共有21个I/O端口。通过一组SFR寄存器可将它们配置成通用I/O或作为连接ADC、计时器或USART部件的外围设备I/O端口。P1_0,P1_1具有20mA驱动能力,可直接驱动LED。原理图copyright:柯宗武原理图外接32kHz晶振外接32MHz晶振copyright:柯宗武射频输入输出端口,外接天线。原理图copyright:柯宗武CC2530IO端口介绍CC2530总共有21个IO端口21个IO端口均可配置成通用端口(general-purposedigitalI/O)外设信号端口(peripheralI/Osignals)通过一组配置寄存器(configurationregisters)配置参考文献copyright:柯宗武CC2530IO端口介绍---通用端口CC2530有3个8位通用端口P0、P1、P2,P2只有五个有效位供使用。通过特殊功能寄存器(SFR)P0、P1、P2实现端口的访问。P1.0和P1.1驱动能力为20mA,可直接驱动LED,其它端口驱动能力为4mA。PxSEL是端口配置寄存器。可将端口配置成通用端口或外部设备端口。PxDIR寄存器可配置端口为输入端口或输出端口。对应位置1时,则端口被配置成输出端口。通过SFRPxIEN、PICTL和PxIFG可配置通用端口中断类型。copyright:柯宗武CC2530IO端口介绍---相关SFRP0:Port0P1:Port1P2:Port2PERCFG:Peripheral-controlregisterAPCFG:AnalogperipheralI/OconfigurationP0SEL:Port0function-selectregisterP1SEL:Port1function-selectregisterP2SEL:Port2function-selectregistercopyright:柯宗武CC2530IO端口介绍---相关SFRP0DIR:Port0directionregisterP1DIR:Port1directionregisterP2DIR:Port2directionregisterP0INP:Port0input-moderegisterP1INP:Port1input-moderegisterP2INP:Port2input-moderegisterP0IFG:Port0interrupt-statusflagregisterP1IFG:Port1interrupt-statusflagregisterP2IFG:Port2interrupt-statusflagregistercopyright:柯宗武CC2530IO端口介绍---相关SFRPICTL:InterruptedgeregisterP0IEN:Port0interrupt-maskregisterP1IEN:Port1interrupt-maskregisterP2IEN:Port2interrupt-maskregisterPMUX:PowerDownSignalMuxregisterOBSSEL0:Observationoutputcontrolregister0OBSSEL1:Observationoutputcontrolregister1OBSSEL2:Observationoutputcontrolregister2OBSSEL3:Observationoutputcontrolregister3OBSSEL4:Observationoutputcontrolregister4OBSSEL5:Observationoutputcontrolregister5copyright:柯宗武CC2530IO端口介绍---SFRP0、P1、P2copyright:柯宗武CC2530IO端口介绍---SFRcopyright:柯宗武CC2530IO端口介绍---SFRcopyright:柯宗武CC2530IO端口介绍---SFRcopyright:柯宗武CC2530IO端口介绍---SFRcopyright:柯宗武IARSystems简介IARSystems是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。copyright:柯宗武IAR开发CC2530应用程序---创建新工程copyright:柯宗武IAR开发CC2530应用程序---添加工程文件copyright:柯宗武IAR开发CC2530应用程序---编辑主程序copyright:柯宗武IAR开发CC2530应用程序---添加主程序到工程copyright:柯宗武IAR开发CC2530应用程序---配置工程选项GeneralOptions选择Project菜单下的Options...配置与CC2530相关的选项。选择设备进入TexasInstruments目录选择CC2530.i51copyright:柯宗武IAR开发CC2530应用程序---配置工程选项GeneralOptions选择Codemodel为Near和Datamodel为Large,Callingconvention为XDATAstackreentrantcopyright:柯宗武IAR开发CC2530应用程序---配置工程选项GeneralOptionsStack/Heap标签改变XDATA栈大小到0x1FF。copyright:柯宗武IAR开发CC2530应用程序---配置工程选项LinkerOptions选中Overridedefault可以在下面的文本框中更改输出文件名。copyright:柯宗武IAR开发CC2530应用程序---配置工程选项LinkerOptions选择正确的连接命令文件CodeModelFileNearlnk51ew_cc2530.xclBankedlnk51ew_cc2530b.xclcopyright:柯宗武IAR开发CC2530应用程序---配置工程选项DebuggerOptionsdriver选项为TexasInstrumentscopyright:柯宗武IAR开发CC2530应用程序---编译程序copyright:柯宗武IAR开发CC2530应用程序---调试程序复位停止调试下一指令运行到断点全速运行停止调试copyright:柯宗武IAR调试程序常用窗口copyright:柯宗武LED灯闪烁实验参考代码#includeioCC2530.h#defineuintunsignedint#defineucharunsignedchar//定义控制灯的端口#defineRLEDP1_0//定义LED1为P10口控制#defineYLEDP1_1//定义LED2为P11口控制//函数声明voidDelay(uint);//延时函数voidInitial(void);//初始化P0口/****************************//延时*****************************/voidDelay(uintn){uinttt;for(tt=0;ttn;tt++);for(tt=0;ttn;tt++);for(tt=0;ttn;tt++);for(tt=0;ttn;tt++);for(tt=0;ttn;tt++);}copyright:柯宗武LED灯闪烁实验参考代码/****************************//初始化程序*****************************/voidInitial(void){P1DIR=0x03;//P10、P11定义为输出RLED=1;YLED=1;//LED}思考:该代码是否有缺陷?怎样解决?提示:怎样编写代码才不会影响其它端口的配置?P1DIR|=0x03;//P10、P11定义为输出copyright:柯宗武LED灯闪烁实验参考代码/***************************//主函数***************************/voidmain(void){Initial();//调用初始化函数RLED=0;//LED1YLED=0;//LED2while(1){YLED=!YLED;Delay(10000);}}copyright:柯宗武ioCC2530.h宏定义分析ioCC2530.h文件定义了CC2530的各类特殊功能寄存器(SFR)的地址映射。/*Port1*/SFRBIT(P