欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STM32f4的GPS定位源碼程序(模塊型號:UBLOX-6M)
[打印本頁]
作者:
DHR.QAQ
時間:
2019-8-8 14:29
標(biāo)題:
STM32f4的GPS定位源碼程序(模塊型號:UBLOX-6M)
最近自己調(diào)試了以下GPS模塊,代碼實現(xiàn)經(jīng)緯度顯示、UTC日期及時間、高度、速度、衛(wèi)星數(shù),這些數(shù)據(jù)均由串口打印出來。下面是部分參考代碼:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "usmart.h"
#include "usart2.h"
#include "string.h"
#include "gps.h"
u8 USART5_TX_BUF[USART2_MAX_RECV_LEN]; //串口1,發(fā)送緩存區(qū)
nmea_msg gpsx; //GPS信息
__align(4) u8 dtbuf[50]; //打印緩存器
const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "}; //fix mode字符串
//顯示GPS定位信息
void Gps_Msg_Show(void)
{
float tp;
tp=gpsx.longitude;
printf("Longitude:%.5f %1c \r\n ",tp/=100000,gpsx.ewhemi); //得到經(jīng)度字符串
tp=gpsx.latitude;
printf("Latitude:%.5f %1c \r\n ",tp/=100000,gpsx.nshemi); //得到緯度字符串
tp=gpsx.altitude;
printf("Altitude:%.1fm \r\n ",tp/=10); //得到高度字符串
tp=gpsx.speed;
printf("Speed:%.3fkm/h \r\n ",tp/=1000); //得到速度字符串
if(gpsx.fixmode<=3) //定位狀態(tài)
{
printf("Fix Mode:%s \r\n",fixmode_tbl[gpsx.fixmode]);
}
printf("Valid satellite:%02d \r\n",gpsx.posslnum); //用于定位的衛(wèi)星數(shù)
printf("Visible satellite:%02d \r\n",gpsx.svnum%100); //可見衛(wèi)星數(shù)
printf("UTC Date:%04d/%02d/%02d \r\n ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date); //顯示UTC日期
//printf("year2:%d\r\n",gpsx.utc.year);
printf("UTC Time:%02d:%02d:%02d \r\n ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec); //顯示UTC時間
}
int main(void)
{
u16 i,rxlen;
u16 lenx;
u8 upload=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級分組2
delay_init(168); //初始化延時函數(shù)
uart5_init(115200); //初始化串口波特率為115200
usart2_init(9600); //初始化串口3波特率為9600
usmart_dev.init(84); //初始化USMART
usmart_dev.init(72); //初始化USMART
if(Ublox_Cfg_Rate(1000,1)!=0) //設(shè)置定位信息更新速度為1000ms,順便判斷GPS模塊是否在位.
{
printf("NEO-6M Setting...\r\n");
while((Ublox_Cfg_Rate(1000,1)!=0)) //持續(xù)判斷,直到可以檢查到NEO-6M,且數(shù)據(jù)保存成功
{
usart2_init(9600); //初始化串口3波特率為9600(EEPROM沒有保存數(shù)據(jù)的時候,波特率為9600.)
Ublox_Cfg_Prt(38400); //重新設(shè)置模塊的波特率為38400
Ublox_Cfg_Tp(1000000,100000,1); //設(shè)置PPS為1秒鐘輸出1次,脈沖寬度為100ms
Ublox_Cfg_Cfg_Save(); //保存配置
printf("檢測設(shè)備\r\n");
}
}
while(1)
{
delay_ms(1);
if(USART2_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
{
printf("GPS_Res_sucess...\r\n");
rxlen=USART2_RX_STA&0X7FFF; //得到數(shù)據(jù)長度
for(i=0;i<rxlen;i++)USART5_TX_BUF[i]=USART2_RX_BUF[i];
USART2_RX_STA=0; //啟動下一次接收
USART5_TX_BUF[i]=0; //自動添加結(jié)束符
GPS_Analysis(&gpsx,(u8*)USART5_TX_BUF);//分析字符串
Gps_Msg_Show(); //顯示信息
if(upload)printf("\r\n%s\r\n",USART5_TX_BUF);//發(fā)送接收到的數(shù)據(jù)到串口1
}
upload=!upload;
if(upload)printf("NMEA Data Upload:ON ");
else printf("NMEA Data Upload:OFF");
delay_ms(1000);
if((lenx%500)==0)
lenx++;
}
}
復(fù)制代碼
GPS.7z
(343.7 KB, 下載次數(shù): 82)
2019-8-8 17:47 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
kzzk
時間:
2023-4-21 10:44
好復(fù)雜啊
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1