From 8e20afae32b9e4115caeea49a470016f71661555 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 09 一月 2025 09:25:33 +0800
Subject: [PATCH] 目前调试完毕  1s上发一次  适配最新板子 看门狗跟静止休眠能同时用,去掉了低功耗超链接模式目前

---
 APL/App.c |  422 +++++++++++++++++++++++++---------------------------
 1 files changed, 206 insertions(+), 216 deletions(-)

diff --git a/APL/App.c b/APL/App.c
index 1582cbf..1051635 100644
--- a/APL/App.c
+++ b/APL/App.c
@@ -180,99 +180,6 @@
 extern uint8_t chongdian_time;
 extern uint8_t input5vtime;
 extern uint16_t work_time;
-void PowerLedTask(void)
-{ 
-     static u8 powerled_state=0;
-    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
-    {
-        if(!power_state&&!chargedbg_flag)
-        {
-            DBG_SetMode(DBG_MODE_CHARGE);
-            power_state = 1;
-        }
-       while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE)
-        {
-        nomove_count = 0;
-        HAL_IWDG_Refresh(&hiwdg);
-        DBG_Poll();
-        IdleTask();
-        if(bat_percent>=100)
-        {
-            powerled = RED;
-            chongman_flag=1;
-        }
-        else
-        {
-            powerled = RED;
-        }            
-//        if(receive1_gotosleep_flag||receive2_gotosleep_flag)    
-//        {
-//            if(receive1_gotosleep_flag)
-//            {
-//            uwbled=LEDOFF;
-//            Stop_chongdian_Mode_Poll();
-//            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-//               if(chongman_flag)  //充满电重启,重启外设。
-//               {HAL_NVIC_SystemReset();}
-//            }
-//            if(receive2_gotosleep_flag)
-//            {
-//            uwbled=LEDOFF;
-//            Stop_chongdian_Mode_Poll();
-//            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-//            }
-//        }
-//        else
-//        {
-//        Internet_Poll();
-//        HIDO_TimerPoll();
-//        HIDO_ATLitePoll();
-//        UDPClient_Poll();
-//            GPS_Poll();
-//                if(taglist_num>0)
-//                {
-//                    if(work_time>=YUNDONG_UWB_TIME)
-//                    {
-//                        work_time=0;
-//                        Uwb_Zubao_Poll();
-//                        UDPClient_UploadGPS((char*)GPS_data);
-//                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
-//                        taglist_num=0;
-//                    }
-//                }
-//                else
-//                {
-//                        if(work_time>=g_com_map[GPS_HZ])
-//                        {
-//                            work_time=0;
-//                            if(GPS_successful_flag)
-//                            {
-//                                UDPClient_UploadGPS((char*)GPS_data);
-//                            }
-//                            else
-//                            {
-//                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//                            }
-//                        }
-//                    
-//                }
-//            }
-        }
-        
-    }
-    chongman_flag=0;
-    chargeon = 0;
-   if(power_state)
-    {              
-        DBG_SetMode(DBG_MODE_SHELL);
-        power_state = 0;        
-    }
-    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
-    {
-        chargedbg_flag = 0;
-    
-    }
-}
 uint8_t imu_enable;
 extern uint32_t dev_id;
 void Program_Init(void)
@@ -345,10 +252,10 @@
     dev_id = g_com_map[DEV_ID];
 
     printf("设备ID: %x .\r\n",dev_id);
-    printf("固件版本: 铁鞋定位 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+    printf("固件版本:  L071无UWB工卡V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
     printf("服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[IP_0],g_com_map[IP_1],g_com_map[IP_2],g_com_map[IP_3],g_com_map[PORT]);
     printf("当前运动时GPS工作间隔: %d .\r\n",g_com_map[GPS_HZ]);
-    printf("当前被拆时GPS工作间隔: %d .\r\n",g_com_map[CHAICHUGPS_HZ]);
+//    printf("当前被拆时GPS工作间隔: %d .\r\n",g_com_map[CHAICHUGPS_HZ]);
 //       if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
 //    {        printf("TCP_RTCM模式,服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[TCP_IP_0],g_com_map[TCP_IP_1],g_com_map[TCP_IP_2],g_com_map[TCP_IP_3],g_com_map[TCP_PORT]);
 //    }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP)
@@ -368,7 +275,43 @@
 //        printf("单点定位模式模式. \r\n");
 //    }
 }
-
+void PowerDownDetect(void)
+{  
+    static HIDO_UINT32 l_u32QXpowerTick = 0;    
+    static uint32_t powercount=0;
+   
+    if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12))
+    {
+       if((HIDO_TimerGetTick() - l_u32QXpowerTick) >=1000)
+      {
+          while(1)
+          {
+              gpsled=WHITE;
+              uwbled=WHITE;
+              loraled=WHITE;
+              powerled=WHITE;
+              
+              if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==0)
+              {     
+                  powercount = 0;
+                  l_u32QXpowerTick = HIDO_TimerGetTick();
+                  while(1)
+                  {
+                      
+                  if((HIDO_TimerGetTick() - l_u32QXpowerTick) >=100)
+                    {
+                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
+                        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
+                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
+                    }
+                }
+              }
+          }
+      }
+      }else{
+           l_u32QXpowerTick = HIDO_TimerGetTick();
+      }
+}
 void IdleTask(void)
 {
   // APLPollTask();
@@ -418,50 +361,173 @@
         uwbchecksum = Checksum_u16(&uwb_send[2],15+5*taglist_num);
         memcpy(&uwb_send[17+5*taglist_num],&uwbchecksum,2);
 }
+u8 only_one_flag;
+u16 chongman_time;
+u8 bat_percent_old=100;
+extern IWDG_HandleTypeDef hiwdg;
+u32 adctick = 0;
+u8 rtk_state = 1;
+void CloseRTK4G(void)
+{
+      rtk_state = 0;
+        
+      loraled = LEDOFF;
+      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
+}
+void OpenRTK4G(void)
+{
+      loraled = 1;     
+      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);
+}
+void PowerLedTask(void)
+{ 
+    static u8 powerled_state=0;
+  
+    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
+    {
+        chongman_time=0;
+        only_one_flag=0;
+        uwbled=0;
+        gpsled=0;
+        loraled=0;
+        powerled=0;
+        if(!power_state&&!chargedbg_flag)
+        {
+            CloseRTK4G();  
+            DBG_SetMode(DBG_MODE_CHARGE);
+            power_state = 1;
+//            Uart_ChongxinInit(UART_ID_DBG);
+//            DBG_Init();
+//            Shell_Init();
+        }
+        while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE)
+        {
+            nomove_count = 0;
+            if(HIDO_TimerGetTick()-adctick>6000)  //10分钟采样一次 电量
+            {HAL_IWDG_Refresh(&hiwdg);
+                chongman_time=chongman_time+6;
+                adctick = HIDO_TimerGetTick();
+                if( HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10))
+                {
+                    bat_percent=Get_Battary();
+                }else{
+                    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
+                    bat_percent=Get_Battary();
+                    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
+                }
+            }
+            if(bat_percent>=99&&!only_one_flag)
+            {
+            only_one_flag=1;
+            chongman_time=0;
+            }
+            if(bat_percent>=99&&chongman_time>=1800)
+            {
+                powerled = GREEN;
+            }else{
+                powerled = RED;
+            }
+            delay_ms(100);
+            DBG_Poll();
+            Internet_Poll();
+            Set4LEDColor(0,0,0,powerled);
+        }
+    }
+
+    chargeon = 0;
+    if(power_state)
+    {              
+        DBG_SetMode(DBG_MODE_SHELL);
+        power_state = 0;
+        bat_percent_old=100;
+        OpenRTK4G();              
+    }
+    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
+    {
+     chargedbg_flag = 0;
+    
+    }
+    if(HIDO_TimerGetTick()%1000<10 )
+    {
+        if(powerled_state==0)
+        {
+            if(bat_percent>15)
+            {
+                powerled = BLUE;
+            }else{
+                 powerled = RED;
+            }
+            powerled_state = 1;
+          //  bat_percent = Battery_GetPercentage();
+          Set4LEDColor(uwbled,gpsled,loraled,powerled);   
+        }
+        }else
+        {
+            if(powerled_state)
+            {
+                powerled_state = 0;
+                powerled = LEDOFF;
+                uwbled = LEDOFF;
+                gpsled = LEDOFF;
+                loraled = LEDOFF;
+                Set4LEDColor(uwbled,gpsled,loraled,powerled);
+            }
+       
+        } 
+               
+     
+    if(HIDO_TimerGetTick()-adctick>6000)  //10分钟采样一次 电量
+    {
+        adctick = HIDO_TimerGetTick();
+        if( HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10))
+        {
+            bat_percent=Get_Battary();
+            if(bat_percent>bat_percent_old)
+            {
+            bat_percent=bat_percent_old;
+            }
+            else
+            {
+            bat_percent_old=bat_percent;
+            }
+        }else{
+            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
+            bat_percent=Get_Battary();
+            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
+            if(bat_percent>bat_percent_old)
+            {
+            bat_percent=bat_percent_old;
+            }
+            else
+            {
+            bat_percent_old=bat_percent;
+            }
+        }
+    }
+}
+
 extern uint32_t main_time;
 extern uint16_t testlorarecve;
 uint8_t delaysleep_count;
 char str[17]= {"AT+IPR=9600;&W\r\n"};
 extern  UART_HandleTypeDef huart5;
+extern uint8_t stop_flag;
 void Main_Poll()
 {    
-    if(main_time>10&&only_one_flag==0)
-    {
-        only_one_flag=1;
-      Uart_ReConfigBaudRate(UART_ID_4G,115200);
-    HAL_UART_Transmit(&huart5, str,17,1000);
-    Uart_ReConfigBaudRate(UART_ID_4G,9600);
-    }
-    PowerLedTask();
-    DBG_Poll();
-    IdleTask();
-    GPS_Poll();
-    Internet_Poll();
-    HIDO_TimerPoll();
-    HIDO_ATLitePoll();
-    UDPClient_Poll();
-    HAL_IWDG_Refresh(&hiwdg); 
-    
-
-//    if(AIR780E_IsIPIdle() && Socket_IsSendQueueEmpty(0))
+//    if(main_time>10&&only_one_flag==0)
 //    {
-//        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
+//        only_one_flag=1;
+//      Uart_ReConfigBaudRate(UART_ID_4G,115200);
+//    HAL_UART_Transmit(&huart5, str,17,1000);
+//    Uart_ReConfigBaudRate(UART_ID_4G,9600);
 //    }
-    if(delaysleep_count==0/*&&!gps_need_data_flag*/)
-    if(((IfTCPConnected()&&AIR780E_IsIPIdle()&&Socket_IsSendQueueEmpty(0))/*||((!flag_TCP_reconnectting)&&!IfTCPConnected())*/))
+    if(stop_flag)
     {
-         HAL_IWDG_Refresh(&hiwdg); 
-        printf("要进入休眠了,当前时间戳%d\r\n",HIDO_TimerGetTick());
-    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
+        HAL_IWDG_Refresh(&hiwdg);
+        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
     }
-}
-void Main_Poll_666()
-{
-    u16 uwbchecksum;
-    IdleTask();
-    HAL_IWDG_Refresh(&hiwdg);
-    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
-    {   
+    else
+    {
         PowerLedTask();
         DBG_Poll();
         IdleTask();
@@ -470,97 +536,21 @@
         HIDO_TimerPoll();
         HIDO_ATLitePoll();
         UDPClient_Poll();
-        
+        HAL_IWDG_Refresh(&hiwdg); 
+        PowerDownDetect();
+        Sleep_Panduan_Poll();
     }
-    else   
-    {
-        if(chongdian_only_one_flag)//如果从充电休眠状态突然拔掉充电线,进入正常工作模式,要重启重新启动4g gps等模块
-        {HAL_NVIC_SystemReset();}    
-//    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。  然后10分钟发送一次定位信息,和XTB,其他时候休眠。
+//    if(AIR780E_IsIPIdle() && Socket_IsSendQueueEmpty(0))
 //    {
-//        fangchai_flag=1;
-//        yundong_state=0;
-//        if(fangchai_state==0||fangchai_state==1)
-//        {
-//            GPS_Poll();
-//            Internet_Poll();
-//            HIDO_TimerPoll();
-//            HIDO_ATLitePoll();
-//            UDPClient_Poll();
-//        }
-//        if(fangchai_time>QIDONG_TIME&&fangchai_state==0)
-//        {
-//            fangchai_state=1;
-//            fangchai_time=0;
-//            if(GPS_successful_flag)
-//            {
-//                UDPClient_UploadGPS((char*)GPS_data);
-//            }
-//            else
-//            {
-//                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//            }
-//        }
-//        if(fangchai_time>DENGDAI_TIME&&fangchai_state==1)
-//        {
-//            fangchai_time=0;
-//            fangchai_state=2;
-//            Stop_Mode_Poll();
-//        }
-//        if(fangchai_state==2)
-//        {
-//         HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-//        }
-//        if(fangchai_time>g_com_map[CHAICHUGPS_HZ]-QIDONG_TIME-DENGDAI_TIME&&fangchai_state==2)
-//        {
-//            HAL_NVIC_SystemReset();
-//        }         
+//        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
 //    }
-//    else//设备没被拆卸
+//    if(delaysleep_count==0/*&&!gps_need_data_flag*/)
+//    if(((IfTCPConnected()&&AIR780E_IsIPIdle()&&Socket_IsSendQueueEmpty(0))/*||((!flag_TCP_reconnectting)&&!IfTCPConnected())*/))
 //    {
-            if(receive3_gotosleep_flag)//没有处于充电状态&&同时在静止休状态,收到上位机要求的休眠标志位
-            {   
-            Stop_Mode_Poll();
-            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-                if(work_time>1200)
-                {HAL_NVIC_SystemReset();}///20分钟后再次启动工作,重复a步骤(避免铁鞋被盗找不到)
-            }
-            else
-            {
-                GPS_Poll();
-                Internet_Poll();
-                HIDO_TimerPoll();
-                HIDO_ATLitePoll();
-                UDPClient_Poll();
-//                taglist_num=5;
-                if(taglist_num>0)
-                {
-                    if(work_time>=YUNDONG_UWB_TIME)
-                    {
-                        work_time=0;
-                        Uwb_Zubao_Poll();
-                        UDPClient_UploadGPS((char*)GPS_data);
-                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
-                        taglist_num=0;
-                    }
-                }
-                else
-                {
-                        if(work_time>=g_com_map[GPS_HZ])
-                        {
-                            work_time=0;
-                            if(GPS_successful_flag)
-                            {
-                                UDPClient_UploadGPS((char*)GPS_data);
-                            }
-                            else
-                            {
-                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-                            }
-                        }
-                }
-            }
-}
+//         HAL_IWDG_Refresh(&hiwdg); 
+//        printf("要进入休眠了,当前时间戳%d\r\n",HIDO_TimerGetTick());
+//    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
+//    }
 }
 
 //*/

--
Gitblit v1.9.3