MSP430 UART接收字符串

时间:2016-04-12 15:09:12

标签: uart msp430

使用MSP430F6736A嵌入式编程。用Code Composer Studio编写的代码。

我想发送一些字符串,例如一些数字(26),然后将其发送回屏幕上的PC。现在,我只得到了奇怪的角色。我应该改进什么?

 int main(void) {

    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer

    P2SEL |= BIT2 + BIT3;

    UCA2CTLW0 |= UCSWRST; //
    UCA2CTLW0 |= UCSSEL_1 ; // ACLK

    UCA2BR0 = 0x1B;    // 1200 Baud   32768 / 1200 = 27   0x1B
    UCA2BR1 = 0x00; // 1200 Baud
    UCA2MCTLW |= 0x94;

    UCA2CTLW0 &= ~UCSWRST; //

    UCA2IE |= UCRXIE;
    UCA2IFG = 0;

    __bis_SR_register(GIE); 

}

#pragma vector=USCI_A2_VECTOR
__interrupt void    Recieve_ISR(void)
{
    static char sprava[] = {""};
    int j = 0;
    int i = 0;

    for ( i = 0 ; i < sizeof sprava; i++)
    {
        sprava[i] = UCA2RXBUF;

     }

    UCA2TXBUF  =  UCA2RXBUF;
      for ( j = 0 ; j < sizeof sprava+1; j++)
      {
          UCA2TXBUF = sprava[j];
      }


}

1 个答案:

答案 0 :(得分:0)

  • 不要使用像0x94这样的幻数;他们使代码不可读。改为使用正确的符号。
  • 在嵌入式固件中,您无法从main()返回。你必须跑一个循环,或者去睡觉。
  • 当单个接收字节可用时,将引发中断。中断处理程序不得尝试读取多个字节。
  • 只有当发送缓冲区为空时才能写入TXBUF。你必须在每个字节之前等待它。