2017-02-20 12 views
0

私のMacでMSPF5529を使用しようとしています。私はコード・コンポーザーのスタジオをダウンロードして、チップにアクセスするだけでなく、点滅ライトや必要な他のアプリケーションに簡単にアクセスできます。UARTでMSPf5529を使用すると、Macでスペースセディラが返される

私の目標は、Macでシリアル通信を使用してUARTを使用してメッセージを印刷することです。私は現在、チップと通信するために "goSerial"と呼ばれるアプリケーションを使用しています。以下のコードは、UARTを初期化し、1文字を取り込み、文字を印刷してから明かりを点滅させることになっています。しかし、代わりに、コードは文字を取り込み、16進値0xFCの奇妙な記号(スペーシングセディラ)を出力してから、点滅させます。

この記号は、MSP430バッファに入れた文字に関係なく表示されます。

マイコードは以下のとおりです。誰もこの問題を以前に持っていましたか?これをどうすれば解決できますか?

void Init_UART(void); 
void OUTA_UART(unsigned char A); 
unsigned char INCHAR_UART(void); 
#include "msp430f5529.h" 
#include "stdio.h" 


int main(void){ 
volatile unsigned char a; 
volatile unsigned int i; 
WDTCTL = WDTPW + WDTHOLD; 
Init_UART(); 
a=INCHAR_UART(); 

a=INCHAR_UART(); 
OUTA_UART(a); 
// go blink the light to indicate code is running 
P1DIR |= 0x01; 
for (;;){ 
P1OUT ^= 0x01; i = 10000; 
do i--; 
while (i != 0); } 

} 




void OUTA_UART(unsigned char A){ 
while ((UCA1STAT&UCBUSY)); 
// send the data to the transmit buffer 
UCA1TXBUF =A; 
} 



unsigned char INCHAR_UART(void){ 
while ((UCA1STAT&UCBUSY) == 0); 
// go get the char from the receive buffer 
return (UCA1RXBUF); 
} 

void Init_UART(void){ 
    P4SEL |= 0x30;  // Port 4.4 and port 4.5 controls the transfer 
    UCA1CTL1|= UCSWRST; // Put state machine in reset 
    UCA1CTL1|= UCSSEL_1;  //Choose 32765Hz 
    UCA0BR0=3;    // Baud rate = 9600 
    UCA0BR1=0;    // Choose 32765 hz 
    UCA1MCTL=0x06;   // Modulation UCBRSx=3, UCBFx = 0 
    UCA1CTL1 &= ~UCSWRST;  // Put USCI in operation mode 

    } 

答えて

0

UCBUSYフラグはあまり役に立ちません。このように使用することはできません。バイトが受信されたこと

はUCRXIFGで示されます。バイトが送信できることを

while (!(UCA1IFG & UCRXIFG)) ; 
return UCA1RXBUF; 

UCTXIFGで示されます。

while (!(UCA1IFG & UCTXIFG)) ; 
UCA1TXBUF = a; 
+0

ありがとう!残念なことに、私のコードはまだ有用なものを印刷しません。なぜそれが動作していないのか分かりません。 何らかの理由で、次の文字列を印刷し続けます。 ・í...Ä²Ì – Kelsey

+0

おそらく間違ったボーレートです。クリスタルなしでは時計はあまり正確ではありません。 –

+0

あなたは正しいです、私のボーレートは間違っていました。私はそれを修正した後、問題を解決しました。助けてくれてありがとう!残念なことに私の評判はとても悪いので投票できませんが、私を信じてください。 – Kelsey

関連する問題