gps串口通信程序c语言,stm32单片机串口接收GPS数据并解析NMEA之GPRMC

该博客介绍了如何使用STM32单片机处理GPS串口通信,解析NMEA协议中的GPRMC数据,包括时间、位置、航向等信息。程序通过中断服务程序捕获GPS数据,解析后在LCD上显示,并提供了相关函数如get_gps()、send_gps()等。博客附带官方解析NMEA数据的库文件目录和下载链接。
摘要由CSDN通过智能技术生成

程序主要实现对GPRMC数据的全解析,解析包括时间解析,位置解析,航向,组合,定位状态等等的解析

直接利用stm32系列单片机对GPS板卡接收到的数据进行处理得到相对应的信息

一.  gps.h文件:

#ifndef __GPS_H

#define __GPS_H

#include "delay.h"

#include "sys.h"

#include "usart.h"

extern u8 gps_buf[120]; //用来接收串口数据

extern u8 gps_i ;

enum gps_rece_state //串口数据的枚举类型

{

f_start, //帧开始

f_segment, //字段接收完

f_end,

f_out

};

extern enum gps_rece_state gps_state;

void send_gps(void);

void send_route(void);

void send_speed(void);

#endif

二. gps.c文件如下:

#include "gps.h"

#include "stm32f10x_usart.h"

#include "lcd.h"

#include "global.h"

#include "config.h"

#include "led.h"

#include "myfun.h"

#include "include.h"

//采集串口数据,并且读取得到GPS数据

u8 gps_buf[120] = {0}; //用来接收串口数据

u8 gps_i = 0;

u8 comma = 0;

u8 check_count = 0;

enum gps_rece_state gps_state;  //串口接收gps的状态

void get_gps(void);

//{

// f_start, //帧开始

// f_segment, //字段接收完

// f_end,

// f_out

//}

void USART3_IRQHandler(void)                 //串口1中断服务程序

{

u8 rec = 0,i;

if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)

{

rec =USART_ReceiveData(USART3);

if(rec == '$') //如果是美元符,为起始

{

gps_state = f_start;

gps_i = 0;

comma = 0;

check_count = 0;

for(i=0;i<120;i++)

gps_buf[i] = 0;

}

else if(gps_state == f_start)  //开始接收

{

gps_buf[gps_i] = rec;

gps_i+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值