LaunchPad(MSP430G2553)_官方例程.doc_第1页
LaunchPad(MSP430G2553)_官方例程.doc_第2页
LaunchPad(MSP430G2553)_官方例程.doc_第3页
LaunchPad(MSP430G2553)_官方例程.doc_第4页
LaunchPad(MSP430G2553)_官方例程.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LaunchPad 官方例程(无修改)一切皆为2012TI杯电子设计大赛1./*/ LaunchPad Lab2 - Software Toggle P1.0,/ MSP430G2xx2/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ | P1.0|-LED/*#include void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timerif (CALBC1_1MHZ = 0xFF | CALDCO_1MHZ = 0xFF)while(1);/ If calibration constants erased, trap CPU!/ Configure Basic ClockBCSCTL1 = CALBC1_1MHZ; / Set rangeDCOCTL = CALDCO_1MHZ;/ Set DCO step + modulationBCSCTL3 |= LFXT1S_2;/ Set LFXT1P1DIR = BIT6; / P1.6 output (green LED)P1OUT = 0; / LED offIFG1 &= OFIFG; / Clear OSCFault flagBCSCTL2 |=SELM_1 + DIVM_0; / Set MCLKfor(;)P1OUT = BIT6; / P1.6 on (green LED)_delay_cycles(100);P1OUT = 0; / green LED off_delay_cycles(5000);2./*/ LaunchPad Lab3 - Software Port Interrupt Service/ MSP430G2xx2/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ /| | |/ -o-|P1.3 P1.0|-LED/ |/*#include void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timerP1DIR |= BIT0; / Set P1.0 to output directionP1IES |= BIT3; / P1.3 Hi/lo edgeP1IFG &= BIT3; / P1.3 IFG clearedP1IE |= BIT3; / P1.3 interrupt enabled_BIS_SR(LPM4_bits + GIE); / Enter LPM4 w/interrupt/ Port 1 interrupt service routine#pragma vector=PORT1_VECTOR_interrupt void Port_1(void)if (P1IFG & BIT3)P1OUT = BIT0; / P1.0 = toggleP1IFG &= BIT3; / P1.3 IFG cleared3./*/ LaunchPad Lab5 - ADC10, Sample A10 Temp and Convert to oC and oF/ MSP430G2452/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ |A10 |/*#include msp430g2553.hlong temp;long IntDegF;long IntDegC;void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT /Configure ADC10 ADC10CTL1 = INCH_10 + ADC10DIV_3; / Choose ADC Channel as Temp Sensor ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;/Choose ADC Ref source _enable_interrupt(); / Enable interrupts. TACCR0 = 30; / Delay to allow Ref to settle TACCTL0 |= CCIE; / Compare-mode interrupt. TACTL = TASSEL_2 | MC_1; / TACLK = SMCLK, Up mode. LPM0; / Wait for delay. TACCTL0 &= CCIE; / Disable timer Interrupt _disable_interrupt(); while(1) ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start _bis_SR_register(LPM0_bits + GIE); / LPM0 with interrupts enabled / oF = (A10/1024)*1500mV)-923mV)*1/1.97mV = A10*761/1024 - 468 temp = ADC10MEM; IntDegF = (temp - 630) * 761) / 1024; / oC = (A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278 temp = ADC10MEM; IntDegC = (temp - 673) * 423) / 1024; _no_operation(); / SET BREAKPOINT HERE / ADC10 interrupt service routine#pragma vector=ADC10_VECTOR_interrupt void ADC10_ISR (void) _bic_SR_register_on_exit(LPM0_bits); / Clear CPUOFF bit from 0(SR)#pragma vector=TIMER0_A0_VECTOR_interrupt void ta0_isr(void) TACTL = 0; _bic_SR_register_on_exit(LPM0_bits); / Clear CPUOFF bit from 0(SR)4./*/ MSP430F20xx Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10/ Description: Buffer ACLK on P2.0, default SMCLK(DCO) on P1.4 and MCLK/10 on/ P1.5./ ACLK = LFXT1 = VLO, MCLK = SMCLK = default DCO/ /* External watch crystal installed on XIN XOUT is required for ACLK */ MSP430F20xx/ -/ /| XIN|-/ | | | / -|RST XOUT|-/ | |/ | P1.4/SMCLK|-SMCLK = Default DCO/ | P1.5|-MCLK/10 = DCO/10/ | P1.0/ACLK|-ACLK = VLO/ M. Buccini / L. Westlund/ Texas Instruments Inc./ October 2005/ Built with IAR Embedded Workbench Version: 3.40A/*#include unsigned char s;void main(void) WDTCTL = WDTPW +WDTHOLD; / Stop Watchdog Timer BCSCTL3 |= LFXT1S_2; / LFXT1 = VLO /DCOCTL = 0; /BCSCTL1 = CALBC1_16MHZ; /DCOCTL = CALBC1_16MHZ; P1DIR |= 0x31; / P1.0,5 and P1.4 outputs P1SEL |= 0x11; / P1.0,4 ACLK/VLO, SMCLK/DCO output /SMCLK Sub-System Main Clk, ACLK和SMCLK可以通过复用引脚输出,MCLK不能直接输出体现, MCLK可以配置为VLO或者DCO while(1) P1OUT |= 0x20; / P1.5 = 1, 通过开关P1.5来体现MCLK,这两条指令的周期大概为SMCLK的1/10 P1OUT &= 0x20;/20; 5./*/ MSP430xG46x Demo - FLL+, Runs Internal DCO at 8MHz/ Description: This program demonstrates setting the internal DCO to run at/ 8MHz with auto-calibration by the FLL+./ ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO = (121+1) x 2 x ACLK = 7995392Hz/ /* An external watch crystal between XIN & XOUT is required for ACLK */ MSP430xG461x/ -/ /| XIN|-/ | | | 32kHz/ -|RST XOUT|-/ | |/ | P1.1|- MCLK = 8MHz/ | |/ | P1.5|- ACLK = 32kHz/ | |/ K. Quiring/ M. Mitchell/ Texas Instruments Inc./ October 2006/ Built with IAR Embedded Workbench Version: 3.41A/*#include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer FLL_CTL0 |= DCOPLUS + XCAP18PF; / DCO+ set, freq = xtal x D x N+1 SCFI0 |= FN_4; / x2 DCO freq, 8MHz nominal DCO SCFQCTL = 121; / (121+1) x 32768 x 2 = 7.99 MHz P1DIR = 0x22; / P1.1 & P1.5 to output direction P1SEL = 0x22; / P1.1 & P1.5 to output MCLK & ACLK while(1); / Loop in place6./*/ MSP430xG46x Demo - Flash In-System Programming, Copy SegA to SegB/ Description: This program first erases flash seg A, then it increments all/ values in seg A, then it erases seg B, then copies seg A to seg B./ Assumed MCLK 550kHz - 900kHz./ /* Set Breakpoint on NOP in the Mainloop to avoid Stressing Flash */ MSP430xG461x/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ M. Mitchell/ Texas Instruments Inc./ Feb 2005/ Built with IAR Embedded Workbench Version: 3.21A/*#include char value; / 8-bit value to write to segment A/ Function prototypesvoid write_SegA (char value);void copy_A2B (void);void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer FCTL2 = FWKEY + FSSEL0 + FN0; / MCLK/2 for Flash Timing Generator value = 0; / Initialize value while(1) / Repeat forever write_SegA(value+); / Write segment A, increment value copy_A2B(); / Copy segment A to B _NOP(); / SET BREAKPOINT HERE void write_SegA (char value) char *Flash_ptr; / Flash pointer unsigned int i; Flash_ptr = (char *) 0x1080; / Initialize Flash pointer FCTL1 = FWKEY + ERASE; / Set Erase bit FCTL3 = FWKEY; / Clear Lock bit *Flash_ptr = 0; / Dummy write to erase Flash segment FCTL1 = FWKEY + WRT; / Set WRT bit for write operation for (i=0; i128; i+) *Flash_ptr+ = value; / Write value to flash FCTL1 = FWKEY; / Clear WRT bit FCTL3 = FWKEY + LOCK; / Set LOCK bitvoid copy_A2B (void) char *Flash_ptrA; / Segment A pointer char *Flash_ptrB; / Segment B pointer unsigned int i; Flash_ptrA = (char *) 0x1080; / Initialize Flash segment A pointer Flash_ptrB = (char *) 0x1000; / Initialize Flash segment B pointer FCTL1 = FWKEY + ERASE; / Set Erase bit FCTL3 = FWKEY; / Clear Lock bit *Flash_ptrB = 0; / Dummy write to erase Flash segment B FCTL1 = FWKEY + WRT; / Set WRT bit for write operation for (i=0; iLED/ |/ K. Quiring/ M. Mitchell/ Texas Instruments Inc./ October 2006/ Built with IAR Embedded Workbench Version: 3.41A/*#include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT FLL_CTL0 |= XCAP14PF; / Configure load caps P2DIR = BIT1; / Set P2.1 to output direction P1IES = BIT0; / H-L transition P1IE = BIT0; / Enable interrupt _BIS_SR(LPM4_bits + GIE); / LPM4, enable interrupts/ Port 1 interrupt service routine#pragma vector=PORT1_VECTOR_interrupt void Port1_ISR (void) unsigned volatile int i; for (i=10000; i0; i-); / Debounce delay P1IFG &= BIT0; / Clear P1IFG if (P1IN & 0x01) = 0) P2OUT = 0x02; / Toggle P2.1 using exclusive-OR8./*/ MSP430xG46x Demo - Software Port Interrupt on P1.0 from LPM4/ Description: A hi/low transition on P1.0 will trigger P1_ISR which,/ toggles P2.1. Normal mode is LPM4 0.1uA. LPM4 current can be measured/ with the LED removed, all unused P1.x/P2.x configured as output or inputs/ pulled high or low, and ensure the P2.0 interrupt input does not float./ ACLK = 32.768kHz, MCLK = SMCLK = default DCO/ MSP430xG461x/ -/ /| |/ | | |/ -|RST |/ /| | |/ -o-|P1.0 P2.1|-LED/ |/ K. Quiring/ M. Mitchell/ Texas Instruments Inc./ October 2006/ Built with IAR Embedded Workbench Version: 3.41A/*#include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT FLL_CTL0 |= XCAP14PF; / Configure load caps P2DIR = BIT1; / Set P2.1 to output direction P1IES = BIT0; / H-L transition P1IE = BIT0; / Enable interrupt _BIS_SR(LPM4_bits + GIE); / LPM4, enable interrupts/ Port 1 interrupt service routine#pragma vector=PORT1_VECTOR_interrupt void Port1_ISR (void) unsigned volatile int i; for (i=10000; i0; i-); / Debounce delay P1IFG &= BIT0; / Clear P1IFG if (P1IN & 0x01) = 0) P2OUT = 0x02; / Toggle P2.1 using exclusive-OR9./*/ MSP430xG46x Demo - USCI_A0, 115200 UART Echo ISR, DCO SMCLK/ (modified code example msp430xG46x_uscia0_uart_01_115k.c)/ Description: Echo a received character, RX ISR used. Normal mode is LPM0./ USCI_A0 RX interrupt triggers TX Echo./ Baud rate divider with 1048576hz = 1048576/115200 = 9.1 (009h|01h)/ ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz/ /* An external watch crystal between XIN & XOUT is required for ACLK */ MSP430FG4619/ -/ /| XIN|-/ | | | 32kHz/ -|RST XOUT|-/ | |/ | P2.5/UCA0RXD|/ Texas Instruments Inc./ October 2006/ Built with IAR Embedded Workbench Version: 3.41A/*#include msp430xG46x.hvoid main(void) volatile unsigned int i; WDTCTL = WDTPW+WDTHOLD; / Stop WDT FLL_CTL0 |= XCAP14PF; / Configure load caps do IFG1 &= OFIFG; / Clear OSCFault flag for (i = 0x47FF; i 0; i-); / Time for flag to set while (IFG1 & OFIFG); / OSCFault flag still set? P2SEL |= 0x030; / P2.4,5 = USCI_A0 RXD/TXD UCA0CTL1 |= UCSSEL_2; / SMCLK UCA0BR0 = 18;0x09; / 1MHz 115200 UCA0BR1 = 0;0x00; / 1MHz 115200 UCA0MCTL = 0;0x02; / Modulation UCA0CTL1 &= UCSWRST; / *Initialize USCI state machine* IE2 |= UCA0RXIE; / Enable USCI_A0 RX interrupt _BIS_SR(LPM0_bits + GIE); / Enter LPM0, interrupts enabled/ Echo back RXed character, confirm TX buffer is ready first#pragma vector=USCIAB0RX_VECTOR_interrupt void USCIA0RX_ISR (void) while(!(IFG2&UCA0TXIFG); UCA0TXBUF = UCA0RXBUF; / TX - RXed character10./* * MSP-EXP430G2-LaunchPad User Experience Application * * 1. Device starts up in LPM3 + blinking LED to indicate device is alive * + Upon first button press, device transitions to application mode * 2. Application Mode * + Continuously sample ADC Temp Sensor channel, compare result against * initial value * + Set PWM based on measured ADC offset: Red LED for positive offset, Green * LED for negative offset * + Transmit temperature value via TimerA UART to PC * + Button Press - Calibrate using current temperature * Send character via UART, notifying PC */ #include msp430g2553.h#define LED0 BIT0#define LED1 BIT6#define LED_DIR P1DIR#define LED_OUT P1OUT #define BUTTON BIT3#define BUTTON_OUT P1OUT#define BUTTON_DIR P1DIR#define BUTTON_IN P1IN#define BUTTON_IE P1IE#define BUTTON_IES P1IES#define BUTTON_IFG P1IFG#define BUTTON_REN P1REN#define TXD BIT1 / TXD on P1.1#define RXD BIT2 / RXD on P1.2#define APP_STANDBY_MODE 0#define APP_APPLICATION_MODE 1#define TIMER_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论