From 753f1e274931177b6daeb391cc4307439aaa6553 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期五, 25 七月 2025 11:27:39 +0800
Subject: [PATCH] 修改电流检测逻辑,现在是1分钟检测一次,然后检测到低电量后会检测10次才会关机,V2.14

---
 keil/include/main/main.c |  115 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 84 insertions(+), 31 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 74170c8..c75b424 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -181,7 +181,7 @@
         {
             bat_percent = 0;
         }
-        else if(fVoltage_mv > 4200)
+        else if(fVoltage_mv > 4100)
         {
             bat_percent = 100;
         }
@@ -317,15 +317,21 @@
         keystarttime2 =  HIDO_TimerGetTick();
     }
 }
+uint8_t guanjiflag_count=0;
 void MinuteTask(void)
 {
     PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
     delay_ms(100);
     adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
+    if(bat_percent<1)
+    {
+      guanjiflag_count++;
+    }
+    
 }
 void SecondTask(void)
 {   static uint8_t second_count;
-    if(second_count++>120)
+    if(second_count++>60)
     {
         second_count = 0;
         MinuteTask();
@@ -359,11 +365,46 @@
 //		nomove_count=g_com_map[NOMOVESLEEP_TIME]+1;
 //		}
 }
+
+void led_offtask()
+{
+    if(ledonflag==1)
+    {
+        ledonflag=0;
+        uwbled=0;
+        rtkled=0;
+        led4g=0;
+        powerled=0;
+        Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
+    }
+}
+uint16_t led_flag;
+void Led_Task()
+{
+    if(led_flag==1)
+    {
+       led_flag=0;  
+        if(DBG_GetMode() == DBG_MODE_SHELL)
+        {
+
+            if(bat_percent>15)
+            {
+                powerled = BLUE;
+            } else {
+                powerled = RED;
+            }
+            ledonflag=1;
+
+            Set4LEDColor(uwbled,rtkled,led4g,powerled);        
+        }
+    }
+}
 uint8_t tt=1;
 uint8_t flag_sleeptimer,flag_secondtask,secondtask_count,log_4g_enable_flag;
 uint8_t uwb_offtime_count=0;
 uint8_t input5v_time;
 extern uint8_t taglist_num;
+
 uint8_t gps_ntripsend;
 extern uint8_t uwb_OpenClose_flag;
 static void sleep_timer_callback(void *dev, uint32_t time)
@@ -373,7 +414,8 @@
     {
         input5v_time=1;
         flag_secondtask = 1;
-        if(g_com_map[UWBFrequency]>1)
+        led_flag=1;
+        if(g_com_map[UWBFrequency]>1||current_state==STATE_SLEEP)
         {
             uwb_time_count++;
         }
@@ -397,8 +439,9 @@
             Set4LEDColor(uwbled,rtkled,led4g,powerled);
 //        uart_send(UART_ID1, ceshidata, 50,NULL);
         }
+        
         input5v_time=1;
-        if(taglist_num==0&&g_com_map[UWBFrequency]==1&&g_com_map[UWBENBLE]==1&&uwb_OpenClose_flag==1)
+        if(taglist_num==0&&g_com_map[UWBFrequency]==1&&g_com_map[UWBENBLE]==1&&uwb_OpenClose_flag==1&&current_state == STATE_NORMAL)
         {
             CloseUWB();
             Uwb_init();
@@ -543,8 +586,8 @@
     }
 
     g_com_map[MODBUS_MODE] = 0;
-    log_4g_enable_flag=g_com_map[LOG_4G_ENABLE];
-    g_com_map[VERSION] = (2<<8)|8;
+    log_4g_enable_flag =1;//g_com_map[LOG_4G_ENABLE];
+    g_com_map[VERSION] = (2<<8)|14;
 
 
     LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
@@ -650,8 +693,10 @@
                 }
                 Internet_Poll();
                 HIDO_TimerPoll();
-                HIDO_ATLitePoll();
+                HIDO_ATLitePoll();            
                 TCPClient_Poll();
+                Led_Task();
+
                 if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
                 {
                     TCPClient_Poll_1();
@@ -661,6 +706,8 @@
                     flag_secondtask = 0;
                     SecondTask();
                 }
+
+                led_offtask();
                 UserKeyTask();
             }
             UART_CheckReceive();
@@ -671,7 +718,7 @@
             }
             if(DBG_GetMode() == DBG_MODE_SHELL)
             {
-                Set4LEDColor(uwbled,rtkled,led4g,powerled);
+//                Set4LEDColor(uwbled,rtkled,led4g,powerled);
                 if(g_com_map[CNT_RESTART]==1)
                 {
                     g_com_map[CNT_RESTART]=0;
@@ -722,15 +769,15 @@
 //                    uart1_change_from_debug_to_gps();//测试
             //                PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
             //保留串口输出到debug口这样可以看到看门狗的复位
-            //关闭电源前检查PCA输出脚的电平保证不供电在关闭电源脚
-            PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED
-            PCA9555_Set_One_Value_Output(TTS_ENABLE,0);
-            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);
-            PCA9555_Set_One_Value_Output(GPS_POWER,0);//关GPS
-            delay_ms(200);
+//            //关闭电源前检查PCA输出脚的电平保证不供电在关闭电源脚
+//            PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED
+//            PCA9555_Set_One_Value_Output(TTS_ENABLE,0);
+//            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);
+//            PCA9555_Set_One_Value_Output(GPS_POWER,0);//关GPS
+//            delay_ms(200);
 
-            PCA9555_Set_One_Value_Output(PWR_ENABLE,0);//低电平关闭
-
+//            PCA9555_Set_One_Value_Output(PWR_ENABLE,0);//低电平关闭
+            PCA9555_Close_Power();
 
         }
     }
@@ -746,20 +793,20 @@
         NVIC_SystemReset();
     }
     HIDO_TimerPoll();
-    if(ledonflag==1)
-    {
-        ledonflag=0;
-        uwbled=0;
-        rtkled=0;
-        led4g=0;
-        powerled=0;
-        Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
-    }
+//    if(ledonflag==1)
+//    {
+//        ledonflag=0;
+//        uwbled=0;
+//        rtkled=0;
+//        led4g=0;
+//        powerled=0;
+//        Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF);
+//    }
     if(bat_percent<5&&jiancebat_percent_flag)
     {
         WT588E_PLAY(14);
     }
-    if(bat_percent<1&&bat_percent_only_one&&jiancebat_percent_flag)
+    if(bat_percent<1&&bat_percent_only_one&&jiancebat_percent_flag&&(guanjiflag_count>9))
     {
         WT588E_PLAY(15);
         userkey_state=3;
@@ -777,11 +824,12 @@
         Set4LEDColor(uwbled,rtkled,led4g,powerled);
         if(HIDO_TimerGetTick() - guanjiflagtime>3)
         {
-            PCA9555_Set_One_Value_Output(TTS_ENABLE,0);     //关闭语音输入
-            PCA9555_Set_One_Value_Output(LED_POWER,0);      //输出低电平关闭LED
-            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);
-            PCA9555_Set_One_Value_Output(GPS_POWER,0);      //关GPS
-            PCA9555_Set_One_Value_Output(PWR_ENABLE,0);     //低电平关闭
+//            PCA9555_Set_One_Value_Output(TTS_ENABLE,0);     //关闭语音输入
+//            PCA9555_Set_One_Value_Output(LED_POWER,0);      //输出低电平关闭LED
+//            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);
+//            PCA9555_Set_One_Value_Output(GPS_POWER,0);      //关GPS
+//            PCA9555_Set_One_Value_Output(PWR_ENABLE,0);     //低电平关闭
+            PCA9555_Close_Power();
         }
 
     }
@@ -806,6 +854,7 @@
 uint8_t GPS_UPLOAD_FLAG=0;
 uint32_t elapsed_time_jibu;
 extern uint8_t uwb_OpenClose_flag;
+uint8_t uwb_close_count,uwb_close_count1;
 void upload_apppoll()
 {
 
@@ -839,6 +888,7 @@
         case UWB_OPEN_COUNT:
             CloseUWB();
             UWBSendUDPTask();
+//            uwb_close_count++;        
             break;
 
         case UWB_MEASUREMENT_INTERVAL_SLEEP:
@@ -847,6 +897,7 @@
             Uwb_init();
             OpenUWB();
             state_start_time = uwb_time_count;
+//            uwb_close_count1++;        
             break;
         }
     }
@@ -1028,6 +1079,8 @@
         }
         IMUTask();
         IdleTask();
+//        PCA9555_low_power_consumption();
         check_step_and_update_state();
+        led_offtask();
     }
 }

--
Gitblit v1.9.3