标题:
GPS北斗ATGM336H-5N模块解析后STM32串口输出例程+电路图
[打印本页]
作者:
szyinbo
时间:
2018-12-16 17:27
标题:
GPS北斗ATGM336H-5N模块解析后STM32串口输出例程+电路图
GPS北斗ATGM336H-5N模块电路原理图如下:
0.png
(58.98 KB, 下载次数: 176)
下载附件
2018-12-17 04:06 上传
单片机源程序如下:
/**********************************************************
作者:神秘藏宝室
接线说明:
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)
2018-12-17 04:07 上传
点击文件名下载附件
下载积分: 黑币 -5
ATGM336H-5N原理图.pdf
(120.99 KB, 下载次数: 123)
2018-12-16 17:25 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
蓝天空1995
时间:
2019-6-20 17:07
您好,我想问下,获取到的UTC时间是什么格式的呀?我想写一个if语句,如果UTC时间处于17:00:00到24:00:00,就执行为真的语句,谢谢您!
作者:
995879859
时间:
2019-7-15 16:20
好东西,正准备看看定位方面的东西的
作者:
rfcideye
时间:
2019-12-23 18:57
我想问下tx rx pps输出形式
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1