我有一个仅在启用GPS的情况下才能运行的程序。 有一段时间(1)仍然调用此函数。
gps_get_nmea(nmea_in, sizeof(nmea_in));
此功能用于从' $'中检索UART中的数据。到' \ n'
Gps_get_nmea函数在这里:
void gps_get_nmea(char* buf, uint8_t bufSize){
char inChar;
uint8_t curSize = 0;
do {
inChar = gps_get_char();
} while(inChar != '$');
while( inChar != '\n' && curSize < bufSize - 2) {
*buf++ = inChar;
curSize++;
inChar = gps_get_char();
}
*buf++ = '\n';
*buf = '\0';
}
在这里函数gps_get_char():
char gps_get_char(){
unsigned int in = 0;
do {
in = uart1_getc();
} while((in & UART_NO_DATA) || (in & UART_BUFFER_OVERFLOW));
return((char) in);
}
如果GPS已关闭,整个程序将停止。 问题出现在那些循环中......做什么&#39;
但我不知道如何解决这个问题。
那么我该怎样做才能以&#39; $&#39;开头的方式获取UART数据?并以&#39; \ n&#39;结尾???
To communicate with the UART using the library from Peter Fleury.