GPS北斗ATGM336H-5N模块电路原理图如下:
单片机源程序如下:
- /**********************************************************
- 作者:神秘藏宝室
- 接线说明:
- STM32 GPS
- VCC ------> VCC
- GND ------> GND
- RX1 <------ TXD
- STM32 USB-TTL模块
- GND ------> GND
- TX1 ------> RXD
- ***********************************************************/
- #include "stm32f10x.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- //声明
- void errorLog(int num);
- void parseGpsBuffer(void);
- void printGpsBuffer(void);
- int main(void)
- {
- delay_init();
-
- NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(9600); //串口初始化为9600
- Init_LEDpin();
- LED1 = 1;
-
- clrStruct();
-
- printf("Welcome to use!\r\n");
- printf("ILoveMcu.taobao.com!\r\n");
- while(1)
- {
- parseGpsBuffer();
- printGpsBuffer();
-
-
- }
- }
- void errorLog(int num)
- {
-
- while (1)
- {
- printf("ERROR%d\r\n",num);
- }
- }
- void parseGpsBuffer()
- {
- char *subString;
- char *subStringNext;
- char i = 0;
- if (Save_Data.isGetData)
- {
- Save_Data.isGetData = false;
- printf("**************\r\n");
- printf(Save_Data.GPS_Buffer);
-
- for (i = 0 ; i <= 6 ; i++)
- {
- if (i == 0)
- {
- if ((subString = strstr(Save_Data.GPS_Buffer, ",")) == NULL)
- errorLog(1); //解析错误
- }
- else
- {
- subString++;
- if ((subStringNext = strstr(subString, ",")) != NULL)
- {
- char usefullBuffer[2];
- switch(i)
- {
- case 1:memcpy(Save_Data.UTCTime, subString, subStringNext - subString);break; //获取UTC时间
- case 2:memcpy(usefullBuffer, subString, subStringNext - subString);break; //获取UTC时间
- case 3:memcpy(Save_Data.latitude, subString, subStringNext - subString);break; //获取纬度信息
- case 4:memcpy(Save_Data.N_S, subString, subStringNext - subString);break; //获取N/S
- case 5:memcpy(Save_Data.longitude, subString, subStringNext - subString);break; //获取经度信息
- case 6:memcpy(Save_Data.E_W, subString, subStringNext - subString);break; //获取E/W
- default:break;
- }
- subString = subStringNext;
- Save_Data.isParseData = true;
- if(usefullBuffer[0] == 'A')
- Save_Data.isUsefull = true;
- else if(usefullBuffer[0] == 'V')
- Save_Data.isUsefull = false;
- }
- else
- {
- errorLog(2); //解析错误
- }
- }
- }
- }
- }
- void printGpsBuffer()
- {
- if (Save_Data.isParseData)
- {
- Save_Data.isParseData = false;
-
- printf("Save_Data.UTCTime = ");
- printf(Save_Data.UTCTime);
- printf("\r\n");
- if(Save_Data.isUsefull)
- {
- Save_Data.isUsefull = false;
- printf("Save_Data.latitude = ");
- printf(Save_Data.latitude);
- printf("\r\n");
- printf("Save_Data.N_S = ");
- printf(Save_Data.N_S);
- printf("\r\n");
- printf("Save_Data.longitude = ");
- printf(Save_Data.longitude);
- printf("\r\n");
- printf("Save_Data.E_W = ");
- printf(Save_Data.E_W);
- printf("\r\n");
- }
- else
- {
- printf("GPS DATA is not usefull!\r\n");
- }
-
- }
- }
复制代码
所有资料51hei提供下载:
7.STM32F103例程.rar
(331.52 KB, 下载次数: 314)
ATGM336H-5N原理图.pdf
(120.99 KB, 下载次数: 123)
|