From 68c43c5adef03f00836d83b37cb83a294d8b0354 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期四, 13 十一月 2025 17:04:28 +0800
Subject: [PATCH] 晚上SBUS信号解析,成功控制车走
---
STM32H743/FML/GPS.c | 292 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 251 insertions(+), 41 deletions(-)
diff --git a/STM32H743/FML/GPS.c b/STM32H743/FML/GPS.c
index eabf0c5..3bb87c3 100644
--- a/STM32H743/FML/GPS.c
+++ b/STM32H743/FML/GPS.c
@@ -34,10 +34,10 @@
typedef struct
{
E_GPSRecvState m_eState;
- HIDO_CHAR m_acHeader[10], m_acHeader2[10], m_acHeader3[10];
- HIDO_UINT32 m_u32HeaderLen, m_u32Header2Len, m_u32Header3Len;
+ HIDO_CHAR m_acHeader[10], m_acHeader2[10], m_acHeader3[10], m_acHeader4[10], m_acHeader5[10];
+ HIDO_UINT32 m_u32HeaderLen, m_u32Header2Len, m_u32Header3Len, m_u32Header4Len, m_u32Header5Len;
- HIDO_CHAR m_acRecvBuf[128];
+ HIDO_CHAR m_acRecvBuf[256]; // 澧炲ぇ缂撳啿鍖轰互瀹圭撼GPRMI鐨�23涓瓧娈�
HIDO_UINT32 m_u32RecvLen;
} ST_GPSRecv;
@@ -52,7 +52,11 @@
static HIDO_BOOL l_bGPSConfig = HIDO_FALSE;
static HIDO_UINT32 l_u32QXTick = 0;
HIDO_UINT32 getRTK_Tick = 0;
-/* GPS命令 */
+
+/* 瀛樺偍鏈�鏂扮殑GPRMI鍜孏PIMU鏁版嵁 */
+static ST_GPRMI l_stGPRMI;
+static ST_GPIMU l_stGPIMU;
+/* GPS锟斤拷锟斤拷 */
static HIDO_UINT8 l_au8CmdSave[] = {0xB5, 0x62, 0x06, 0x09, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x31, 0xBF};
static HIDO_UINT8 l_au8CmdRate1Hz[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0xE8, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x39};
static HIDO_UINT8 l_au8CmdRate2Hz[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0xF4, 0x01, 0x01, 0x00, 0x01, 0x00, 0x0B, 0x77};
@@ -61,12 +65,12 @@
/*******************************************************************************
* Function Name : GPS_RateConfig
- * Description : GPS速率配置 支持1HZ、2HZ、5HZ、10HZ
- * Input : _u8Rate 速率
+ * Description : GPS锟斤拷锟斤拷锟斤拷锟斤拷 支锟斤拷1HZ锟斤拷2HZ锟斤拷5HZ锟斤拷10HZ
+ * Input : _u8Rate 锟斤拷锟斤拷
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK 锟缴癸拷, HIDO_ERR 失锟斤拷
* Author : www.hido-studio.com
- * Modified Date: : 2021年5月07日
+ * Modified Date: : 2021锟斤拷5锟斤拷07锟斤拷
*******************************************************************************/
static HIDO_INT32 GPS_RateConfig(HIDO_UINT8 _u8Rate)
{
@@ -109,13 +113,13 @@
/*******************************************************************************
* Function Name : GPS_DataCheck
- * Description : GPS数据格式检查
- * Input : _pcData GPS数据
- * : _u32Len GPS数据长度
+ * Description : GPS锟斤拷锟捷革拷式锟斤拷锟�
+ * Input : _pcData GPS锟斤拷锟斤拷
+ * : _u32Len GPS锟斤拷锟捷筹拷锟斤拷
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK 锟缴癸拷, HIDO_ERR 失锟斤拷
* Author : www.hido-studio.com
- * Modified Date: : 2021年5月07日
+ * Modified Date: : 2021锟斤拷5锟斤拷07锟斤拷
*******************************************************************************/
static HIDO_INT32 GPS_DataCheck(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len)
{
@@ -147,13 +151,13 @@
/*******************************************************************************
* Function Name : GPS_ParseGGA
- * Description : GPS GGA数据解析(仅检查数据是否有效)
- * Input : _pcData GGA数据
- * : _u32Len GGA数据长度
+ * Description : GPS GGA锟斤拷锟捷斤拷锟斤拷(锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷欠锟斤拷锟叫�)
+ * Input : _pcData GGA锟斤拷锟斤拷
+ * : _u32Len GGA锟斤拷锟捷筹拷锟斤拷
* Output : None
- * Return : HIDO_OK 成功, HIDO_ERR 失败
+ * Return : HIDO_OK 锟缴癸拷, HIDO_ERR 失锟斤拷
* Author : www.hido-studio.com
- * Modified Date: : 2021年5月07日
+ * Modified Date: : 2021锟斤拷5锟斤拷07锟斤拷
*******************************************************************************/
static HIDO_INT32 GPS_ParseGGA(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len)
{
@@ -173,6 +177,138 @@
l_u8PosState = atoi((HIDO_CHAR *)stPosState.m_pData);
+ return HIDO_OK;
+}
+
+/*******************************************************************************
+ * Function Name : GPS_ParseGPRMI
+ * Description : 瑙f瀽GPRMI鏁版嵁鍖�
+ * Input : _pcData GPRMI鏁版嵁
+ * : _u32Len GPRMI鏁版嵁闀垮害
+ * Output : None
+ * Return : HIDO_OK 鎴愬姛, HIDO_ERR 澶辫触
+ * Author : www.hido-studio.com
+ * Modified Date: : 2025骞�11鏈�11鏃�
+ *******************************************************************************/
+static HIDO_INT32 GPS_ParseGPRMI(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len)
+{
+ HIDO_DataStruct astFields[23];
+
+ memset(&l_stGPRMI, 0, sizeof(ST_GPRMI));
+ l_stGPRMI.m_bValid = HIDO_FALSE;
+
+ // 妫�鏌ユ暟鎹牸寮忔牎楠�
+ if (GPS_DataCheck(_pcData, _u32Len) != HIDO_OK)
+ {
+ return HIDO_ERR;
+ }
+
+ // 瑙f瀽23涓瓧娈�: $GPRMI,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>,<18>,<19>,<20>,<21>,<22>,<23>*<CR><LF>
+ if (HIDO_UtilParseFormat((HIDO_UINT8 *)_pcData, _u32Len,
+ "$%*,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p,%p*%**",
+ &astFields[0], &astFields[1], &astFields[2], &astFields[3], &astFields[4],
+ &astFields[5], &astFields[6], &astFields[7], &astFields[8], &astFields[9],
+ &astFields[10], &astFields[11], &astFields[12], &astFields[13], &astFields[14],
+ &astFields[15], &astFields[16], &astFields[17], &astFields[18], &astFields[19],
+ &astFields[20], &astFields[21], &astFields[22]) != 25)
+ {
+ return HIDO_ERR;
+ }
+
+ // 瑙f瀽鍚勫瓧娈�
+ l_stGPRMI.m_u32UTCTime = (HIDO_UINT32)(atof((HIDO_CHAR *)astFields[0].m_pData) * 100); // 杞崲涓烘暣鏁�
+ l_stGPRMI.m_u16WeekNumber = (HIDO_UINT16)atoi((HIDO_CHAR *)astFields[1].m_pData);
+ l_stGPRMI.m_u32TimeOfWeek = (HIDO_UINT32)(atof((HIDO_CHAR *)astFields[2].m_pData) * 1000); // 杞崲涓烘绉�
+ l_stGPRMI.m_dLatitude = atof((HIDO_CHAR *)astFields[3].m_pData);
+ l_stGPRMI.m_dLongitude = atof((HIDO_CHAR *)astFields[4].m_pData);
+ l_stGPRMI.m_fAltitude = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[5].m_pData);
+ l_stGPRMI.m_fEastStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[6].m_pData);
+ l_stGPRMI.m_fNorthStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[7].m_pData);
+ l_stGPRMI.m_fAltStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[8].m_pData);
+ l_stGPRMI.m_fEastVelocity = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[9].m_pData);
+ l_stGPRMI.m_fNorthVelocity = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[10].m_pData);
+ l_stGPRMI.m_fUpVelocity = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[11].m_pData);
+ l_stGPRMI.m_fEastVelStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[12].m_pData);
+ l_stGPRMI.m_fNorthVelStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[13].m_pData);
+ l_stGPRMI.m_fUpVelStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[14].m_pData);
+ l_stGPRMI.m_fRollAngle = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[15].m_pData);
+ l_stGPRMI.m_fPitchAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[16].m_pData);
+ l_stGPRMI.m_fRollAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[17].m_pData);
+ l_stGPRMI.m_fHeadingAngleStdDev = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[18].m_pData);
+ l_stGPRMI.m_fBaselineDistance = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[19].m_pData);
+ l_stGPRMI.m_u8SatelliteCount = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[20].m_pData);
+ l_stGPRMI.m_u8ReservedFlags = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[21].m_pData);
+ l_stGPRMI.m_u8PositionQuality = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[22].m_pData);
+
+ l_stGPRMI.m_bValid = HIDO_TRUE;
+
+ return HIDO_OK;
+}
+
+/*******************************************************************************
+ * Function Name : GPS_ParseGPIMU
+ * Description : 瑙f瀽GPIMU鏁版嵁鍖�
+ * Input : _pcData GPIMU鏁版嵁
+ * : _u32Len GPIMU鏁版嵁闀垮害
+ * Output : None
+ * Return : HIDO_OK 鎴愬姛, HIDO_ERR 澶辫触
+ * Author : www.hido-studio.com
+ * Modified Date: : 2025骞�11鏈�11鏃�
+ *******************************************************************************/
+static HIDO_INT32 GPS_ParseGPIMU(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len)
+{
+ HIDO_DataStruct astFields[9];
+ HIDO_UINT8 u8CalcChecksum = 0;
+ HIDO_UINT32 i = 0;
+ HIDO_CHAR *pCheckStart = HIDO_NULL;
+ HIDO_CHAR *pCheckEnd = HIDO_NULL;
+
+ memset(&l_stGPIMU, 0, sizeof(ST_GPIMU));
+ l_stGPIMU.m_bValid = HIDO_FALSE;
+
+ // 瑙f瀽9涓瓧娈�: $GPIMU,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>*<CR><LF>
+ if (HIDO_UtilParseFormat((HIDO_UINT8 *)_pcData, _u32Len,
+ "$GPIMU,%p,%p,%p,%p,%p,%p,%p,%p,%p*%**",
+ &astFields[0], &astFields[1], &astFields[2], &astFields[3],
+ &astFields[4], &astFields[5], &astFields[6], &astFields[7],
+ &astFields[8]) < 10)
+ {
+ return HIDO_ERR;
+ }
+
+ // 璁$畻寮傛垨鏍¢獙: 浠庣涓�涓瓧娈靛埌绗�9涓瓧娈电殑寮傛垨鍜�
+ // 绀轰緥鏁版嵁: $GPIMU, 054752.002, 0.000, 0.007, -1.032, -0.003, 0.053, -0.016,26.00@59
+ // 鏍煎紡璇存槑: 璇彞绀轰緥涓殑寮傛垨鏍¢獙鍜屼负0@59 (鍗佸叚杩涘埗59)
+ pCheckStart = strchr(_pcData, ','); // 鎵惧埌绗竴涓�楀彿
+ pCheckEnd = strrchr(_pcData, '*'); // 鎵惧埌鏈�鍚庝竴涓槦鍙�
+
+ if (pCheckStart != HIDO_NULL && pCheckEnd != HIDO_NULL && pCheckEnd > pCheckStart)
+ {
+ // 璁$畻浠庣涓�涓�楀彿鍚庡埌鏄熷彿鍓嶇殑鎵�鏈夊瓧绗︾殑寮傛垨
+ for (i = 0; pCheckStart + i < pCheckEnd; i++)
+ {
+ u8CalcChecksum ^= (HIDO_UINT8)(pCheckStart[i]);
+ }
+ }
+
+ // 瑙f瀽鍚勫瓧娈�
+ l_stGPIMU.m_u32UTCTime = (HIDO_UINT32)(atof((HIDO_CHAR *)astFields[0].m_pData) * 1000); // 杞崲涓烘绉�
+ l_stGPIMU.m_fAccelX = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[1].m_pData);
+ l_stGPIMU.m_fAccelY = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[2].m_pData);
+ l_stGPIMU.m_fAccelZ = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[3].m_pData);
+ l_stGPIMU.m_fGyroX = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[4].m_pData);
+ l_stGPIMU.m_fGyroY = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[5].m_pData);
+ l_stGPIMU.m_fGyroZ = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[6].m_pData);
+ l_stGPIMU.m_fTemperature = (HIDO_FLOAT)atof((HIDO_CHAR *)astFields[7].m_pData);
+
+ // 绗�9涓瓧娈垫槸寮傛垨鏍¢獙锛岀洿鎺ヨВ鏋�
+ l_stGPIMU.m_u8Checksum = (HIDO_UINT8)atoi((HIDO_CHAR *)astFields[8].m_pData);
+
+ // 楠岃瘉鏍¢獙鍜� (鏍规嵁鏂囨。锛岃繖鏄紓鎴栨牎楠�)
+ // 娉ㄦ剰: 鏂囨。涓樉绀烘牎楠屽�煎湪鏈�鍚庯紝闇�瑕佹牴鎹疄闄呭崗璁‘瀹氭槸鍚﹂獙璇�
+
+ l_stGPIMU.m_bValid = HIDO_TRUE;
+
return HIDO_OK;
}
u16 g_spsum, g_snum;
@@ -213,20 +349,20 @@
}
/*******************************************************************************
* Function Name : GPS_RecvFsm
- * Description : GPS 数据接收状态机
- * Input : _u8RecvChar 一个接收字符
+ * Description : GPS 锟斤拷锟捷斤拷锟斤拷状态锟斤拷
+ * Input : _u8RecvChar 一锟斤拷锟斤拷锟斤拷锟街凤拷
* Output : None
* Return : one
* Author : www.hido-studio.com
- * Modified Date: : 2021年5月07日
+ * Modified Date: : 2021锟斤拷5锟斤拷07锟斤拷
*******************************************************************************/
static HIDO_VOID GPS_RecvFsm(HIDO_UINT8 _u8RecvChar)
{
static int LastRTK = 0;
- HIDO_CHAR GPS_1[10] = "设备单点";
- HIDO_CHAR GPS_4[10] = "设备固定";
- HIDO_CHAR GPS_5[10] = "设备浮动";
+ HIDO_CHAR GPS_1[10] = "锟借备锟斤拷锟斤拷";
+ HIDO_CHAR GPS_4[10] = "锟借备锟教讹拷";
+ HIDO_CHAR GPS_5[10] = "锟借备锟斤拷锟斤拷";
switch (l_stGPSRecv.m_eState)
{
@@ -254,6 +390,14 @@
l_stGPSRecv.m_eState = GPS_RECV_STATE_CR;
}
else if (memcmp(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_acHeader3, l_stGPSRecv.m_u32Header3Len) == 0)
+ {
+ l_stGPSRecv.m_eState = GPS_RECV_STATE_CR;
+ }
+ else if (memcmp(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_acHeader4, l_stGPSRecv.m_u32Header4Len) == 0)
+ {
+ l_stGPSRecv.m_eState = GPS_RECV_STATE_CR;
+ }
+ else if (memcmp(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_acHeader5, l_stGPSRecv.m_u32Header5Len) == 0)
{
l_stGPSRecv.m_eState = GPS_RECV_STATE_CR;
}
@@ -289,7 +433,7 @@
if ('\n' == _u8RecvChar)
{
- /* 配置GPS HZ */
+ /* 锟斤拷锟斤拷GPS HZ */
// g_com_map[GPS_HZ] = 10;
//if (l_bGPSConfig || l_u8GPS_HZ != g_com_map[GPS_HZ])
{
@@ -301,6 +445,17 @@
{
GPS_ParseGSV(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen);
}
+ else if (memcmp(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_acHeader4, l_stGPSRecv.m_u32Header4Len) == 0)
+ {
+ // 瑙f瀽GPRMI鏁版嵁
+ GPS_ParseGPRMI(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen);
+ }
+ else if (memcmp(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_acHeader5, l_stGPSRecv.m_u32Header5Len) == 0)
+ {
+ // 瑙f瀽GPIMU鏁版嵁
+ GPS_ParseGPIMU(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen);
+ }
+
if (memcmp(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_acHeader, l_stGPSRecv.m_u32HeaderLen) == 0)
{
static uint32_t gps_uploadtimer = 0;
@@ -333,12 +488,12 @@
/*******************************************************************************
* Function Name : GPS_Rest
- * Description : GPS复位
+ * Description : GPS锟斤拷位
* Input : None
* Output : None
* Return : None
* Author : www.hido-studio.com
- * Modified Date: : 2021年1月8日
+ * Modified Date: : 2021锟斤拷1锟斤拷8锟斤拷
*******************************************************************************/
static HIDO_VOID GPS_Rest(void)
{
@@ -351,12 +506,12 @@
/*******************************************************************************
* Function Name : GPS_PowerOn
- * Description : GPS上电
+ * Description : GPS锟较碉拷
* Input : None
* Output : None
* Return : None
* Author : www.hido-studio.com
- * Modified Date: : 2021年1月8日
+ * Modified Date: : 2021锟斤拷1锟斤拷8锟斤拷
*******************************************************************************/
static HIDO_VOID GPS_PowerOn(void)
{
@@ -365,12 +520,12 @@
/*******************************************************************************
* Function Name : GPS_PowerOff
- * Description : GPS掉电
+ * Description : GPS锟斤拷锟斤拷
* Input : None
* Output : None
* Return : None
* Author : www.hido-studio.com
- * Modified Date: : 2021年1月8日
+ * Modified Date: : 2021锟斤拷1锟斤拷8锟斤拷
*******************************************************************************/
HIDO_VOID GPS_PowerOff(void)
{
@@ -383,12 +538,12 @@
/*******************************************************************************
* Function Name : GPS_GetState
- * Description : 获取GPS定位状态
+ * Description : 锟斤拷取GPS锟斤拷位状态
* Input : None
* Output : None
- * Return : 定位状态 0 1 2 3
+ * Return : 锟斤拷位状态 0 1 2 3
* Author : www.hido-studio.com
- * Modified Date: : 2021年1月8日
+ * Modified Date: : 2021锟斤拷1锟斤拷8锟斤拷
*******************************************************************************/
HIDO_UINT8 GPS_GetState(HIDO_VOID)
{
@@ -397,14 +552,14 @@
/*******************************************************************************
* Function Name : GPS_PinRegister
- * Description : GPS模块管脚注册
- * Input : _ePin 管脚定义
+ * Description : GPS模锟斤拷芙锟阶拷锟�
+ * Input : _ePin 锟杰脚讹拷锟斤拷
* : _pstGPIOx GPIOx
* : _u16GPIOPin GPIO_PIN_x
* Output : None
* Return : None
* Author : www.hido-studio.com
- * Modified Date: : 2021年1月8日
+ * Modified Date: : 2021锟斤拷1锟斤拷8锟斤拷
*******************************************************************************/
HIDO_VOID GPS_PinRegister(E_GPSPin _ePin, GPIO_TypeDef *_pstGPIOx, HIDO_UINT16 _u16GPIOPin)
{
@@ -414,12 +569,12 @@
/*******************************************************************************
* Function Name : GPS_Poll
- * Description : GPS轮询处理
+ * Description : GPS锟斤拷询锟斤拷锟斤拷
* Input : None
* Output : None
* Return : None
* Author : www.hido-studio.com
- * Modified Date: : 2021年1月8日
+ * Modified Date: : 2021锟斤拷1锟斤拷8锟斤拷
*******************************************************************************/
HIDO_VOID GPS_Poll(void)
{
@@ -474,12 +629,12 @@
/*******************************************************************************
* Function Name : GPS_Init
- * Description : GPS模块初始化
+ * Description : GPS模锟斤拷锟绞硷拷锟�
* Input : None
* Output : None
* Return : None
* Author : www.hido-studio.com
- * Modified Date: : 2021年1月8日
+ * Modified Date: : 2021锟斤拷1锟斤拷8锟斤拷
*******************************************************************************/
HIDO_VOID GPS_Init(void)
{
@@ -502,6 +657,8 @@
l_stGPSRecv.m_u32HeaderLen = HIDO_UtilSnprintf(l_stGPSRecv.m_acHeader, sizeof(l_stGPSRecv.m_acHeader), "$GNGGA");
l_stGPSRecv.m_u32Header2Len = HIDO_UtilSnprintf(l_stGPSRecv.m_acHeader2, sizeof(l_stGPSRecv.m_acHeader2), "$GPGSV");
l_stGPSRecv.m_u32Header3Len = HIDO_UtilSnprintf(l_stGPSRecv.m_acHeader3, sizeof(l_stGPSRecv.m_acHeader3), "$GBGSV");
+ l_stGPSRecv.m_u32Header4Len = HIDO_UtilSnprintf(l_stGPSRecv.m_acHeader4, sizeof(l_stGPSRecv.m_acHeader4), "$GPFMI");
+ l_stGPSRecv.m_u32Header5Len = HIDO_UtilSnprintf(l_stGPSRecv.m_acHeader5, sizeof(l_stGPSRecv.m_acHeader5), "$GPIMU");
l_bGPSConfig = HIDO_TRUE;
//gpsbaudrate = (g_com_map[GPSBAUDRATE1_INDEX] << 8) | g_com_map[GPSBAUDRATE2_INDEX];
if (gpsbaudrate > 921600 || gpsbaudrate < 9600)
@@ -510,3 +667,56 @@
}
Uart_ReConfigBaudRate(UART_ID_GPS, gpsbaudrate);
}
+
+/*******************************************************************************
+ * Function Name : GPS_GetGPRMI
+ * Description : 鑾峰彇鏈�鏂扮殑GPRMI鏁版嵁
+ * Input : _pstGPRMI - 瀛樺偍GPRMI鏁版嵁鐨勭粨鏋勪綋鎸囬拡
+ * Output : None
+ * Return : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触鎴栨暟鎹棤鏁�
+ * Author : www.hido-studio.com
+ * Modified Date: : 2025骞�11鏈�11鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetGPRMI(ST_GPRMI *_pstGPRMI)
+{
+ if (_pstGPRMI == HIDO_NULL)
+ {
+ return HIDO_ERR;
+ }
+
+ if (l_stGPRMI.m_bValid == HIDO_FALSE)
+ {
+ return HIDO_ERR;
+ }
+
+ memcpy(_pstGPRMI, &l_stGPRMI, sizeof(ST_GPRMI));
+
+ return HIDO_OK;
+}
+
+/*******************************************************************************
+ * Function Name : GPS_GetGPIMU
+ * Description : 鑾峰彇鏈�鏂扮殑GPIMU鏁版嵁
+ * Input : _pstGPIMU - 瀛樺偍GPIMU鏁版嵁鐨勭粨鏋勪綋鎸囬拡
+ * Output : None
+ * Return : HIDO_OK - 鎴愬姛, HIDO_ERR - 澶辫触鎴栨暟鎹棤鏁�
+ * Author : www.hido-studio.com
+ * Modified Date: : 2025骞�11鏈�11鏃�
+ *******************************************************************************/
+HIDO_INT32 GPS_GetGPIMU(ST_GPIMU *_pstGPIMU)
+{
+ if (_pstGPIMU == HIDO_NULL)
+ {
+ return HIDO_ERR;
+ }
+
+ if (l_stGPIMU.m_bValid == HIDO_FALSE)
+ {
+ return HIDO_ERR;
+ }
+
+ memcpy(_pstGPIMU, &l_stGPIMU, sizeof(ST_GPIMU));
+
+ return HIDO_OK;
+}
+
--
Gitblit v1.9.3