From 275b03224aa6170d4dc8c661c1cd949dd88c1fcb Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期一, 24 十一月 2025 15:10:21 +0800
Subject: [PATCH] 转向问题解决,方向定义问题,开始走了

---
 STM32H743/APL/motion_control_task.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/STM32H743/APL/motion_control_task.c b/STM32H743/APL/motion_control_task.c
index a93c5f0..8543cae 100644
--- a/STM32H743/APL/motion_control_task.c
+++ b/STM32H743/APL/motion_control_task.c
@@ -36,6 +36,7 @@
 static ST_GeoOrigin g_motion_origin;
 static HIDO_UINT32 g_last_gps_ms = 0U;
 static HIDO_UINT32 g_last_imu_ms = 0U;
+static HIDO_UINT32 g_last_gprmi_tow = 0U;
 static HIDO_UINT32 g_last_control_report_ms = 0U;
 static HIDO_UINT32 g_last_pose_report_ms = 0U;
 static HIDO_UINT32 g_last_state_report_ms = 0U;
@@ -121,8 +122,9 @@
         HIDO_BOOL imu_valid = (GPS_GetGPIMU(&gpimu) == HIDO_OK);
         HIDO_UINT32 now = HAL_GetTick();
 
-        if (gps_valid == HIDO_TRUE)
+        if (gps_valid == HIDO_TRUE && gprmi.m_u32TimeOfWeek != g_last_gprmi_tow)
         {
+            /* 鏂扮殑GPS鏁版嵁鍒版潵锛堟椂闂存埑鍙樺寲锛夛紝鎵嶆洿鏂拌埅鍚� */
             Geo_GprmiToENU(&gprmi, &g_motion_origin, enu);
             MC_UpdateGps(&g_motion_state, enu, &gprmi);
             memcpy(g_last_enu, enu, sizeof(enu));
@@ -131,9 +133,10 @@
             g_last_roll_deg = gprmi.m_fRollAngle;
             g_last_pose_valid = HIDO_TRUE;
             g_last_gps_ms = now;
+            g_last_gprmi_tow = gprmi.m_u32TimeOfWeek;
             g_last_sensor_timestamp_ms = gprmi.m_u32TimeOfWeek;
         }
-        else if ((now - g_last_gps_ms) > 200U)
+        else if (gps_valid == HIDO_FALSE && (now - g_last_gps_ms) > 200U)
         {
             g_motion_state.pose_valid = HIDO_FALSE;
             g_last_pose_valid = HIDO_FALSE;

--
Gitblit v1.10.0