GPS.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**********************************************************************************
  2. * File Name: GPS.c
  3. * Function Describe:device for GPS
  4. * Relate Module:
  5. * Explain: the GPS should be using ublox
  6. * Writer: ShiLiangWen
  7. * Date: 2015.1.26
  8. ***********************************************************************************/
  9. #include "includes.h"
  10. /**********************************************************************************
  11. GPSInit
  12. ***********************************************************************************/
  13. int GPSInit(void)
  14. {
  15. GPIO_InitTypeDef GPIO_InitStructure;
  16. //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE);
  17. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  18. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  19. GPIO_InitStructure.GPIO_Pin = GPS_PWREN_PIN;
  20. GPIO_Init(GPS_PWREN_PORT, &GPIO_InitStructure);
  21. SlwTrace(INF,"GPSInit...\r\n");
  22. GPS_PWREN_HIGH;
  23. sutGpsInfo.isGpsWork=0;
  24. sutGpsInfo.isGpsValid=0;
  25. return 0;
  26. }
  27. /************************************
  28. GPSGetGPRMC
  29. 从NEMA数据流中提取$GPRMC行并返回
  30. ************************************/
  31. char* GPSGetGPRMC(char *msg)
  32. {
  33. /************************************
  34. $GPGGA,235957.003,,,,,0,0,,,M,,M,,*44
  35. $GPGSA,A,1,,,,,,,,,,,,,,,*1E
  36. $GPGSV,1,1,00*79
  37. $GPRMC,235957.003,V,,,,,0.00,0.00,050180,,,N*4D
  38. ************************************/
  39. char *p=msg;
  40. char ch1,ch2;
  41. ch1=*p;
  42. while(ch1){
  43. ch2=ch1;
  44. ch1=*p++;
  45. if(ch2==0xD && ch1==0x0A){
  46. if(p[0]=='$' && p[3]=='R' && p[5]=='C'){ //$GPRMC
  47. return p;
  48. }
  49. }
  50. }
  51. return 0;
  52. }
  53. /***********************************************************************************/