c언어 질문입니다.

글쓴이: 익명 사용자 / 작성시간: 화, 2017/10/31 - 4:06오후
while(1) { while(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET);//polling 방식 전송이 완료되면 usart_flag_txe는 set(즉, 1)이 된다. set이 된 후에는 reset을 해줘야 한다. ch = USART_ReceiveData(USART3); int i=0; if(ch=='$'){ GPS_DATA[0]='$'; GPScnt=1; GPSflag=0; } else{ GPS_DATA[GPScnt]=ch; if(GPS_DATA[GPScnt]==0x0a){ // 위에서 ETX = 0x0A 라고 했으므로 조건을 걸어버린다. GPScnt1=GPScnt; // 조건이 성립되면 COUNT 된 값을 GPScnt1으로 피신시킨다. if(strncmp(NAME,GPS_DATA,6)==0) { // 이 부분은 NAME = "$GPGGA" 비교한 것이다. memcpy(GPS_DATA1,GPS_DATA,GPScnt1); // 메모리 복사 GPS_cut= strtok(GPS_DATA1,","); // STRTOK 구간 나누는 함수 while (GPS_cut!= null) // 자른 문자열이 나오지 않을 때까지 반복 { GPS_cut = strtok(null, ","); // 다음 문자열을 잘라서 포인터를 반환 ++i; GPS_Dcut[i]=GPS_cut; } GPSflag=1; unsigned char HH,MM,SS; // 시, 분, 초 저장 변수 unsigned long Zulu_time; // GPS_TIEM(USA) 저장 변수 Zulu_time=atol(GPS_Dcut[1]); // 문자열을 LONG 형 으로 변환 후 저장 =>" 035155.00 " HH=((Zulu_time/10000)+9); // 만으로 나눈뒤 +9 로 한국 시 표현 MM=((Zulu_time%10000)/100); // 만 나머지 값에 100 나누어 준다. 분 표현 SS=((Zulu_time%10000)%100); // 만 나머지 값에 백 나머지 값으로 초 표현 if(HH>23) HH-=24; // 한국은 +9시간 더해 주므로 오버되는 시간을 정정한다. printf("kkkkk%02d:%02d:%02d \n\r",HH,MM,SS); // PRINTF 로 시 분 초 를 표현한다. 터미널 z } if(strncmp(NAME2,GPS_DATA,6)==0) { // 이 부분은 NAME = "$GPRMC" 비교한 것이다. memmove(GPS_DATA3,GPS_DATA,GPScnt1); GPS_cut= strtok(GPS_DATA3,","); while (GPS_cut!= null) // 자른 문자열이 나오지 않을 때까지 반복 { // printf("%s\n\n",GPS_cut); GPS_cut = strtok(null, ","); // 다음 문자열을 잘라서 포인터를 반환 ++i; GPS_Dcut2[i]=GPS_cut; } double speed; // 속도 저장 변수 double Knots; // GPS_speed 저 Knots = atof(GPS_Dcut2[7]); //문자열을 DOUBLE 형 으로 변환후 저장 => " 0.224 " speed = Knots * 1.8; // 속도 계산을 위하여 1.8을 곱한다. printf("kkkkjjjjjj%0.02lf\n\r",speed); } } GPScnt++; } } }
void main(void) { RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration(); TIM4_Configuration(); RCC_GetClocksFreq(&rcc_clocks); USART1_Init(); USART3_Init(); draw_number(0,0,1); draw_number(4,0,1); draw_number(8,0,2); draw_number(12,0,0); while(1) { dot_display(); Time(); } }
전체 코드중 문제있는 부분만 올려봤습니다.
코드에서 while(1)문이 2번사용되어 dot와 gps가 동시에 작동되지않네요ㅣ,,,,
방법좀알려주세요ㅜ
Forums:
댓글 달기