logo资料库

LaunchPad MSP430G2553 官方例程 汉语注释.doc

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
LaunchPad 官方例程(无修改)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LaunchPad 官方例程(无修改) ----------------- MSP430G2xx2 1. //************************************************************************* // LaunchPad Lab2 - Software Toggle P1.0, 软件切换的 P1.0, // // // // // // // //************************************************************************* #include /|\| | | --|RST | | XIN|- | XOUT|- | P1.0|-->LED void main(void) { WDTCTL = WDTPW + WDTHOLD; //停止看门狗定时器 if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF) { while(1); //如果校准常数擦除,捕获的 CPU!! } // Configure Basic Clock BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; BCSCTL3 |= LFXT1S_2; P1DIR = BIT6; P1OUT = 0; //设置范围 //集检查官步+调制 // 设置 LFXT1 //P1.6 输出(绿色 LED) // LED 关 IFG1 &= ~OFIFG; BCSCTL2 |=SELM_1 + DIVM_0; //清除 OSCFault 标志 //设置的 MCLK for(;;)
{ P1OUT = BIT6; _delay_cycles(100); P1OUT = 0; _delay_cycles(5000); } } // P1.6 输出(绿色 LED) //绿色 LED 关闭 ----------------- MSP430G2xx2 2. //************************************************************************* // LaunchPad Lab3 - Software Port Interrupt Service 软件端口的中断服务 // // // // // // // // // //************************************************************************* #include /|\| | | --|RST | /|\ --o--|P1.3 \|/ XIN|- | XOUT|- | P1.0|-->LED void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= BIT0; P1IES |= BIT3; P1IFG &= ~BIT3; P1IE |= BIT3; //停止看门狗定时器 //设定的 P1.0 输出方向 // P1.3 可高/低边 // P1.3 IFG 清除 // 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; P1IFG &= ~BIT3; } } // P1.0 切换 // P1.3 IFG 清除 3. //************************************************************************* // LaunchPad Lab5 - ADC10, Sample A10 Temp and Convert to oC and oF ADC10,样品 A10 的温度和转换 ----------------- MSP430G2452 /|\| | | --|RST // // // // // // // //************************************************************************* #include "msp430g2553.h" | |A10 XIN|- | XOUT|- | | long temp; long IntDegF; long IntDegC; void main(void) { WDTCTL = WDTPW + WDTHOLD; //Configure ADC10 ADC10CTL1 = INCH_10 + ADC10DIV_3; ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE; // Stop WDT // 选择 ADC 通道温度传感器 // 选 择 __enable_interrupt(); //使能中断。 ADC 号源
// Delay to allow Ref to settle 延迟让价解决 //比较模式中断。 // TACLK= SMCLK,最多的模式。 //等待延迟。 //禁用定时器中断 TACCR0 = 30; TACCTL0 |= CCIE; TACTL = TASSEL_2 | MC_1; 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* / / ----------------- XIN|- | XOUT|- | MSP430F20xx /|\| | | --|RST // // // // // // // // // //************************************************************************* P1.4/SMCLK|-->SMCLK = Default DCO P1.0/ACLK|-->ACLK = VLO P1.5|-->MCLK/10 = DCO/10 | | | | #include unsigned char s; void main(void) { // 关闭看门狗 // LFXT1 = VLO WDTCTL = WDTPW +WDTHOLD; BCSCTL3 |= LFXT1S_2; //DCOCTL = 0; //BCSCTL1 = CALBC1_16MHZ; //DCOCTL = CALBC1_16MHZ; P1DIR |= 0x31; P1SEL |= 0x11; // P1.0,4 ACLK/ VLO 的,SMCLK/ DCO 输出 //SMCLK Sub-System Main Clk, ACLK 和 SMCLK 可以通过复用引脚输出,MCLK // P1.0,和 P1.4 输出
不能直接输出体现, 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 /|\| | | --|RST // // // // // // // // // // // // //************************************************************************* #include P1.1|--> MCLK = 8MHz P1.5|--> ACLK = 32kHz | | | | | XIN|- | 32kHz XOUT|- | | | void main(void) {
WDTCTL = WDTPW + WDTHOLD; FLL_CTL0 |= DCOPLUS + XCAP18PF; //停止看门狗定时器 // DCO+ set, 频率 = xtal x D x N+1 SCFI0 |= FN_4; SCFQCTL = 121; P1DIR = 0x22; P1SEL = 0x22; while(1); } // x2 DCO freq, 8MHz nominal DCO // (121+1) x 32768 x 2 = 7.99 MHz // P1.1 口和 P1.5 的输出方向 // P1.1 口和 P1.5 的输出 MCLK 和 ACLK //循环到此 6. //************************************************************************* // MSP430xG46x 演示 - Flash 在系统编程,复制世嘉 SegB / / / /说明:此程序首先擦除闪烁赛格 A,那么它的增量 / /赛格一个值,然后擦除赛格 B,然后复制赛格一个赛格 B。 //假设的 MCLK 的 550kHz - 900kHz 的。 / / / /* NOP 指令集在主循环中断点,以避免强调的 Flash *// ----------------- MSP430xG461x // // // // // // // //************************************************************************* /|\| | | --|RST XIN|- | XOUT|- | | #include char value; // 8 位值写段 // Function prototypes void write_SegA (char value);
void copy_A2B (void); void main(void) { WDTCTL = WDTPW + WDTHOLD; FCTL2 = FWKEY + FSSEL0 + FN0; value = 0; while(1) { write_SegA(value++); copy_A2B(); _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; for (i=0; i<128; i++) { *Flash_ptr++ = value; } FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; } void copy_A2B (void) //停止看门狗定时器 //的 MCLK/2 闪存时序发生器 //初始化值 //永远重复 //写段,增量值 // 复制段 A 到 B //此设置断点 //闪存的指针 //初始化闪存的指针 //设置擦除位 //清除锁定位 //空写,擦除闪存段 //为写操作的 WRT 位 //写入值闪烁 //清除 WRT 的位 //设置锁定位
分享到:
收藏