LaunchPad(MSP430G2553)官方例程汉语注释.doc
-
资源ID:2388417
资源大小:132KB
全文页数:22页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
LaunchPad(MSP430G2553)官方例程汉语注释.doc
LaunchPad 官方例程(无修改)一切皆为2012TI杯电子设计大赛1./*/ LaunchPad Lab2 - Software Toggle P1.0, 软件切换的P1.0,/ MSP430G2xx2/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ | P1.0|->LED/*#include <msp430g2553.h>void main(void)WDTCTL = WDTPW + WDTHOLD; /停止看门狗定时器if (CALBC1_1MHZ = 0xFF | CALDCO_1MHZ = 0xFF)while(1);/如果校准常数擦除,捕获的CPU!/ Configure Basic ClockBCSCTL1 = CALBC1_1MHZ; /设置范围DCOCTL = CALDCO_1MHZ;/集检查官步+调制BCSCTL3 |= LFXT1S_2;/ 设置LFXT1P1DIR = BIT6; /P1.6输出(绿色LED)P1OUT = 0; / LED 关IFG1 &= OFIFG; /清除OSCFault标志BCSCTL2 |=SELM_1 + DIVM_0; /设置的MCLKfor(;)P1OUT = BIT6; / P1.6输出(绿色LED)_delay_cycles(100);P1OUT = 0; /绿色LED关闭_delay_cycles(5000);2./*/ LaunchPad Lab3 - Software Port Interrupt Service软件端口的中断服务/ MSP430G2xx2/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ /| | |/ -o-|P1.3 P1.0|->LED/ |/*#include <msp430g2553.h>void main(void)WDTCTL = WDTPW + WDTHOLD; /停止看门狗定时器 P1DIR |= BIT0; /设定的P1.0输出方向P1IES |= BIT3; / P1.3可高/低边P1IFG &= BIT3; / P1.3 IFG 清除P1IE |= BIT3; / P1.3可中断启用_BIS_SR(LPM4_bits + GIE); /进入LPM4中断/ Port 1 interrupt service routine端口1中断服务程序#pragma vector=PORT1_VECTOR_interrupt void Port_1(void)if (P1IFG & BIT3)P1OUT = BIT0; / P1.0切换P1IFG &= BIT3; / P1.3 IFG清除3./*/ LaunchPad Lab5 - ADC10, Sample A10 Temp and Convert to oC and oF ADC10,样品A10的温度和转换/ MSP430G2452/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ |A10 |/*#include "msp430g2553.h"long temp;long IntDegF;long IntDegC;void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT /Configure ADC10 ADC10CTL1 = INCH_10 + ADC10DIV_3; / 选择ADC通道温度传感器 ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;/选择ADC号源 _enable_interrupt(); /使能中断。 TACCR0 = 30; / Delay to allow Ref to settle延迟让价解决 TACCTL0 |= CCIE; /比较模式中断。 TACTL = TASSEL_2 | MC_1; / TACLK= SMCLK,最多的模式。 LPM0; /等待延迟。 TACCTL0 &= CCIE; /禁用定时器中断 _disable_interrupt(); while(1) ADC10CTL0 |= ENC + ADC10SC; /采样和转换启动 _bis_SR_register(LPM0_bits + GIE); / LPM0与中断功能 / 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); /明确CPUOFF位从0(SR)#pragma vector=TIMER0_A0_VECTOR_interrupt void ta0_isr(void) TACTL = 0; _bic_SR_register_on_exit(LPM0_bits); /明确CPUOFF位从0(SR)4./*/ MSP430F20xx演示 - 基本时钟,输出缓冲SMCLK,ACLK和MCLK/10/ /说明:缓冲区ACLK从P2.0,P1.4脚和MCLK/10默认SMCLK(DCO)/ / P1.5的。/ ACLK= LFXT1= VLO的,个MCLK= SMCLK=默认的DCO/ / / /*安装辛XOUT之间的外部晶体需要ACLK* / / MSP430F20xx/ -/ /| XIN|-/ | | | / -|RST XOUT|-/ | |/ | P1.4/SMCLK|->SMCLK = Default DCO/ | P1.5|->MCLK/10 = DCO/10/ | P1.0/ACLK|->ACLK = VLO/*#include <msp430x20x3.h>unsigned char s;void main(void) WDTCTL = WDTPW +WDTHOLD; / 关闭看门狗 BCSCTL3 |= LFXT1S_2; / LFXT1 = VLO /DCOCTL = 0; /BCSCTL1 = CALBC1_16MHZ; /DCOCTL = CALBC1_16MHZ; P1DIR |= 0x31; / P1.0,和P1.4输出 P1SEL |= 0x11; / P1.0,4 ACLK/ VLO的,SMCLK/ DCO输出 /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演示 - FLL的内部运行,在8MHz检查官/说明:此程序演示设置内部DCO运行/ /为8MHz由FLL+自动校准。/ ACLK= LFXT1=32768Hz的,个MCLK= SMCLK=检查官=(121+1)×2×ACLK=7995392Hz/ / / /*辛与XOUT之间的外部钟晶振需要ACLK* / / MSP430xG461x/ -/ /| XIN|-/ | | | 32kHz/ -|RST XOUT|-/ | |/ | P1.1|-> MCLK = 8MHz/ | |/ | P1.5|-> ACLK = 32kHz/ | |/*#include <msp430xG46x.h>void main(void) WDTCTL = WDTPW + WDTHOLD; /停止看门狗定时器 FLL_CTL0 |= DCOPLUS + XCAP18PF; / DCO+ set, 频率 = 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的输出方向 P1SEL = 0x22; / P1.1口和P1.5的输出MCLK和ACLK while(1); /循环到此6./*/ MSP430xG46x演示 - Flash在系统编程,复制世嘉SegB/ / /说明:此程序首先擦除闪烁赛格A,那么它的增量/ /赛格一个值,然后擦除赛格B,然后复制赛格一个赛格B。/假设的MCLK的550kHz - 900kHz的。/ / / /* NOP指令集在主循环中断点,以避免强调的Flash */ MSP430xG461x/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/*#include <msp430xG46x.h>char value; / 8位值写段/ Function prototypesvoid write_SegA (char value);void copy_A2B (void);void main(void) WDTCTL = WDTPW + WDTHOLD; /停止看门狗定时器 FCTL2 = FWKEY + FSSEL0 + FN0; /的MCLK/2闪存时序发生器 value = 0; /初始化值 while(1) /永远重复 write_SegA(value+); /写段,增量值 copy_A2B(); / 复制段A到B _NOP(); /此设置断点 void write_SegA (char value) char *Flash_ptr; /闪存的指针 unsigned int i; Flash_ptr = (char *) 0x1080; /初始化闪存的指针 FCTL1 = FWKEY + ERASE; /设置擦除位 FCTL3 = FWKEY; /清除锁定位 *Flash_ptr = 0; /空写,擦除闪存段 FCTL1 = FWKEY + WRT; /为写操作的WRT位 for (i=0; i<128; i+) *Flash_ptr+ = value; /写入值闪烁 FCTL1 = FWKEY; /清除WRT的位 FCTL3 = FWKEY + LOCK; /设置锁定位void copy_A2B (void) char *Flash_ptrA; /段指针 char *Flash_ptrB; / B段指针 unsigned int i; Flash_ptrA = (char *) 0x1080; /初始化闪存段A指针 Flash_ptrB = (char *) 0x1000; /初始化闪存段B指针 FCTL1 = FWKEY + ERASE; /设置擦除位 FCTL3 = FWKEY; /清除锁定位 *Flash_ptrB = 0; /空写,擦除闪存段B FCTL1 = FWKEY + WRT; /为写操作的WRT位 for (i=0; i<128; i+) *Flash_ptrB+ = *Flash_ptrA+; /复制值段A到段B FCTL1 = FWKEY; /清除WRT的位 FCTL3 = FWKEY + LOCK; /设置锁定位7./*/ MSP430xG46x演示 - 软件P1.0口从LPM4中断/ / /说明:P1.0的高/低的过渡会引发P1_ISR/ /切换P2.1。正常模式LPM40.1uA。 LPM4电流可测/ /与LED删除所有未使用的P1.x/P2.x配置为输出或输入/ /拉高或低,确保P2.0的中断输入不浮动。/ ACLK=32.768kHz的,个MCLK= SMCLK=默认的DCO/ MSP430xG461x/ -/ /| |/ | | |/ -|RST |/ /| | |/ -o-|P1.0 P2.1|->LED/ |/*#include <msp430xG46x.h>void main(void) WDTCTL = WDTPW + WDTHOLD; /停止看门狗 FLL_CTL0 |= XCAP14PF; /配置负载帽 P2DIR = BIT1; /设置P2.1为输出方向 P1IES = BIT0; / H-L过渡 P1IE = BIT0; /使能中断 _BIS_SR(LPM4_bits + GIE); / LPM4,使中断/ Port 1 interrupt service routine端口1中断服务程序#pragma vector=PORT1_VECTOR_interrupt void Port1_ISR (void) unsigned volatile int i; for (i=10000; i>0; i-); /防抖动延时 P1IFG &= BIT0; /清除P1IFG if (P1IN & 0x01) = 0) P2OUT = 0x02; /使用专用或切换P2.18./*/ MSP430xG46x演示 - 软件P1.0口从LPM4中断/ / /说明:P1.0的高/低的过渡会引发P1_ISR/ /切换P2.1。正常模式LPM40.1uA。 LPM4电流可测/ /与LED删除所有未使用的P1.x/P2.x配置为输出或输入/ /拉高或低,确保P2.0的中断输入不浮动。/ ACLK=32.768kHz的,个MCLK= SMCLK=默认的DCO/ MSP430xG461x/ -/ /| |/ | | |/ -|RST |/ /| | |/ -o-|P1.0 P2.1|->LED/ |/*#include <msp430xG46x.h>void main(void) WDTCTL = WDTPW + WDTHOLD; /停止看门狗 FLL_CTL0 |= XCAP14PF; /配置负载帽 P2DIR = BIT1; /设置P2.1为输出方向 P1IES = BIT0; / H-L过渡 P1IE = BIT0; /使能中断 _BIS_SR(LPM4_bits + GIE); / LPM4,使中断/ Port 1 interrupt service routine端口1中断服务程序#pragma vector=PORT1_VECTOR_interrupt void Port1_ISR (void) unsigned volatile int i; for (i=10000; i>0; i-); /防抖动延时 P1IFG &= BIT0; /清除P1IFG if (P1IN & 0x01) = 0) P2OUT = 0x02; /使用专用或切换P2.19./*/ MSP430xG46x演示 - USCI_A0,UART ISR的回声,检查官SMCLK115200/ /(修改后的代码示例“msp430xG46x_uscia0_uart_01_115k.c”)/ /说明:回声一个接收到的字符,接收的ISR使用。正常模式LPM0。/ / USCI_A0 RX中断触发的TX回声。(01H009h)/1048576hz= 1048576/115200=9.1波特率分频器/ ACLK= LFXT1=32768Hz的,个MCLK= SMCLK=默认的DCO=32×ACLK=1048576Hz/ / / /*辛与XOUT之间的外部钟晶振需要ACLK* / / MSP430FG4619/ -/ /| XIN|-/ | | | 32kHz/ -|RST XOUT|-/ | |/ | P2.5/UCA0RXD|<-/ | | 115200 - 8N1/ | P2.4/UCA0TXD|->/*#include "msp430xG46x.h"void main(void) volatile unsigned int i; WDTCTL = WDTPW+WDTHOLD; /停止看门狗 FLL_CTL0 |= XCAP14PF; /配置负载帽 do IFG1 &= OFIFG; /清除OSCFault标志 for (i = 0x47FF; i > 0; i-); /标志设置时间 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; /调制 UCA0CTL1 &= UCSWRST; / *初始化USCI状态机* IE2 |= UCA0RXIE; /启用USCI_A0 RX中断 _BIS_SR(LPM0_bits + GIE); /进入LPM0,启用中断/ 回显RXed字符,确认TX缓冲区是准备先#pragma vector=USCIAB0RX_VECTOR_interrupt void USCIA0RX_ISR (void) while(!(IFG2&UCA0TXIFG); UCA0TXBUF = UCA0RXBUF; / TX -> RXed character10./* MSP-EXP430G2-LaunchPad软件用户的应用体验 * * 1。设备开始在LPM3模式+闪烁的LED显示设备是活着 *后的第一个按钮记者,设备过渡到应用模式 * 2。应用模式 *+连续采样ADC的温度传感器通道,比较的结果,对 *初始值 *+设为PWM基于测量ADC偏移:红色的LED积极偏移,绿 * LED为负偏移 *通过TimerA的UART发送温度值到PC *+按钮按下 - >校准使用当前温度 *发送字符“,通知PC机通过UART* #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 / P1.2上的TXD#define RXD BIT2 /P1.2上的RXD#define APP_STANDBY_MODE 0#define APP_APPLICATION_MODE 1#define TIMER_PWM_MODE 0 #define TIMER_UART_MODE 1#define TIMER_PWM_PERIOD 2000 #define TIMER_PWM_OFFSET 20#define TEMP_SAME