📄 drv_gps.c
字号:
/*********************************************************************************************************
** uC/OS 2 FOR PHILIP LPC21XX
** The Real-Time Kernel(For ADS1.2)
**
**
** V0.00.1
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: Drv_GPS.C
**创 建 人: 龚树强
**最后修改日期: 2005年5月2日
**描 述: 串口0驱动程序
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 龚树强
** 版 本: V0.01.1
** 日 期: 2005年5月2日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "..\source\Includes.h"
#include "..\driver\Drv_GPS\GPS_NMEA_RMC_Interpreter.h"
#include "..\driver\Drv_GPS\GPS_MOTO_Ea_Interpreter.h"
/*******************************************************************************
********************* 常 量 定 义 ************************
********************************************************************************/
INT8U GPS_NMEA_Type[][6] = {
{'G','P','G','G','L','L'},
{'G','P','G','G','G','A'},
{'G','P','G','V','T','G'},
{'G','P','G','R','M','C'},
{'G','P','G','G','S','A'},
{'G','P','G','A','S','V'},
{'0','0','0','0','0','0'},
{'0','0','0','0','0','0'}
}; //注意:此处各个命令的排列要和头文件中的预编译定义一致
INT8U GPS_MOTO_Type[][2] = {
{'E','a'},
{'0','0'},
{'0','0'},
{'0','0'},
{'0','0'},
{'0','0'},
{'0','0'},
{'0','0'}
}; //注意:此处各个命令的排列要和头文件中的预编译定义一致
/*******************************************************************************
********************* 变 量 定 义 ************************
********************************************************************************/
void *GPS_RX_Buf[GPS_RX_BUF_SIZE];
OS_STK STK_GPS_INTERPRETER[TASK_STK_SIZE/2];
OS_EVENT *GPS_RX_Q;
GPS_CNTL GpsCntl;
GPS_DATA GpsData,gpsdata_buf;
INT8U current_state,seg_offset,checksum;
/*********************************************************************************************************
** 函数名称: GPS_On/Off
** 功能描述: GPS开关控制函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年1月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
//#define GPS_On() \
// rPINSEL2 &= 0xFFFFFFF7; \
// rIO1DIR |= 1<<22; /*P1.22为GPS电源控制,低电平有效*/ \
// rIO1CLR |= 1<<22
//#define GPS_Off() \
// rPINSEL2 &= 0xFFFFFFF7; \
// rIO1DIR |= 1<<22; /*P1.22为GPS电源控制,低电平有效*/ \
// rIO1SET |= 1<<22
/*********************************************************************************************************
** 函数名称: GPS_Init
** 功能描述: GPS初始化函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年1月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void GPS_Init(void) reentrant
{
INT8U err;
// GPS_On();
GPS_RX_Q = OSQCreate( GPS_RX_Buf,GPS_RX_BUF_SIZE );
OSTaskCreate( Task_GPS_Interpreter, /*create a test task*/
(void *)0, /*parameter */
&STK_GPS_INTERPRETER[0], /*BOS */
GPS_INTERPRETER_PRIO /*task prio */
);
}
/*********************************************************************************************************
** 函数名称: GPS_NMEA_TypeCheck
** 功能描述: GPS NMEA格式类型检查函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年1月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
INT8U GPS_NMEA_TypeCheck(INT8U rx,INT8U *prx_counter) reentrant
{
INT8U cnt;
static INT8U type_flag;
INT8U i;
INT8U flag;
cnt = *prx_counter - GPS_NMEA_TYPE_SEG_OFFSET;
if(!cnt)
type_flag = 0xFF;
else if(cnt > 6)
{
*prx_counter = 0;
return 0;
}
flag = 0x01;
checksum ^= rx;
if(rx!=',')
{
for(i=0;i<8;flag<<=1,i++)
{
if(rx != GPS_NMEA_Type[i][cnt])
type_flag &= (~flag);
}
}
else
{
if(type_flag)
{
for(i=0;i<8;flag<<=1,i++)
{
if(type_flag & flag)
return i+1;
}
}
else
*prx_counter = 0;
}
return 0;
}
/*********************************************************************************************************
** 函数名称: GPS_NMEA_GLL_Interpreter
** 功能描述: GPS NMEA格式GLL包解释函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年1月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void GPS_NMEA_GLL_Interpreter(INT8U rx,INT8U *prx_counter) reentrant
{
}
/*********************************************************************************************************
** 函数名称: GPS_NMEA_GAA_Interpreter
** 功能描述: GPS NMEA格式GAA包解释函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年1月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void GPS_NMEA_GAA_Interpreter(INT8U rx,INT8U *prx_counter) reentrant
{
}
/*********************************************************************************************************
** 函数名称: GPS_NMEA_VTG_Interpreter
** 功能描述: GPS NMEA格式GLL包解释函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年1月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void GPS_NMEA_VTG_Interpreter(INT8U rx,INT8U *prx_counter) reentrant
{
}
/*********************************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -