0
我的UART配置爲4800baud速率,我無法使用下面粘貼的UART代碼接收NMEA語句(GPS評估板)。單獨的GPS +終端和UART +終端工作正常。但GPS + UART,我永遠不能接收任何語句 GPS默認buad率是4800UART無法接收GPS NMEA語句
任何想法,我哪裏出錯了UART?
/**
* uart default at 4800 ACLK= 32.768KHz
* @4800 bps
*/
void UART_default(void){
P3SEL = BIT3+BIT4;
UCA0CTL1 |= UCSWRST;
UCA0CTL1 |= UCSSEL_1;
UCA0BR0 = 0x06;
UCA0BR1 = 0x00;
UCA0MCTL |= UCBRS_6+UCBRF_0;
UCA0CTL1 &= ~UCSWRST;
UCA0IE |= UCRXIE;
}
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
volatile char byte;
switch(__even_in_range(UCA0IV,4))
{
case 0:break; // Vector 0 - no interrupt
case 2:
byte= UCA0RXBUF;
if (byte == '\r') {
push_char(byte); // At end of Data transmission
ptr = 0;
}
else{
push_char(byte);
ptr++;
}
break;
case 4:break;
default: break;
}
}
一些問題可以縮小問題的可能性:您是否驗證過GPS正在發送數據? RX線上的邏輯分析儀是否看到有效的4800bps數據?你能接收數據輪詢UART而不是使用中斷嗎? –
我也會問你怎麼知道你沒有收到這些信息 - 你是如何測試的,你是如何處理這些信息的? push_char()做什麼以及ptr如何在代碼的其餘部分中使用? – tinman