【发布时间】:2016-04-08 11:23:11
【问题描述】:
我正在使用带有 GPS 模块的 ATMega32 在 LCD 显示屏上显示一些数据(经度和纬度)。 GPS 模块每秒以 9600 bps 发送一串数据。 该字符串是一个 NMEA 语句,以 $ 符号开头,我使用该字符来同步接收器 (AVR UART)。
这是我使用的代码:
// GPS.h
void GPS_read(char *sentence)
{
while ((*sentence = USART_receive()) != '$')
;
USART_receive_string(++sentence);
}
// USART.h
unsigned char USART_receive(void)
{
while (!(UCSRA & (1<<RXC)))
;
return UDR;
}
void USART_receive_string(char *string)
{
do
{
*string = USART_receive();
} while (*string++ != '\n'); // NMEA sentences are <CR><LF> terminated
*string = '\0';
}
我将一个 char 数组传递给 GPS_read,然后在 LCD 上显示该字符串。 根据我选择显示数据的时间,我会得到一些由 $G 和 \n 字符组成的垃圾数据。
我在这里犯了一些错误,但是已经两天了,我无法弄清楚我做错了什么(我是一个新手嵌入式程序员:))
请帮忙! 谢谢 卢卡
【问题讨论】: