我正在尝试将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
}
答案 0 :(得分:0)
UCBUSY标志不是很有用,不能像这样使用。
UCRXIFG表示已接收到一个字节:
while (!(UCA1IFG & UCRXIFG)) ;
return UCA1RXBUF;
UCTXIFG表示可以发送一个字节:
while (!(UCA1IFG & UCTXIFG)) ;
UCA1TXBUF = a;