From 6ae3d4efdc752bb9ae0758b54ddf00d3af761f39 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期六, 05 七月 2025 14:44:19 +0800
Subject: [PATCH] V1.30修改了5V输入,反复插拔串口导致的死机问题,现在是关闭所有电源之后,延时200ms的之后才会拉低电源,保留串口DEBUG能看到看门狗的复位日志输出

---
 keil/include/main/main.c |   91 +++++++++++++++++++++++++++++++--------------
 1 files changed, 63 insertions(+), 28 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 0abb809..8be9910 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -139,21 +139,22 @@
 uint8_t onlyoneflag=1;
 void mcu_deep_sleep(void)
 {
-    
+  //  char str[19]= {"AT+POWERMODE=ST\r\n"};
                 uint32_t lock;
+   // uart_send(UART_ID0, str,19, NULL);
             trace_flush();
             lock = int_lock();
 //						LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n");
 //						gps_air780_power_change(0,0);//关闭gps,4G 
             PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED
-            PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G 
+            PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps
 //            PCA9555_Set_One_Value_Output(TTS_ENABLE,0);
 
 //            gpio_pin_get_val(PCA_INPUT_DETECT);
-            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G 
-
+//            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭4G AT+CPOWD
+            
 			sleep_timer_stop();
-//            delay_ms(200);
+//            delay_ms(1);
            if(!gpio_pin_get_val(PCA_INPUT_DETECT))
             {
             return;
@@ -213,7 +214,7 @@
 uint32_t keystarttime,keystarttime2,keystarttime3;
 extern uint32_t get_in_num,get_out_num;
 uint8_t flag_4G_recdata;
-uint8_t ledonflag;
+uint8_t ledonflag,_4gclose_flag;
 uint32_t ledontime;
 extern uint8_t flag_first_TCPconnect;
 void IMUTask(void)
@@ -227,17 +228,26 @@
         userkey_state=4;
         heartbeasend_flag = 1;
         sleepflag=1;
-        
+         
         sleepflagtime=HIDO_TimerGetTick();
         }
 	}
     if(sleepflag)
     {
-     if(HIDO_TimerGetTick() - sleepflagtime>3)  
-     {
-		power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
-		mcu_deep_sleep();
-     }         
+        if(HIDO_TimerGetTick() - sleepflagtime>1)  
+         {
+            if(!_4gclose_flag)
+            {
+                _4gclose_flag = 1;
+                PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);
+            }                
+         }
+        
+        if(HIDO_TimerGetTick() - sleepflagtime>3)  
+         {
+            power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
+            mcu_deep_sleep();
+         }         
     }
 }
 void powerON_Task(void)
@@ -570,7 +580,7 @@
 //		}
     g_com_map[MODBUS_MODE] = 0;
 		log_4g_enable_flag=g_com_map[LOG_4G_ENABLE];
-    g_com_map[VERSION] = (1<<8)|27;
+    g_com_map[VERSION] = (1<<8)|30;
           
         
     LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
@@ -581,6 +591,11 @@
     LOG_INFO(TRACE_MODULE_APP,"设备UWB工作间隔: %x .\r\n",g_com_map[UWBFrequency]);
     LOG_INFO(TRACE_MODULE_APP,"设备GPS工作间隔: %x .\r\n",g_com_map[GPSFrequency]);
     LOG_INFO(TRACE_MODULE_APP,"当前GPS工作波特率: %d .\r\n",gpsbaudrate1);
+    #ifdef _4G_115200
+    LOG_INFO(TRACE_MODULE_APP,"当前4G波特率: 115200.\r\n");
+    #else
+    LOG_INFO(TRACE_MODULE_APP,"当前4G波特率: 9600.\r\n");
+    #endif
 //    LOG_INFO(TRACE_MODULE_APP,"充电是否开机标志位: %d .\r\n",g_com_map[URT_BQ]);
     if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
     {
@@ -673,8 +688,8 @@
                             HIDO_TimerPoll();
                             HIDO_ATLitePoll();
                             TCPClient_Poll();
-//                            if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
-//                            {TCPClient_Poll_1();}
+                            if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
+                            {TCPClient_Poll_1();}
                             if(flag_secondtask)
                             {
                                 flag_secondtask = 0;
@@ -717,19 +732,39 @@
             }
             else 
             {
-                if(state5v==1)
+//                if(state5v==1)
+//                {
+//                    g_com_map[MODBUS_MODE] = 0;
+//                    state5v=0;
+//                    state5V_prase_flag=state5v;
+//                    gps_prase_flag=1;//恢复gps解析
+//                    uart1_change_from_debug_to_gps();//测试
+//    //                PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
+//                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);//低电平关闭
+//                                delay_us(1000000);
+//                                  
+//                }
+               if(state5v==1)
                 {
                     g_com_map[MODBUS_MODE] = 0;
                     state5v=0;
                     state5V_prase_flag=state5v;
-                    gps_prase_flag=1;//恢复gps解析
-                    uart1_change_from_debug_to_gps();//测试
-    //                PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
+//                    gps_prase_flag=1;//恢复gps解析
+//                    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);
+                    
                 PCA9555_Set_One_Value_Output(PWR_ENABLE,0);//低电平关闭
-                                delay_us(1000000);
+
                                   
                 }
             }
@@ -960,10 +995,10 @@
 //	    NTRIPClient_Init();
 //	    NTRIPApp_Init();
 //    }
-//    if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
-//    {
-//        TCPClient_Init_1();
-//    }
+    if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
+    {
+        TCPClient_Init_1();
+    }
 //    HTTPClient_Init();
     wdt_open(WDT_ID0,&app_wdt_cfg);//30s检测喂狗
     LED_output_init();//配置彩色灯引脚
@@ -1021,10 +1056,10 @@
         HIDO_ATLitePoll();
         TCPClient_Poll();
         wdt_ping(WDT_ID0);//喂狗
-//        if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
-//        {
-//            TCPClient_Poll_1();
-//        }
+        if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
+        {
+            TCPClient_Poll_1();
+        }
         if(flag_secondtask)
         {
             flag_secondtask = 0;

--
Gitblit v1.9.3