2017-02-20 5 views
0

Я пытаюсь использовать MSPF5529 с моим mac. Я загрузил студию компоновщика кода и могу легко получить доступ к чипу, а также мигающим огням и любому другому приложению, которое мне нужно.Использование MSPf5529 с UART возвращает интервал cedilla в Mac

Целью является то, что я печатаю сообщение с использованием UART через последовательную связь на моем Mac. В настоящее время я использую приложение «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

Флаг UCBUSY не очень полезен и не может быть использован как этот.

Этот байт получен обозначается UCRXIFG:

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

То, что байт может быть отправлено указывается UCTXIFG:

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

Спасибо! К сожалению, мой код по-прежнему не печатает ничего полезного. Я не понимаю, почему он не работает. По какой-то причине он продолжает печатать эту строку: · í ··· Ä˛Ì – Kelsey

+0

Возможно, неверная скорость передачи; часы не очень точны без кристалла. –

+0

Вы были правы, мой бод был неправильным. Как только я его исправил, он решил проблему. Спасибо за помощь! К сожалению, моя репутация здесь настолько плохая, что я не могу голосовать за вас, но поверьте мне, если бы я мог :) – Kelsey

Смежные вопросы