【发布时间】:2015-04-29 12:19:14
【问题描述】:
我有这个简单的代码:
while(1){
char dolar = gps_get_char();//read char from uart
if ((dolar == '$') || (receive_dolar == 1)){
receive_dolar = 1;
gps_get_nmea(nmea_in, sizeof(nmea_in));
rozloz_nmea();
receive_dolar = 0;
}
/*control running program*/
if (tl2 == 1){ //flag button from interrupt
LCD ^= (1 << LED_ON_OFF);
tl2 = 0;
}
}
但是当GPS关闭时,程序就停在这里了:
char dolar = gps_get_char();//read char from uart
函数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);
}
知道程序停止的原因吗?
【问题讨论】:
-
因为
!(in & UART_NO_DATA) || (in & UART_BUFFER_OVERFLOW)在你遇到的情况下始终为真。 你尝试过什么? -
我想检查数据是否可用。抱歉,这是 goog 条件:while((in & UART_NO_DATA) || (in & UART_BUFFER_OVERFLOW));
-
你对你的问题做了什么尝试?您是否尝试过使用调试器?你有没有尝试过?
-
不幸的是。我没有自己的调试器。 :(
-
没有调试器的程序员有点像没有车的出租车司机......如果你没有调试器,你怎么期望完成任何工作?