北斗/GPS都是用的nmea通用协议。
NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。
1、NMEA library
开源的NMEA library就够用了,而且至今也没发现有比这个更好的解析库
支持: GPGGA, GPGSA, GPGSV, GPRMC, GPVTG
跨平台,支持如下编译环境
- Microsoft Windows (MS Visual Studio 8.0, GCC)
- Windows Mobile, Windows CE (MS Visual Studio 8.0)
- UNIX (GCC)
有人建了个eclipse工程,这些库建工程很繁琐,偷懒无罪。
https://github.com/AHR-Project/nmealib
也有人建了个IAR(cortex-m3)的工程
http://blog.csdn.net/xukai871105/article/details/12834421
或者代码仓库里有完整的可测试项目https://bitbucket.org/xukai871105/
2、GPS Library
之前在cortex-m3上调过北斗并且在cortex-m4上调过GPS,也都是在网上找了个现成的解析实例,这种大众化的模块不用重复造轮子了,我们宝贵的时间应该用来做更宝贵的事。
Library 27- Read GPS data on STM32F4 devices
Features
- Parse GPS data
- Supported NMEA 0183 standard
- Works with GPGGA, GPRMC, GPGSA, GPGSV NMEA statements
- Version 1.1 – August 22, 2014
- Calculate distance between 2 coordinates
- Calculate bearing between 2 coordinates
- Allows you to select custom NMEA statements
http://stm32f4-discovery.com/2014/08/library-27-gps-stm32f4-devices/
完整的库文件和工程在github
https://github.com/MaJerle/stm32f429