From 8084e7a5fc17c7816cc6b7ad9cf22fef45137891 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期二, 11 二月 2025 13:44:27 +0800
Subject: [PATCH] V3.3,修改gps串口接收为dma,加入新增充电4小时自动重启一次

---
 APL/App.c |  679 +++++++++++++++++--------------------------------------
 1 files changed, 214 insertions(+), 465 deletions(-)

diff --git a/APL/App.c b/APL/App.c
index 64ec978..74b6eb4 100644
--- a/APL/App.c
+++ b/APL/App.c
@@ -57,7 +57,9 @@
 static HIDO_UINT32 l_u32LocationTick = 0;
 extern ST_GPS l_stGPS;
 extern uint32_t uwbled,gpsled,loraled,powerled;
-uint8_t uwb_send[100]={0x55,0xaa};
+uint8_t uwb_send[200]={0x55,0xaa};
+void Uwb_Zubao_Poll();
+extern IWDG_HandleTypeDef hiwdg;
 /*******************************************************************************
  *                        Local Function Declaration                           *
  *******************************************************************************/
@@ -101,97 +103,83 @@
 //    HexToAsciiSendUDP(LBS_data,u32Len);
 //    UDPClient_UploadGPS((char*)LBS_data);
 }
+extern UART_HandleTypeDef huart2;
+uint8_t chongdian_only_one_flag;
+void Stop_chongdian_Mode_Poll()
+{
+    if(chongdian_only_one_flag==0)
+    {
+        chongdian_only_one_flag=1;
+        GPS_PowerOff();
+        HAL_UART_DeInit(&huart2);
+        GPIO_InitTypeDef GPIO_InitStruct = {0};//
+        GPIO_InitStruct.Pin = GPIO_PIN_4;
+        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
+        GPIO_InitStruct.Pull = GPIO_NOPULL;
+        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 
-/*******************************************************************************
- * Function Name     : App_Poll
- * Description       : 
- * Input             : 
- * Output            : None
- * Return            : None
- * Author            : www.hido-studio.com
- * Modified Date:    : 2021年5月07日
- *******************************************************************************/
-//HIDO_VOID App_Poll(HIDO_VOID)
-//{
-//    // 充电状态
-//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET)
-//    {
-//        if(HIDO_FALSE == l_bCharge)
-//        {
-//            l_bCharge = HIDO_TRUE;
-//            l_u32ChargeTick = 0;
-//            l_u32CancelChargeReport = HIDO_FALSE;
-//        }
+        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);    
+//        Radio.Sleep();
+        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
+        dwt_entersleep();
+    }
+}
+uint8_t only_one_flag;
+void Stop_Mode_Poll()
+{
+    if(only_one_flag==0)
+    {
+        only_one_flag=1;
+        GPS_PowerOff();
+        HAL_UART_DeInit(&huart2);
+        GPIO_InitTypeDef GPIO_InitStruct = {0};//
+        GPIO_InitStruct.Pin = GPIO_PIN_4;
+        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
+        GPIO_InitStruct.Pull = GPIO_NOPULL;
+        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 
-//        if(l_bCharge == HIDO_TRUE && l_u32CancelChargeReport == HIDO_FALSE)
-//        {
-//            if((HIDO_TimerGetTick() - l_u32ChargeTick) >= HIDO_TIMER_TICK_S(10))
-//            {
-//                l_u32ChargeTick = HIDO_TimerGetTick();
-
-//                // 发送状态
-//            }
-//        }
-
-//        return;
-//    }
-//    else
-//    {
-//        l_bCharge = HIDO_FALSE;
-//    }
-
-//    // 设备被拆卸
-//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) == GPIO_PIN_RESET)
-//    {
-//        if(HIDO_FALSE == l_bDismantle)
-//        {
-//            l_bCancelAlarm = HIDO_FALSE;
-//            l_bDismantle = HIDO_TRUE;
-//            l_u32DismantleAlarmTick = 0;
-//        }
-//    }
-//    else
-//    {
-//        l_bDismantle = HIDO_TRUE;
-//    }
-
-//    // 启动蜂鸣器
-//    if(l_bDismantle == HIDO_TRUE && l_bCancelAlarm == HIDO_FALSE)
-//    {
-//        // 蜂鸣器动作
-
-//        // 每隔10秒发送一次告警
-//        if((HIDO_TimerGetTick() - l_u32DismantleAlarmTick) >= HIDO_TIMER_TICK_S(10))
-//        {
-//            l_u32DismantleAlarmTick = HIDO_TimerGetTick();
-
-//            // 发送告警
-//        }
-//    }
-
-//    // 10分钟上报一次位置
-//    if((HIDO_TimerGetTick() - l_u32LocationTick) >= HIDO_TIMER_TICK_S(1/*0 * 60*/))
-//    {
-//        l_u32LocationTick = HIDO_TimerGetTick();
-
-//        // GPS定位有效
-//        if(l_stGPS.m_eState)
-//        {
-//            // 发送GNSS位置
-//        }
-//        // GPS定位无效
-//        else
-//        {
-//            // 获取LBS位置
-//            Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//        }
-//    }
-//}
+        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);    
+//        Radio.Sleep();
+        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
+        dwt_entersleep();
+    }
+}
 extern uint16_t nomove_count;
 extern uint8_t bat_percent;
 extern uint8_t chargedbg_flag;
 u8 power_state = 0,chargeon = 0;
 uint8_t chongman_flag;
+extern uint8_t bat_percent;
+extern uint16_t heart_time;
+extern uint8_t nomove_flag;
+uint16_t qidong_time;
+#define QIDONG_TIME 60  //1分钟
+#define DENGDAI_TIME 30//90s
+//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
+#define YUNDONG_UWB_TIME 1
+#define YUNDONG_GPS4G_TIME 100
+uint8_t GPS_data[200];
+uint8_t GPS_successful_flag;
+uint8_t fangchai_flag;
+uint8_t fangchai_state;
+extern uint16_t fangchai_time;
+extern uint8_t taglist_num;
+uint16_t tagseq;
+extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
+extern uint8_t tagbat_list[ANC_MAX_NUM];
+extern TIM_HandleTypeDef htim3;
+extern uint8_t beep_state;
+//extern uint8_t air780_state;
+extern uint16_t sleep_time;
+uint8_t zuihoufasong_falg;
+extern uint8_t receive1_gotosleep_flag;
+extern uint8_t receive2_gotosleep_flag;
+extern uint8_t receive3_gotosleep_flag;
+extern uint8_t chongdian_time;
+extern uint8_t input5vtime;
+extern uint16_t work_time;
 void PowerLedTask(void)
 { 
      static u8 powerled_state=0;
@@ -204,24 +192,70 @@
         }
        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();
-        uwbled=LEDOFF;
+        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();
-            if(bat_percent>90)
-            {
-                powerled = RED;
-                gpsled = LEDOFF;
-                uwbled = LEDOFF;
-                loraled = LEDOFF;
-                chongman_flag=1;
-            }
-            else
-            {
-                powerled = RED;
+            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);
+                            }
+                        }
+                    
+                }
             }
         }
         
@@ -253,8 +287,8 @@
 //    hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP + 4);
     //deca_sleep(1000);
 
-    g_com_map[GROUP_ID]=0;
-	g_com_map[VERSION] = (2<<8)|1;
+    g_com_map[GROUP_ID]=3;
+	g_com_map[VERSION] = (3<<8)|3;
 
     if (g_com_map[COM_INTERVAL] <50)
     {
@@ -291,10 +325,12 @@
       else          
       {g_com_map[GPS_HZ]=600;}
     }
+    g_com_map[GPS_HZ]=1;
     if(g_com_map[CHAICHUGPS_HZ]<180||g_com_map[CHAICHUGPS_HZ]>3600)
     {
       {g_com_map[CHAICHUGPS_HZ]=600;}
     }
+    g_com_map[CHAICHUGPS_HZ]=1800;
     if(g_com_map[NOMOVESLEEP_TIME]>120)
     {
        g_com_map[NOMOVESLEEP_TIME]=120;
@@ -313,24 +349,24 @@
     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]);
-       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)
-    {
-//        sprintf((char *)&g_com_map[NTRIP_HOST_INDEX],"140.143.212.42");
-//        g_com_map[NTRIP_PORT_INDEX] = 8005;
-//        sprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX],"test006");
-//        sprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX],"hxzk20151102");
-//        sprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX],"RTCM32_GNSS2");
-        printf("NtripHost:%s.\r\n",(char *)&g_com_map[NTRIP_HOST_INDEX]);
-        printf("NtripPort:%d.\r\n",g_com_map[NTRIP_PORT_INDEX]);
-        printf("NtripUsername:%s.\r\n",(char *)&g_com_map[NTRIP_USERNANME_INDEX]);
-        printf("NtripPassword:%s.\r\n",(char *)&g_com_map[NTRIP_PASSWORD_INDEX]);
-        printf("NtripSourcename:%s.\r\n",(char *)&g_com_map[NTRIP_SOURCENAME_INDEX]);
-    }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NONE)
-    { 
-        printf("单点定位模式模式. \r\n");
-    }
+//       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)
+//    {
+////        sprintf((char *)&g_com_map[NTRIP_HOST_INDEX],"140.143.212.42");
+////        g_com_map[NTRIP_PORT_INDEX] = 8005;
+////        sprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX],"test006");
+////        sprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX],"hxzk20151102");
+////        sprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX],"RTCM32_GNSS2");
+//        printf("NtripHost:%s.\r\n",(char *)&g_com_map[NTRIP_HOST_INDEX]);
+//        printf("NtripPort:%d.\r\n",g_com_map[NTRIP_PORT_INDEX]);
+//        printf("NtripUsername:%s.\r\n",(char *)&g_com_map[NTRIP_USERNANME_INDEX]);
+//        printf("NtripPassword:%s.\r\n",(char *)&g_com_map[NTRIP_PASSWORD_INDEX]);
+//        printf("NtripSourcename:%s.\r\n",(char *)&g_com_map[NTRIP_SOURCENAME_INDEX]);
+//    }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NONE)
+//    { 
+//        printf("单点定位模式模式. \r\n");
+//    }
 }
 
 void IdleTask(void)
@@ -352,74 +388,15 @@
         }
 
 }
-extern uint8_t bat_percent;
-extern uint16_t heart_time;
-extern uint8_t nomove_flag;
-uint16_t qidong_time;
-#define QIDONG_TIME 60  //1分钟
-#define DENGDAI_TIME 30//90s
-//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
-#define YUNDONG_UWB_TIME 1
-#define YUNDONG_GPS4G_TIME 100
-extern UART_HandleTypeDef huart2;
-uint8_t GPS_data[100];
-uint8_t GPS_successful_flag;
-uint8_t fangchai_flag;
-uint8_t fangchai_state;
-uint8_t only_one_flag;
-uint8_t only_one_flag1;
-extern uint16_t fangchai_time;
-extern uint8_t taglist_num;
-uint16_t tagseq;
-extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
-extern uint8_t yundong_state;
-extern uint16_t yundong_time;
-extern uint8_t tagbat_list[ANC_MAX_NUM];
-extern TIM_HandleTypeDef htim3;
-extern uint8_t beep_state;
-extern uint8_t air780_state;
-void Stop_Mode_Poll()
-{
-    if(only_one_flag==0)
-    {
-        only_one_flag=1;
-        GPS_PowerOff();
-        HAL_UART_DeInit(&huart2);
-        GPIO_InitTypeDef GPIO_InitStruct = {0};//
-        GPIO_InitStruct.Pin = GPIO_PIN_4;
-        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
-        GPIO_InitStruct.Pull = GPIO_NOPULL;
-        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 
-        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);    
-        Radio.Sleep();
-    }
-}
-void Stop_Mode_chulelora_Poll()//关掉除了lora外的
-{
-    if(only_one_flag1==0)
-    {
-        only_one_flag1=1;
-        GPS_PowerOff();
-        HAL_UART_DeInit(&huart2);
-        GPIO_InitTypeDef GPIO_InitStruct = {0};//
-        GPIO_InitStruct.Pin = GPIO_PIN_4;
-        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
-        GPIO_InitStruct.Pull = GPIO_NOPULL;
-        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
-        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);    
-    }
-}
 extern uint16_t testlorarecve;
 void Uwb_Zubao_Poll()
 {       
     uint16_t state_flag;
     u16 uwbchecksum;
     state_flag=fangchai_flag<<4;
-    
+        if(taglist_num>8)
+        {taglist_num=8;}
         uwb_send[2] = 0x12;//正常模式 
         uwb_send[3] = 15+5*(taglist_num);//数据段长度
         memcpy(&uwb_send[4],&dev_id,2);
@@ -441,44 +418,41 @@
         uwbchecksum = Checksum_u16(&uwb_send[2],15+5*taglist_num);
         memcpy(&uwb_send[17+5*taglist_num],&uwbchecksum,2);
 }
-//void Main_Poll()
-//{
-//    u16 uwbchecksum;
-//    IdleTask();
-//    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸
+extern uint16_t testlorarecve;
+void Main_Poll()
+{
+    u16 uwbchecksum;
+    IdleTask();
+    HAL_IWDG_Refresh(&hiwdg);
+    if(bat_percent<=5)
+    {
+    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
+    }
+    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
+    {   
+        PowerLedTask();
+        DBG_Poll();
+        IdleTask();
+    }
+    else   
+    {
+        if(chongdian_only_one_flag)//如果从充电休眠状态突然拔掉充电线,进入正常工作模式,要重启重新启动4g gps等模块
+        {HAL_NVIC_SystemReset();}    
+//    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。  然后10分钟发送一次定位信息,和XTB,其他时候休眠。
 //    {
-//        if(air780_state>=2)
-//        {   
-//            HAL_NVIC_SystemReset();
-//        }
 //        fangchai_flag=1;
 //        yundong_state=0;
-//        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
+//        if(fangchai_state==0||fangchai_state==1)
 //        {
-//            if(bat_percent>90)
-//            {
-//                powerled = RED;
-//                gpsled = LEDOFF;
-//                uwbled = LEDOFF;
-//                loraled = LEDOFF;
-//                chongman_flag=1;
-//            }
-//            else
-//            {
-//                powerled = RED;
-//            }
+//            GPS_Poll();
+//            Internet_Poll();
+//            HIDO_TimerPoll();
+//            HIDO_ATLitePoll();
+//            UDPClient_Poll();
 //        }
-//        else
-//        {chongman_flag=0;}
-
-//        GPS_Poll();
-//        Internet_Poll();
-//        HIDO_TimerPoll();
-//        HIDO_ATLitePoll();
-//        UDPClient_Poll();
-
-//        if(fangchai_time>g_com_map[CHAICHUGPS_HZ])
+//        if(fangchai_time>QIDONG_TIME&&fangchai_state==0)
 //        {
+//            fangchai_state=1;
 //            fangchai_time=0;
 //            if(GPS_successful_flag)
 //            {
@@ -488,215 +462,33 @@
 //            {
 //                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();
+//        }         
 //    }
 //    else//设备没被拆卸
 //    {
-//        fangchai_flag=0;
-//        if(fangchai_state>=2)
-//        {   
-//            HAL_NVIC_SystemReset();
-//        }
-//        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
-//        {   yundong_state=0;
-//            PowerLedTask();
-//            DBG_Poll();
-//            IdleTask();
-//            Internet_Poll();
-//            HIDO_TimerPoll();
-//            HIDO_ATLitePoll();
-//            UDPClient_Poll();
-//            uwbled=LEDOFF;
-//        } 
-//        else//没有5V输入
-//        {
-//            if(nomove_flag)//静止状态
-//            {
-//                yundong_state=0;
-//                Stop_Mode_Poll();
-//                HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-//            }
-//            else//运动状态
-//            {   
-//                if(yundong_state==0)
-//                {Radio.Rx(0);}
-//                yundong_state=1;               
-//                GPS_Poll();
-//                Internet_Poll();
-//                HIDO_TimerPoll();
-//                HIDO_ATLitePoll();
-//                UDPClient_Poll();
-////                taglist_num=5;
-//                if(taglist_num>0)
-//                {
-//                    if(air780_state>=2)
-//                    {   
-//                        HAL_NVIC_SystemReset();
-//                    }
-//                    if(yundong_time>=YUNDONG_UWB_TIME)
-//                    {
-//                        air780_state=0;
-//                        yundong_time=0;
-//                        Uwb_Zubao_Poll();
-//                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
-////                        loraled=BLUE;
-//                        taglist_num=0;
-//                    }
-//                }
-//                else
-//                {
-//                    if(g_com_map[GPS_HZ]==1)
-//                    {
-//                        if(yundong_time>=g_com_map[GPS_HZ])
-//                        {
-//                            yundong_time=0;
-//                            if(GPS_successful_flag)
-//                            {
-//                                UDPClient_UploadGPS((char*)GPS_data);
-////                                loraled=GREEN;
-//                            }
-//                            else
-//                            {
-//                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-////                                loraled=WHITE;
-//                            }
-//                        }
-//                    }
-//                    else
-//                    {
-//                        if(yundong_time>=60&&air780_state==0)
-//                        {
-//                            air780_state=1;
-//                            yundong_time=0;
-//                            if(GPS_successful_flag)
-//                            {
-//                                UDPClient_UploadGPS((char*)GPS_data);
-////                                loraled=GREEN;
-//                            }
-//                            else
-//                            {
-//                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-////                                loraled=WHITE;
-//                            }
-//                        }
-//                        if(yundong_time>=30&&air780_state==1)
-//                        {
-//                            air780_state=2;
-//                            yundong_time=0;
-//                            Stop_Mode_chulelora_Poll();
-//                        }
-//                        if(air780_state==2)
-//                        {
-//                            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-//                        }
-//                        if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2)
-//                        {
-//                            HAL_NVIC_SystemReset();
-//                        }
-//                    }
-//                }
-//            }            
-//        }
-//    }
-//}
-
-extern uint16_t testlorarecve;
-void Main_Poll()
-{
-    u16 uwbchecksum;
-    IdleTask();
-    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。  然后10分钟发送一次定位信息,和XTB,其他时候休眠。
-    {
-        if(air780_state>=2)
-        {   
-            HAL_NVIC_SystemReset();
-        }
-        fangchai_flag=1;
-        yundong_state=0;
-        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
-        {
-            if(bat_percent>90)
-            {
-                powerled = RED;
-                gpsled = LEDOFF;
-                uwbled = LEDOFF;
-                loraled = LEDOFF;
-                chongman_flag=1;
-            }
-            else
-            {
-                powerled = RED;
-            }
-        }
-        else
-        {chongman_flag=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();
-        }         
-    }
-    else//设备没被拆卸
-    {
-        fangchai_flag=0;
-        if(fangchai_state>=2)
-        {   
-            HAL_NVIC_SystemReset();
-        }
-        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
-        {   yundong_state=0;
-            PowerLedTask();
-            DBG_Poll();
-            IdleTask();
-            Internet_Poll();
-            HIDO_TimerPoll();
-            HIDO_ATLitePoll();
-            UDPClient_Poll();
-            uwbled=LEDOFF;
-        } 
-        else//没有5V输入
-        {
-            if(nomove_flag)//静止状态
-            {
-                yundong_state=0;
-                Stop_Mode_Poll();
-                HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-            }
-            else//运动状态
+            if(receive3_gotosleep_flag)//没有处于充电状态&&同时在静止休状态,收到上位机要求的休眠标志位
             {   
-                if(yundong_state==0)
-                {Radio.Rx(0);}
-                yundong_state=1;               
+            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();
@@ -705,75 +497,32 @@
 //                taglist_num=5;
                 if(taglist_num>0)
                 {
-                    if(air780_state>=2)
-                    {   
-                        HAL_NVIC_SystemReset();
-                    }
-                    if(yundong_time>=YUNDONG_UWB_TIME)
+                    if(work_time>=YUNDONG_UWB_TIME)
                     {
-                        air780_state=0;
-                        yundong_time=0;
+                        work_time=0;
                         Uwb_Zubao_Poll();
+                        UDPClient_UploadGPS((char*)GPS_data);
                         HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
-//                        loraled=BLUE;
                         taglist_num=0;
                     }
                 }
                 else
                 {
-                    if(g_com_map[GPS_HZ]==1)
-                    {
-                        if(yundong_time>=g_com_map[GPS_HZ])
+                        if(work_time>=g_com_map[GPS_HZ])
                         {
-                            yundong_time=0;
+                            work_time=0;
                             if(GPS_successful_flag)
                             {
                                 UDPClient_UploadGPS((char*)GPS_data);
-//                                loraled=GREEN;
                             }
                             else
                             {
                                 Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//                                loraled=WHITE;
                             }
                         }
-                    }
-                    else
-                    {
-                        if(yundong_time>=60&&air780_state==0)
-                        {
-                            air780_state=1;
-                            yundong_time=0;
-                            if(GPS_successful_flag)
-                            {
-                                UDPClient_UploadGPS((char*)GPS_data);
-//                                loraled=GREEN;
-                            }
-                            else
-                            {
-                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
-//                                loraled=WHITE;
-                            }
-                        }
-                        if(yundong_time>=30&&air780_state==1)
-                        {
-                            air780_state=2;
-                            yundong_time=0;
-                            Stop_Mode_chulelora_Poll();
-                        }
-                        if(air780_state==2)
-                        {
-                            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
-                        }
-                        if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2)
-                        {
-                            HAL_NVIC_SystemReset();
-                        }
-                    }
                 }
-            }            
-        }
-    }
+            }
+}
 }
 
 //*/

--
Gitblit v1.9.3