首页 文章

MSP430 UART接收字符串

提问于
浏览
0

使用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
    • 不要使用像 0x94 这样的幻数;他们使代码不可读 . 请改用正确的符号 .

    • 在嵌入式固件中,您无法从 main() 返回 . 你必须跑一个循环,或者去睡觉 .

    • 当单个接收字节可用时,将引发中断 . 中断处理程序不得尝试读取多个字节 .

    • 只有当发送缓冲区为空时才能写入TXBUF . 你必须在每个字节之前等待它 .

相关问题