[英]Stopping the program when reading data from UART
我有这个简单的代码:
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);
}
知道为什么程序停止了吗?
即使您当前的方法可行,您也容易丢失UART数据。 您实际上应该使用中断而不是轮询。 让中断填充足够大的缓冲区并在完成后设置标志条件。 然后,让程序处理缓冲区。
干杯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.