2016-04-12 18 views
0

埋め込みプログラミングMSP430F6736Aを使用しています。 Code Composer Studioで書かれたコード。MSP430 UARTが文字列を受信して​​います

たとえば、数字(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]; 
     } 


} 

答えて

0
  • 0x94のような魔法の数字を使用しないでください。コードを読むことができなくなります。代わりに適切なシンボルを使用してください。
  • 埋め込みファームウェアでは、main()から戻ることはできません。ループを実行するか、スリープ状態にする必要があります。
  • 単一の受信バイトが使用可能なときに割り込みが発生します。割り込みハンドラは、複数のバイトを読み取ろうとしてはいけません。
  • TXBUFは、送信バッファが空の場合にのみ書き込むことができます。すべてのバイトの前にそれを待たなければなりません。
関連する問題