【问题标题】:MSP430 UART receiving a stringMSP430 UART 接收字符串
【发布时间】:2016-04-12 15:09:11
【问题描述】:

使用 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];
      }


}

【问题讨论】:

    标签: uart msp430


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

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多