У меня есть этот простой код:
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)
всегда верно в случае, с которым вы сталкиваетесь. Что вы пробовали? - person Eregrith   schedule 29.04.2015