首先 我用的 是官方的例程 并且板子上有关于RXD 和TXD的跳线帽也已经改成了HW模式 但是进不了串口中断啊 也并不是所有的时候都进不去 可能有某一次收发就挺正常的 我以为是板子和电脑或者串口软件 的问题 可是在我换了一个板子和电脑还有串口软件 时候 还是这样 实在不知道是怎么回事了 求各位帮帮忙呀 有可能是哪里的问题啊 拜谢!!!下面是官方的代码
//****************************************************************************** // MSP430G2xx3 Demo - USCI_A0, Ultra-Low Pwr UART 9600 String, 32kHz ACLK // // Description: This program demonstrates a full-duplex 9600-baud UART using // USCI_A0 and a 32kHz crystal. The program will wait in LPM3, and will // respond to a received 'u' character using 8N1 protocol. The response will // be the string 'Hello World'. // ACLK = BRCLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCO ~1.2MHz // Baud rate divider with 32768Hz XTAL @9600 = 32768Hz/9600 = 3.41 //* An external watch crystal is required on XIN XOUT for ACLK *// // // MSP430G2xx3 // ----------------- // /|\| XIN|- // | | | 32kHz // --|RST XOUT|- // | | // | P1.2/UCA0TXD|------------> // | | 9600 - 8N1 // | P1.1/UCA0RXD|<------------ // // D. Dang // Texas Instruments Inc. // February 2011 // Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10 //****************************************************************************** #include <msp430.h> const char string1[] = { "Hello World\r\n" }; unsigned int i; int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR = 0xFF; // All P1.x outputs P1OUT = 0; // All P1.x reset P2DIR = 0xFF; // All P2.x outputs P2OUT = 0; // All P2.x reset P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD P3DIR = 0xFF; // All P3.x outputs P3OUT = 0; // All P3.x reset UCA0CTL1 |= UCSSEL_1; // CLK = ACLK UCA0BR0 = 0x03; // 32kHz/9600 = 3.41 UCA0BR1 = 0x00; // UCA0MCTL = UCBRS1 + UCBRS0; // Modulation UCBRSx = 3 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt __bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ int until Byte RXed } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=USCIAB0TX_VECTOR __interrupt void USCI0TX_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(USCIAB0TX_VECTOR))) USCI0TX_ISR (void) #else #error Compiler not supported! #endif { UCA0TXBUF = string1[i++]; // TX next character if (i == sizeof string1 - 1) // TX over? IE2 &= ~UCA0TXIE; // Disable USCI_A0 TX interrupt } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(USCIAB0RX_VECTOR))) USCI0RX_ISR (void) #else #error Compiler not supported! #endif { if (UCA0RXBUF == 'u') // 'u' received? { i = 0; P1OUT ^= 0x01; IE2 |= UCA0TXIE; // Enable USCI_A0 TX interrupt UCA0TXBUF = string1[i++]; } }