关于MSP430G2553 串口无法接受问题 请大家帮忙看一下

关于MSP430G2553 串口无法接受问题 请大家帮忙看一下

此问题尚无答案
All Replies
  • 秀才120分

    首先  我用的 是官方的例程    并且板子上有关于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++];
      }
    }
    
  • 状元44045分

    你用的什么板子?自己设计的板子还是官网红色的MSP-EXP430G2 LaunchPad?

    昵称:灰小子

    qq:1358611172

  • 秀才120分

    就是官网那个红色的那个板子

  • 秀才120分

    问题 我自己发现了 我也不知道为什么  只要我打开串口     然后狂点串口的开关  狂点几次就好了    我也不知道 为什么   以为是串口软件的问题 重新换了一个 还是 那样 
    有那个大佬知道为什么吗  要崩溃了  

  • 状元44045分

    有条件的话换台电脑或者换一块板子试试吧,看是电脑的问题还是开发板硬件的问题

    昵称:灰小子

    qq:1358611172

  • 秀才120分

    请问这个G2553如果用外部晶振32768的那个 串口最大传输速率是不是不能大于9600啊            如果使用内部的DCO   那串口的波特率可以大于9600吗

  • 状元44045分

    用外部晶振32768的时候,波特率9600误码率已经比较高了。

    用内部dco 16MHz的时候可以做到波特率460800

    详细情况可以参考http://www.ti.com.cn/cn/lit/ug/slau144j/slau144j.pdf第424页

    昵称:灰小子

    qq:1358611172