欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STM32 GPS NE0-7N UBLOX實驗詳解Demo代碼等
[打印本頁]
作者:
劉書源
時間:
2018-11-2 10:00
標題:
STM32 GPS NE0-7N UBLOX實驗詳解Demo代碼等
在學習使用GPS模塊的時候把自己的一些調試經驗和問題記錄下來,方便大家的學習,也希望大家指出不足。
1.硬件實現平臺介紹,使用STM32F103RBT6作為核心板,使用GPS NE0-7N UBLOX模塊,串口通信模塊使用CH341串口芯片。
2.方法介紹:gps模塊采用串口通信,首先要先了解GPS的通信協議。GPS模塊通過串口給我們發的數據GPRMC格式的,他包括了定位信息,主要是經緯度,UTC(國際標準時間)時間,等等關鍵信息,真頭由符號“$”起始。
因為GPS使用串口通信,首先必不可少的是串口通信程序驅動的編寫,根據gps模塊的數據手冊表明,串口通信的波特率為9600,其他的一些串口通信的格式在usart.c中的My_usart2_Init函數中均有體現。
3.在main中的主程序,while循環中主要做了兩件事,第一就是對GPS模塊發來的幀數據進行的解析,然后把解析出的數據存儲在自己定義的結構體中。
第二就是把這個解析后的數據進行串口的一個打印,這樣可以通過串口助手觀察當先的經緯度等信息。
調試注意,由于GPS模塊第一次的定位搜星的事件較長,而且必須!!是必須在室外進行,也就時模塊必須置于露天位置才能進行有效的定位,如果在室內實現的話 是做無用功的。 下載我把代碼上傳,方便大家學習,這個工程還包括了 一些LCD12854-5的驅動程序,還有一些I2C驅動指南針的程序,大家也可進行一下借鑒。
附件為code還有串口芯片ch341的串口驅動,方便大家調試我就一次都傳上去了。
單片機源程序如下:
#include "stm32f10x.h"
#include "usart.h"
#include "lcd.h"
#include "led.h"
#include "math.h"
#include "string.h"
/************************************************
手持氣象臺項目
************************************************/
extern QMC_BUF[8];
void errorLog(int num);
void parseGpsBuffer(void);
void printGpsBuffer(void);
int main(void)
{
int X = 0,Y = 0,Z = 0;
double Angle_XY=0,Angle_XZ=0,Angle_YZ=0;
//設置中斷優先級管理
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
My_Usart1_Init(115200);
My_Usart2_Init(9600);
delay_init();
GPIO_Configout(); //初始化LCD OCM12864-5
delay_ms(200);
Init_LEDpin();
LED1 = 1;
//Lcd_Init();
//QMC_5883_Init();
delay_ms(300);
while(1)
{
#if 0
Multiple_Read_Qmc5883(); //連續讀取三軸角度數據,存儲在buf中
//顯示XY軸
X = QMC_BUF[1] << 8 | QMC_BUF[0];
Y = QMC_BUF[3] << 8 | QMC_BUF[2];
Z = QMC_BUF[5] << 8 | QMC_BUF[4];
if(X > 0x7fff)
X -= 0xffff;
if(Y > 0x7fff)
Y -= 0xffff;
if(Z > 0x7fff)
Z -= 0Xffff;
Angle_XY= atan2((double)Y,(double)X) * (180 / 3.14159265) + 180; //計算XY平面角度
disp1();
delay_ms(400);
delay_ms(400);
delay_ms(400);
lat_disp(0xff, 0x00);
delay_ms(400);
delay_ms(400);
delay_ms(400);
disp3();
delay_ms(400);
delay_ms(400);
delay_ms(400);
lat_disp(0x33, 0x33);
delay_ms(400);
delay_ms(400);
delay_ms(400);
#else
parseGpsBuffer();
printGpsBuffer();
#endif
}
}
void errorLog(int num)
{
while (1)
{
printf("ERROR%d\r\n",num);
}
}
void parseGpsBuffer(void)
{
char *subString;
char *subStringNext;
char i = 0;
if (Save_Data.isGetData)
{
Save_Data.isGetData = false;
printf("**************\r\n");
printf(Save_Data.GPS_Buffer);
//$GPRMC,072344.00,A,4544.41944,N,12637.19170,E,0.102,,011118,,,A*7F
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(void)
{
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提供下載:
CH340驅動(USB串口驅動)_XP_WIN7共用.rar
(324.24 KB, 下載次數: 5)
2018-11-2 09:58 上傳
點擊文件名下載附件
串口驅動
下載積分: 黑幣 -5
hand_held.rar
(1005.84 KB, 下載次數: 29)
2018-11-2 13:14 上傳
點擊文件名下載附件
code
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1