将MSPf5529与UART一起使用可在Mac中返回间距cedilla

时间:2017-02-20 17:52:20

标签: msp430

我正在尝试将MSPF5529与我的mac一起使用。我已经下载了代码编辑器工作室,可以轻松访问芯片以及闪烁灯和我需要的任何其他应用程序。

我的目标是在Mac上通过串行通信使用UART打印消息。我目前正在使用一个名为“goSerial”的应用程序来与芯片通信。我的下面的代码初始化UART,接受一个字符,然后它应该打印出一个字符,然后闪烁灯光。然而,相反,代码接收字符,并打印出一个奇怪的符号,称为间距cedilla,十六进制值为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

  }

1 个答案:

答案 0 :(得分:0)

UCBUSY标志不是很有用,不能像这样使用。

UCRXIFG表示已接收到一个字节:

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

UCTXIFG表示可以发送一个字节:

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