发新帖我要提问
12
返回列表
打印
[应用相关]

stm32+neo6m GPS模块定位系统(转载)

[复制链接]
楼主: guanjiaer
手机看帖
扫描二维码
随时随地手机跟帖
21
guanjiaer|  楼主 | 2019-7-5 08:54 | 只看该作者 回帖奖励 |倒序浏览
u8 GPS_Check(u8 *buff)
{
        u8 *p_start,*p_process;
        //,*p_end;
//        u8 temp[500];
        u8 res=0;
//        u16 cnt=0,i=0;
//        MyPrintf("检查GPS数据\r\n");
        p_start =(u8*)strstr((const char*)buff,"$GPRMC");
        if(p_start!=NULL)                                //找不到地理位置信息,返回无效
        {
                        if(strstr((const char*)p_start,"$GPVTG")!=NULL && strstr((const char*)p_start,"$GPGGA")!=NULL)
                               
                                        if(strstr((const char*)p_start,"$GPGSA")!=NULL && strstr((const char*)p_start,"$GPGSV")!=NULL)
                                               
                                                if((p_process=(u8*)strstr((const char*)p_start,"$GPGLL"))!=NULL)
                                                {       
//                                                                MyPrintf("检查无效字符\r\n");
                                                                if((strstr((const char*)p_process,"V"))!=NULL)        res=0xFF;
                                                }
        }else        res=1;                                       
       
//        MyPrintf("GPS Check Result=%d\r\n",res);
        return res;                                                                                //返回无效定位数据
}

使用特权

评论回复
22
guanjiaer|  楼主 | 2019-7-5 08:54 | 只看该作者
H文件:



#ifndef _NEO_6M_
                        #define _NEO_6M_

                        #include "global.h"
                       
                        //UBLOX NEO-6M 配置(清除,保存,加载等)结构体
                        __packed typedef struct  
                        {                                                                                    
                                unsigned short header;                                        //cfg header,固定为0X62B5(小端模式)
                                unsigned short id;                                                //CFG CFG ID:0X0906 (小端模式)
                                unsigned short dlength;                                //数据长度 12/13
                                unsigned int clearmask;                                //子区域清除掩码(1有效)
                                unsigned int savemask;                                //子区域保存掩码
                                unsigned int loadmask;                                //子区域加载掩码
                                unsigned char devicemask;                           //目标器件选择掩码        b0:BK RAM;b1:FLASH;b2,EEPROM;b4,SPI FLASH
                                unsigned char  cka;                                         //校验CK_A                                                                   
                                unsigned char  ckb;                                         //校验CK_B                                                                  
                        }_ublox_cfg_cfg;
                       
                        //UBLOX NEO-6M UART端口设置结构体
                        __packed typedef struct  
                        {                                                                                    
                                unsigned short header;                                        //cfg header,固定为0X62B5(小端模式)
                                unsigned short id;                                                //CFG PRT ID:0X0006 (小端模式)
                                unsigned short dlength;                                //数据长度 20
                                unsigned char  portid;                                        //端口号,0=IIC;1=UART1;2=UART2;3=USB;4=SPI;
                                unsigned char  reserved;                                //保留,设置为0
                                unsigned short txready;                                //TX Ready引脚设置,默认为0
                                unsigned int mode;                                        //串口工作模式设置,奇偶校验,停止位,字节长度等的设置.
                                unsigned int baudrate;                                //波特率设置
                                unsigned short inprotomask;                         //输入协议激活屏蔽位  默认设置为0X07 0X00即可.
                                unsigned short outprotomask;                         //输出协议激活屏蔽位  默认设置为0X07 0X00即可.
                                unsigned short reserved4;                                 //保留,设置为0
                                unsigned short reserved5;                                 //保留,设置为0
                                unsigned char  cka;                                         //校验CK_A                                                                   
                                unsigned char  ckb;                                    //校验CK_B                                                                  
                        }_ublox_cfg_prt;
                       
                        //UBLOX NEO-6M 刷新速率配置结构体
                        __packed typedef struct  
                        {                                                                                    
                                unsigned short header;                                        //cfg header,固定为0X62B5(小端模式)
                                unsigned short id;                                                //CFG RATE ID:0X0806 (小端模式)
                                unsigned short dlength;                                //数据长度
                                unsigned short measrate;                                //测量时间间隔,单位为ms,最少不能小于200ms(5Hz)
                                unsigned short navrate;                                //导航速率(周期),固定为1
                                unsigned short timeref;                                //参考时间:0=UTC Time;1=GPS Time;
                                unsigned char  cka;                                        //校验CK_A                                                                   
                                unsigned char  ckb;                                        //校验CK_B                                                                  
                        }_ublox_cfg_rate;                        
                       
                        unsigned char Ublox_Cfg_Prt(unsigned int baudrate);
                        unsigned char Ublox_Cfg_Cfg_Save(void);
                        void Ublox_Send_Date(unsigned char* dbuf,unsigned short len);
                        void NMEA_GPGGA_Analysis(GPS_PacketTypeDef *GPS_Packet,unsigned char *buf);
                        unsigned char Ublox_Cfg_Rate(unsigned short measrate,unsigned char reftime);
                        u8 GPS_Check(u8 *buff);
#endif

使用特权

评论回复
23
yzhx0923| | 2019-9-7 10:03 | 只看该作者
你这个能模拟定位吗?但是经度纬度要会有跳动

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则