MSP-EXP430G2开发板使用简单介绍MSP340LaunchPad介绍•名为LaunchPad的MSP-EXP430G2低成本试验板是一款适用于TI最MSP430G2xx系列产品的完整开发解决方案。其基于USB的集成型仿真器可提供为全系列MSP430G2xx器件开发应用所必需的所有软、硬件。LaunchPad具有集成的DIP目标插座,可支持多达20个引脚,从而使MSP430器件能够简便地插入LaunchPad电路板中。•。此外,其还可提供板上Flash仿真工具,以直接连接至PC轻松进行编程、调试和评估。•MSP-EXP430G2采用IAREmbeddedWorkbench集成开发环境(IDE)或CodeComposerStudio(CCS)编写、下载和调试应用。•可提供板上Flash仿真工具,以直接连接至PC轻松进行编程、调试和评估。LaunchPad开发板上各部分介绍片上仿真器模块6针eZ430连接器MSP430器件和插座外置晶体接口电源连接器复位按钮LED和跳线P1.0&P1.6P1.3按钮芯片引出脚USB仿真器接口MSP430系列功能框图低压、电源复位保护比较捕捉寄存器MSP430G2XX无Port3MSP430G2XX外设•通用I/O–可独立编程–可提供输入、输出与中断(边沿可选)的任意组合–所有寻址指令可对端口控制寄存器进行读/写访问–每个I/O具有一个可独立编程的上拉/下拉电阻–某些器件/引脚具有触摸按键模块(PinOsc)•16位Timer_A2–2个捕获/比较寄存器–丰富的中断功能•WDT+看门狗定时器–也可用作一个普通定时器MSP430G2XX外设•欠压复位–可在上电和断电期间提供正确的复位信号–功耗包含于MCU最低功耗时(LPM4)所消耗电流之中•串行通信–支持I2C和SPI的USI–支持I2C、SPI以及UART的USCI•Comparator_A+–可设定反相和同相输入–可选的RC输出滤波器–可直接输出至Timer_A2捕获输入–具有中断能力MSP430G2XX外设•8通道/10位200kspsSARADC–8个外部通道(取决于器件)–内置电压和温度传感器–可编程的参考电压–DTC可在无需CPU干预的情况下将结果发送至存储器–具有中断能力MSP430G2553具体介绍一、CPU及基本时钟系统二、通用IO三、中断四、定时器五、串行通信六、ADC10七、低功耗一、CPU及基本时钟系统1、MSP430G2xx结构FLASHClockDigitalPeripheralRISCCPU16-bitMAB16MDB16RAMAnalogPeripheral......ACLKSMCLKJTAG/Debug超低功耗–0.1uA断电模式–0.8uA待机模式–220uA/1MIPS–1us时钟唤醒–50nA端口漏电流–零功耗欠压复位(BOR)超灵活–0.5k-16kB系统内可编程(ISP)Flash–16-bitTimer–SPI,I2C,UART–10bitADC–嵌入式仿真2、时钟系统•超低功耗/低频振荡器(VLO)–4–20kHz(典型值12kHz)–500nA待机流耗–0.5%/°Cand4%/V漂移•外接晶体振荡器(LFXT1)–片内可编程负载电容–故障保护OSC_Fault–脉冲滤波器•数字控制振荡器(DCO)–0-to-16MHz–+3%容差–出厂校准(FlashI.M.)MCLKCPUSMCLKPeripheralsACLKPeripherals16MHzDCOMin.PulsFilterVLOOSC_Fault上电后:MCLK和SMCLK由DCOCLK提供(约1.1MHz)ACLK由LFXT1CLK提供(LF模式,6pF内部负载电容)辅助时钟主系统时钟子系统时钟32768Hz2.1、时钟模块的控制寄存器PowerUpClear,复位信号2.2、设置DOC为1MHz及系统主时钟MCLK//设定MCLKBCSCTL2|=SELM_1+DIVM_3;//设置MCLK对MCLK,即指令运行的时钟源进行分频DIVM_0:MCLK=1MDIVM_1:MCLK=1M/2DIVM_2:MCLK=1M/4DIVM_3:MCLK=1M/8//设置DCO为1MHzBCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;对MCLK的时钟源进行选择SELM_0:MCLK选择DCOCLKSELM_1:MCLK选择DCOCLKSELM_2:MCLK选择XT2CLK/LFXTCLKSELM_3:MCLK选择LFXTCLK二、通用IO1、P口端口寄存器:(1)、PxDIR输入/输出方向寄存器(0:输入模式1:输出模式)(2)、PxIN输入寄存器输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。(3)、PxOUT输出寄存器寄存器内的内容不会受引脚方向改变的影响。(4)、PxIFG中断标志寄存器(0:没有中断请求1:有中断请求)该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求;这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位;外部中断事件的时间必须=1.5倍的MCLK的时间,以保证中断请求被接受;(5)、PxIES中断触发沿选择寄存器(0:上升沿中断1:下降沿中断)(6)、PxSEL功能选择寄存器(0:选择引脚为I/O端口1:选择引脚为外围模块功能)(7)、PxREN上拉/下拉电阻使能寄存器(0:禁止1:使能)2、基本操作:(1)、所有P口都可作为通用IO口使用(2)、所有P口都可进行字节操作和位操作按字节操作:例:P1DIR=0xff;//将P1口作为输出口PIOUT=0x20;//P1口输出0x20P1DIR=0x00;//将P1口作为输入口data=P1IN//读取P1口外部输入值按位操作:例:P1DIR=BIT0;//将P1.0作为输出口P1OUT|=BIT0;//P1.0输出1P1OUT&=~BIT0;//P1.0输出0P1DIR&=~BIT0//将P1.0口作为输入data=P1IN&BIT0//读取P1.0口外部输入值三、中断1、中断源:(1)、外部中断:P1、P2(2)、定时器中断。(3)、看门狗定时器中断。(4)、串口中断。(5)、A/D转换中断。(6)、比较器中断。2、中断的一般设置:(1)、打开、关闭局部中断:打开局部中断一般是给想关的特殊功能寄存器相关位置1以P1口外部中断为例:打开局部中断:P1IE|=BIT0;//打开P1.0外部中断,BIT0的值为0x01,即把P1IE的第一位置1关闭局部中断一般是给想关的特殊功能寄存器相关位置0同样以P1口外部中断为例:关闭局部中断:P1IE&=~BIT0;//关闭P1.0外部中断(2)、打开、关闭全局中断:_EINT();//打开总中断,相当于51的EA=1;_DINT();//关闭总中断,相当于51的EA=0;(3)、各中断向量InterruptVectors:#defineBASICTIMER_VECTOR(0*2u)/*0xFFE0BasicTimer*/#definePORT2_VECTOR(1*2u)/*0xFFE2Port2*/#defineUSART1TX_VECTOR(2*2u)/*0xFFE4USART1Transmit*/#defineUSART1RX_VECTOR(3*2u)/*0xFFE6USART1Receive*/#definePORT1_VECTOR(4*2u)/*0xFFE8Port1*/#defineTIMERA1_VECTOR(5*2u)/*0xFFEATimerACC1-2,TA*/#defineTIMERA0_VECTOR(6*2u)/*0xFFECTimerACC0*/#defineADC12_VECTOR(7*2u)/*0xFFEEADC*/#defineUSART0TX_VECTOR(8*2u)/*0xFFF0USART0Transmit*/#defineUSART0RX_VECTOR(9*2u)/*0xFFF2USART0Receive*/#defineWDT_VECTOR(10*2u)/*0xFFF4WatchdogTimer*/#defineCOMPARATORA_VECTOR(11*2u)/*0xFFF6ComparatorA*/#defineTIMERB1_VECTOR(12*2u)/*0xFFF8TimerBCC1-6,TB*/#defineTIMERB0_VECTOR(13*2u)/*0xFFFATimerBCC0*/#defineNMI_VECTOR(14*2u)/*0xFFFCNon-maskable*/#defineRESET_VECTOR(15*2u)/*0xFFFEReset[HighestPriority]*/(4)、中断的嵌套:当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)实现中断嵌套需要注意以下几点:1)430默认的是关闭中断嵌套的,一定要中断嵌套的话,就必须在中断服务程序中打开总中断msp430的指令中,_DINT()和_EINT()分别指关和开总中断。2)当进入中断服务程序时,只要不在中断服务程序中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;3)若在中断服务程序A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高还是低),B执行完再继续执行A。注意:进入中断服务程序B后总中断同样也会关闭,如果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开;4)若在中断服务程序中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则。5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位倍被自动清除;对于多源中断要手动清标志位,比如P1/P2口中断,要手工清除相应的标志,如果在这种中断用EINT();开中断,而在打开中断前没有清标志,就会有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关.(5)、中断应用程序举例(外部中断):voidinterrupt_initial(){P1DIR&=~BIT7;//P1.7为输入P1IE|=0x80;//P1.7中断允许P1IES|=0x00;//P1.7上升沿触发P1IFG=0;//P1.7中断标志清除,对于多源中断必须先清中断标志再打开中断_EINT();//总中断允许}#pragmavector=PORT1_VECTOR__interruptvoidPort_1(void){P1IFG&=~BIT7;//P1.7中断标志清除/*在此写中断服务子程序*/}•#pragmavector-下面的函数是一个用于所列矢量的中断•__interruptvoid-识别中断名称四、定时器Compararator2CCICountModeSetTAIFGTACCR2ACLKSMCLKTACLKINCLKGNDVCCCCI2ACCI2BSetCCIFG2OutputUnit2CCR0SCCIYAENCCR1CCR2CaptureMode16-bitTimerTAR异步16位定时器/计数器连续、递增-递减、递增计数模式3个捕获/比较寄存器PWM输出中断向量寄存器,实现快速中断响应可触发DMA多个时钟源可选所有430均有Timer_A1、定时器的计数模式0FFFFh0hCCR0连续计数模式0FFFFh0h增计数模式停止模式增/减计数模式0FFFFh0hCCR0(1)、停止模式:用于定时器的暂停,并不发生复位,所有寄存器现行类容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停前的计数方向计数。(2)、增计数模式:捕获/