Contents 3... 9... 14
MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project
File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project (with main.c) Finish!
MSP430 LAUNCHPAD 指导书 5 #include "msp430g2553.h" //Contains definitions for registers and built-in functions void main(void)// Main program WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR = BIT0 // Set P1.0 to output direction P1OUT &= ~BIT0; // set P1.0 to Off P1REN = BIT3; // P1.3 Pull up Enabled P1IES = BIT3; // P1.3 Interrupt at Falling Edge P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear P1IE = BIT3; // P1.3 interrupt Enabled _EINT(); // Enable all interrupts while(1) //Loop forever, we'll do our job in the interrupt routine... WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR = BIT0; // Set P1.0 to output direction
P1OUT &= ~BIT0; // set P1.0 to Off P1REN = BIT3; // P1.3 Pull up Enabled P1IES = BIT3; // P1.3 Interrupt at Falling Edge P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear P1IE = BIT3; // P1.3 interrupt Enabled P1REN = BIT3 P1IES = BIT3; P1IFG &= ~BIT3 P1IE = BIT3 _EINT(); // Enable all interrupts while(1) //Loop forever, we'll do our job in the interrupt routine...
MSP430 LAUNCHPAD 指导书 7 #pragma vector=port1_vector interrupt void Port_1(void) P1OUT ^= BIT0; //Toggle P1.0 P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear ( P1OUT ^= BIT0; //Toggle P1.0 P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear
#include "msp430g2553.h" //Contains definitions for registers and built-in functions void main(void)// Main program WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR = BIT0; // Set P1.0 to output direction P1OUT &= ~BIT0; // set P1.0 to Off P1REN = BIT3; // P1.3 Pull up Enabled P1IES = BIT3; // P1.3 Interrupt at Falling Edge P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear P1IE = BIT3; // P1.3 interrupt Enabled _EINT(); // Enable all interrupts while(1) //Loop forever, we'll do our job in the interrupt routine... #pragma vector=port1_vector interrupt void Port_1(void) P1OUT ^= BIT0; //Toggle P1.0 P1IFG &= ~BIT3; // P1.3 Interrupt Flag Clear
MSP430 LAUNCHPAD 指导书 9 New Project #include "msp430g2553.h" void main(void) WDTCTL = WDTPW + WDTHOLD; // Stop WDT CCTL0 = CCIE; // CCR0 interrupt enabled TACTL = TASSEL_2 + MC_1 + ID_3; // SMCLK/8, upmode TACCR0 = 10000; // 12.5 Hz CCTL0 = CCIE; // CCR0 interrupt enabled
TACTL = TASSEL_2 + MC_1 + ID_3; // SMCLK/8, up mode 有 TACCR0 = 10000; // 12.5 Hz P1OUT &= 0x00; // Shut down everything P1DIR &= 0x00; P1DIR = BIT0 + BIT6; // P1.0 and P1.6 pins output P1REN = BIT3; // Enable internal pull-up/down resistors P1OUT = BIT3; // Select pull-up mode for P1.3
MSP430 LAUNCHPAD 指导书 1 1 P1IE = BIT3; P1IES = BIT3; P1IFG &= ~BIT3; // P1.3 interrupt enabled // P1.3 Falling edge // P1.3 IFG cleared _EINT(); while(1) // Enable all interrupts // Loop forever, we work with interrupts! // Timer A0 interrupt service routine #pragma vector=timer0_a0_vector interrupt void Timer_A0 (void) P1OUT ^= BIT0; // Toggle P1.0 // Port 1 interrupt service routine #pragma vector=port1_vector interrupt void Port_1(void) P1OUT ^= BIT6; // Toggle P1.6 P1IFG &= ~BIT3; // P1.3 IFG cleared
#include "msp430g2553.h" void main(void) WDTCTL = WDTPW + WDTHOLD; CCTL0 = CCIE; TACTL = TASSEL_2 + MC_1 + ID_3; // SMCLK/8, upmode TACCR0 = 10000; // Stop WDT // CCR0 interrupt enabled // 12.5 Hz P1OUT &= 0x00; // Shut down everything P1DIR &= 0x00; P1DIR = BIT0 + BIT6; // P1.0 and P1.6 pins output P1REN = BIT3; // Enable internal pull-up/down resistors P1OUT = BIT3; / / Select pull-up mode for P1.3 P1IE = BIT3; // P1.3 interrupt enabled P1IES = BIT3; // P1.3 Falling edge P1IFG &= ~BIT3; // P1.3 IFG cleared _EINT(); // Enable all interrupts while(1) // Loop forever, we work with interrupts! // Timer A0 interrupt service routine #pragma vector=timer0_a0_vector interrupt void Timer_A0 (void) P1OUT ^= BIT0; // Toggle P1.0
MSP430 LAUNCHPAD 指导书 1 3 // Port 1 interrupt service routine #pragma vector=port1_vector interrupt void Port_1(void) P1OUT ^= BIT6; // Toggle P1.6 P1IFG &= ~BIT3; // P1.3 IFG cleared
New Project #include "msp430g2553.h" #define TXLED BIT0 #define RXLED BIT6 #define TXD BIT2 #define RXD BIT1 const char string[] = "Hello World\n" ; unsigned int i; //Counter
MSP430 LAUNCHPAD 指导书 1 5 int main(void) WDTCTL = WDTPW + WDTHOLD; // Stop WDT DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P2DIR = 0xFF; // All P2.x outputs P2OUT &= 0x00; // All P2.x reset P1SEL = RXD + TXD ; // P1.1 = RXD, P1.2=TXD P1SEL2 = RXD + TXD ; // P1.1 = RXD, P1.2=TXD P1DIR = RXLED + TXLED; P1OUT &= 0x00;
UCA0CTL1 = UCSSEL_2; // SMCLK UCA0BR0 = 0x08; // 1MHz 115200 UCA0BR1 = 0x00; // 1MHz 115200 UCA0MCTL = UCBRS2 + UCBRS0; // Modulation UCBRSx = 5 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UC0IE = UCA0RXIE; // Enable USCI_A0 RX interrupt EINT(); while (1) 位数分频因子误差 (%) 累积误差 (%) 1 8 +8.5 +8.5 2 9-3.6 +4.9 3 9-3.6 +1.3 4 9-3.6-2.3 5 8 +8.5 +6.2
MSP430 LAUNCHPAD 指导书 1 7 #pragma vector=usciab0rx_vector interrupt void USCI0RX_ISR(void) P1OUT = RXLED; if (UCA0RXBUF == 'a') // 'a' received? i = 0; UC0IE = UCA0TXIE; // Enable USCI_A0 TX interrupt UCA0TXBUF = string[i++]; P1OUT &= ~RXLED; #pragma vector=usciab0tx_vector interrupt void USCI0TX_ISR(void) P1OUT = TXLED; UCA0TXBUF = string[i++]; // TX next character if (i == sizeof(string) - 1) // TX over? UC0IE &= ~UCA0TXIE; // Disable USCI_A0 TX interrupt P1OUT &= ~TXLED;
#include "msp430g2553.h" #define TXLED BIT0 #define RXLED BIT6 #define TXD BIT2 #define RXD BIT1 const char string[] = "Hello World\n" ; unsigned int i; //Counter int main(void) WDTCTL = WDTPW + WDTHOLD; // Stop WDT DCOCTL = 0; // Select lowest DCOx and MODx settings BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P2DIR = 0xFF; // All P2.x outputs P2OUT &= 0x00; // All P2.x reset P1SEL = RXD + TXD ; // P1.1 = RXD, P1.2=TXD P1SEL2 = RXD + TXD ; // P1.1 = RXD, P1.2=TXD P1DIR = RXLED + TXLED; P1OUT &= 0x00; UCA0CTL1 = UCSSEL_2; // SMCLK UCA0BR0 = 0x08; // 1MHz 115200 UCA0BR1 = 0x00; // 1MHz 115200 UCA0MCTL = UCBRS2 + UCBRS0; // Modulation UCBRSx = 5 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UC0IE = UCA0RXIE; // Enable USCI_A0 RX interrupt EINT(); while (1)
MSP430 LAUNCHPAD 指导书 1 9 #pragma vector=usciab0tx_vector interrupt void USCI0TX_ISR(void) P1OUT = TXLED; UCA0TXBUF = string[i++]; // TX next character if (i == sizeof(string) - 1) // TX over? UC0IE &= ~UCA0TXIE; // Disable USCI_A0 TX interrupt P1OUT &= ~TXLED; #pragma vector=usciab0rx_vector interrupt void USCI0RX_ISR(void) P1OUT = RXLED; if (UCA0RXBUF == 'a') // 'a' received? i = 0; UC0IE = UCA0TXIE; // Enable USCI_A0 TX interrupt UCA0TXBUF = string[i++]; P1OUT &= ~RXLED;