From d487f58c6be4ed22f735d12861b59b85c3a924b9 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期六, 20 十二月 2025 21:53:25 +0800
Subject: [PATCH] HTTP下载路径文件成功,解析路径文件成功,CRC用的软件,硬件解析不对。准备改BOOT

---
 STM32H743/APL/app.c |  160 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 146 insertions(+), 14 deletions(-)

diff --git a/STM32H743/APL/app.c b/STM32H743/APL/app.c
index 4ca81fd..223c605 100644
--- a/STM32H743/APL/app.c
+++ b/STM32H743/APL/app.c
@@ -12,28 +12,121 @@
 #include "HIDO_ATLite.h"
 #include "UDPClient.h"
 #include "bluetooth.h"
+#include "TCPClient.h"
+#include "SBUS.h"
+#include "pwm_ctrol.h"
+#include "PythonLink.h"
+#include "motion_mode.h"
+#include "motion_control_task.h"
+#include "motion_calibration_task.h"
+#include "MQTTClient.h"
+#include "HIDO_Json.h"
+#include "PathStorage.h"
+#include "PathTest.h"
+#include "HTTPClient.h"
 
-static osSemaphoreId_t g_semaphoreHandle = NULL;
+osSemaphoreId_t g_semaphoreHandle = NULL;
+TaskHandle_t g_app_task_handle = NULL;
 
+extern uint8_t restart_num;
+void IdleTask(void)
+{
+        if(g_com_map[CNT_RESTART]==1)
+        {
+            g_com_map[CNT_RESTART]=0;
+//            printf("%s URTRestart",__debug_info__);
+            HAL_NVIC_SystemReset();
+        }
+            if(g_com_map[MAP_SIGN_INDEX]!=0x55AA)
+        {
+//            printf("%s URTRestart",__debug_info__);
+            HAL_NVIC_SystemReset();
+              //  SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //锟斤拷锟斤拷位锟截碉拷bootloader
+        }
+
+    }
 void app_task(void *pvParameters)
 {
+    HIDO_JsonInit();
+    Shell_Init();
     GPS_Init();
     Internet_Init();
     UDPClient_Init();
-
+    TCPClient_Init();
+    MQTTClient_Init();
+	BT_Init();
+    SBUS_Init();
+    PythonLink_Init();
+    HTTPClient_Init();
+    FileDownload_Init();
+    PathStorage_Init();
+    PathTest_Init();
+#if (MOTION_ACTIVE_MODE == MOTION_MODE_CONTROL)
+    MotionControl_TaskInit();
+#elif (MOTION_ACTIVE_MODE == MOTION_MODE_CALIBRATION)
+    MotionCalibration_TaskInit();
+#else
+#error "Unsupported MOTION_ACTIVE_MODE"
+#endif
+    /* ENU璋冭瘯鎵撳嵃锛堥潪鏍″噯妯″紡锛� */
+    static HIDO_UINT32 debug_print_counter = 0;
+    const HIDO_UINT32 DEBUG_PRINT_INTERVAL = 100; /* 姣�100娆″惊鐜墦鍗颁竴娆� (绾�500ms) */
+    
+    /* GPS GGA涓婁紶瀹氭椂鍣� */
+    static HIDO_UINT32 gps_upload_counter = 0;
+    const HIDO_UINT32 GPS_UPLOAD_INTERVAL = 200; /* 姣�200娆″惊鐜笂浼犱竴娆� (绾�1000ms) */
+    
     while (1)
     {
-        HIDO_UINT32 timeout = HIDO_TimerGetNearestTimeout(1000);
+        //HIDO_UINT32 timeout = HIDO_TimerGetNearestTimeout(1000);
+        HIDO_UINT32 timeout = 5;
         if (xSemaphoreTake(g_semaphoreHandle, timeout / portTICK_PERIOD_MS) == pdTRUE)
         {
-            DBG_Poll();
-			BT_Poll();
-            HIDO_ATLitePoll();
-            Internet_Poll();
-            GPS_Poll();
-            UDPClient_Poll();
-        }
 
+        }
+        DBG_Poll();
+        BT_Poll();
+        SBUS_Poll();
+        PythonLink_Poll();
+        HIDO_ATLitePoll();
+        Internet_Poll();
+        GPS_Poll();
+        HTTPClient_Poll();
+        MQTTClient_Poll();
+        PathTest_Poll();
+        /* 瀹氭椂涓婁紶GGA鎶ユ枃鍒�4G锛堟瘡绉掍竴娆★級 */
+        if (++gps_upload_counter >= GPS_UPLOAD_INTERVAL)
+        {
+            gps_upload_counter = 0;
+            GPS_UploadGGA();
+        }
+        
+        /* 鍛ㄦ湡鎬ф墦鍗癊NU鍧愭爣鍜孖MU鏁版嵁锛堢敤浜庤皟璇旼PS瑙f瀽锛� */
+#if (MOTION_ACTIVE_MODE != MOTION_MODE_CALIBRATION)
+        if (++debug_print_counter >= DEBUG_PRINT_INTERVAL)
+        {
+            debug_print_counter = 0;
+            
+            ST_GPRMI gprmi;
+            ST_GPIMU gpimu;
+            float enu[3];
+            
+            if (GPS_GetGPRMI(&gprmi) == HIDO_OK && 
+                GPS_GetGPIMU(&gpimu) == HIDO_OK && 
+                GPS_GetCurrentENU(enu) == HIDO_OK)
+            {
+                HIDO_Debug2("$DEBUG,ENU,%.2f,%.2f,%.2f,HDG,%.2f,ACC,%.3f,%.3f,%.3f,GYRO,%.3f,%.3f,%.3f\r\n",
+                            enu[0], enu[1], enu[2],  /* ENU鍧愭爣 (m) */
+                            gprmi.m_fHeadingAngle,    /* 鑸悜瑙� (搴�) */
+                            gpimu.m_fAccelX, gpimu.m_fAccelY, gpimu.m_fAccelZ, /* 鍔犻�熷害 (m/s虏) */
+                            gpimu.m_fGyroX, gpimu.m_fGyroY, gpimu.m_fGyroZ);   /* 瑙掗�熷害 (rad/s) */
+            }
+        }
+#endif
+        
+        UDPClient_Poll();
+        TCPClient_Poll();
+        IdleTask();
         HIDO_TimerPoll();
     }
 }
@@ -53,20 +146,59 @@
     }
 }
 
+void app_trigger(void)
+{
+    if (g_semaphoreHandle != NULL)
+    {
+        xSemaphoreGive(g_semaphoreHandle);
+    }
+}
+
 void app_main(void)
 {
     MCUFlash_Init();
     parameter_init();
-	printf("demo run!\r\n");
-    TaskHandle_t xTaskHandle = NULL;
+     
+    {
+        g_com_map[VERSION] = (1<<8)|(1);
+        uint16_t dev_id = g_com_map[DEV_ID];
+        uint16_t udp_port = g_com_map[UDP_PORT];
+        uint16_t tcp_port = g_com_map[TCP_PORT];
+        uint16_t ip0 = g_com_map[IP_0];
+        uint16_t ip1 = g_com_map[IP_1];
+        uint16_t ip2 = g_com_map[IP_2];
+        uint16_t ip3 = g_com_map[IP_3];
+        uint16_t tip0 = g_com_map[TCP_IP_0];
+        uint16_t tip1 = g_com_map[TCP_IP_1];
+        uint16_t tip2 = g_com_map[TCP_IP_2];
+        uint16_t tip3 = g_com_map[TCP_IP_3];
+        g_com_map[MQTT_IP_0] = 39;
+        g_com_map[MQTT_IP_1] = 99;
+        g_com_map[MQTT_IP_2] = 43;
+        g_com_map[MQTT_IP_3] = 227;
+        g_com_map[MQTT_PORT] = 1883;
+        uint16_t mip0 = g_com_map[MQTT_IP_0];
+        uint16_t mip1 = g_com_map[MQTT_IP_1];
+        uint16_t mip2 = g_com_map[MQTT_IP_2];
+        uint16_t mip3 = g_com_map[MQTT_IP_3];
+        uint16_t mqtt_port = g_com_map[MQTT_PORT];
 
+			
+        uint16_t version = g_com_map[VERSION];
+
+        HIDO_Debug("[BOOT] Version: %u\r\n", version);
+        HIDO_Debug("[BOOT] DeviceID: %u\r\n", dev_id);
+        HIDO_Debug("[BOOT] UDP Server: %u.%u.%u.%u:%u\r\n", ip0, ip1, ip2, ip3, udp_port);
+        HIDO_Debug("[BOOT] TCP Server: %u.%u.%u.%u:%u\r\n", tip0, tip1, tip2, tip3, tcp_port);
+        HIDO_Debug("[BOOT] MQTT Server: %u.%u.%u.%u:%u\r\n", mip0, mip1, mip2, mip3, mqtt_port);
+    }
     osSemaphoreAttr_t semaphore_attr = {
         .name = "MySemaphore",
         .attr_bits = 0,
         .cb_mem = NULL,
         .cb_size = 0};
 
-    // 创建二进制信号量(初始计数为0,最大计数为1)
+    //
     g_semaphoreHandle = osSemaphoreNew(1, 0, &semaphore_attr);
 
     xTaskCreate(
@@ -75,5 +207,5 @@
         2048,
         NULL,
         tskIDLE_PRIORITY + 1,
-        &xTaskHandle);
+        &g_app_task_handle);
 }

--
Gitblit v1.10.0