123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #ifndef __NMEA_H
- #define __NMEA_H
- #include "stm32f1xx_hal.h"
- //GPS NMEA-0183协议重要参数结构体定义
- //卫星信息
- __packed typedef struct
- {
- uint8_t num; //卫星编号
- uint8_t eledeg; //卫星仰角
- uint16_t azideg; //卫星方位角
- uint8_t sn; //信噪比
- }nmea_satellitemsg;
- //北斗 NMEA-0183协议重要参数结构体定义
- //卫星信息
- __packed typedef struct
- {
- uint8_t beidou_num; //卫星编号
- uint8_t beidou_eledeg; //卫星仰角
- uint16_t beidou_azideg; //卫星方位角
- uint8_t beidou_sn; //信噪比
- }beidou_nmea_satellitemsg;
- //UTC时间信息
- __packed typedef struct
- {
- uint16_t year; //年份
- uint8_t month; //月份
- uint8_t date; //日期
- uint8_t hour; //小时
- uint8_t min; //分钟
- uint8_t sec; //秒钟
- }nmea_utc_time;
- //NMEA 0183 协议解析后数据存放结构体
- __packed typedef struct
- {
- uint8_t svnum; //可见GPS卫星数
- uint8_t beidou_svnum; //可见GPS卫星数
- nmea_satellitemsg slmsg[12]; //最多12颗GPS卫星
- beidou_nmea_satellitemsg beidou_slmsg[12]; //暂且算最多12颗北斗卫星
- nmea_utc_time utc; //UTC时间
- uint32_t latitude; //纬度 分扩大100000倍,实际要除以100000
- uint8_t nshemi; //北纬/南纬,N:北纬;S:南纬
- uint32_t longitude; //经度 分扩大100000倍,实际要除以100000
- uint8_t ewhemi; //东经/西经,E:东经;W:西经
- uint8_t gpssta; //GPS状态:0,未定位;1,非差分定位;2,差分定位;6,正在估算.
- uint8_t posslnum; //用于定位的GPS卫星数,0~12.
- uint8_t possl[12]; //用于定位的卫星编号
- uint8_t fixmode; //定位类型:1,没有定位;2,2D定位;3,3D定位
- uint16_t pdop; //位置精度因子 0~500,对应实际值0~50.0
- uint16_t hdop; //水平精度因子 0~500,对应实际值0~50.0
- uint16_t vdop; //垂直精度因子 0~500,对应实际值0~50.0
- int altitude; //海拔高度,放大了10倍,实际除以10.单位:0.1m
- uint16_t speed; //地面速率,放大了1000倍,实际除以10.单位:0.001公里/小时
- }nmea_msg;
-
- int NMEA_Str2num(uint8_t *buf,uint8_t*dx);
- void NMEA_Analysis(nmea_msg *gpsx,uint8_t *buf);
- void NMEA_GPGSV_Analysis(nmea_msg *gpsx,uint8_t *buf);
- void NMEA_BDGSV_Analysis(nmea_msg *gpsx,uint8_t *buf);
- void NMEA_GNGGA_Analysis(nmea_msg *gpsx,uint8_t *buf);
- void NMEA_GNGSA_Analysis(nmea_msg *gpsx,uint8_t *buf);
- void NMEA_GNGSA_Analysis(nmea_msg *gpsx,uint8_t *buf);
- void NMEA_GNRMC_Analysis(nmea_msg *gpsx,uint8_t *buf);
- void NMEA_GNVTG_Analysis(nmea_msg *gpsx,uint8_t *buf);
- #endif
|