From e9fc03943f7a429c6c9d0e7123ba637f317805be Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期三, 16 四月 2025 16:15:45 +0800
Subject: [PATCH] 现在更换为N303的GPS,添加完休眠的版本,室外功耗55ma,室内25ma

---
 keil/include/main/main.c |  124 +++++++++++++++++++++++------------------
 1 files changed, 70 insertions(+), 54 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 64fa1b5..c40c84e 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -39,6 +39,10 @@
 #define WARING_LIMIT_TIME 10
 #define UPDATE_TIME 10
 
+//室内外阈值
+#define XINGHAOQIANGDU_VALUE 100
+#define WEIXINGSHULIANG_VALUE 5
+
 
 extern uint8_t mUsartReceivePack[100];
 extern uint8_t mUsart2ReceivePack[150];
@@ -96,7 +100,7 @@
     .flow = UART_FLOW_CONTROL_NONE,
     .rx_level = UART_RXFIFO_CHAR_1,
     .tx_level = UART_TXFIFO_EMPTY,
-    .baud = BAUD_115200,
+    .baud = BAUD_9600,
 #if (TEST_UART_MODE == TEST_UART_POLL_MODE)
     .dma_en = false,
     .int_rx = false,
@@ -121,10 +125,12 @@
             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(MAIN_RI,1);
+	          PCA9555_Set_One_Value_Output(MAIN_RI,1);	
             PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G 
-            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G 
-							sleep_timer_stop();	
+	          PCA9555_Set_One_Value_Output(LED_POWER,0);//关闭DENG 
+            PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G         
+						sleep_timer_stop();	
 						//adc_close();
             power_enter_power_down_mode(1);
 //						LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n");
@@ -176,8 +182,9 @@
 uint32_t ledontime;
 void IMUTask(void)
 {
-	if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==2)
-	{//power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH);
+	if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1)
+	{
+		power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
 		mcu_deep_sleep();
 	}
 }
@@ -280,7 +287,7 @@
 //extern uint8_t ceshidata[500];
 extern uint8_t ceshichangdu;
 uint8_t gps_ntripsend;
-extern uint8_t in_the_room_flag;
+
 extern uint8_t lounei_flag;
 extern uint16_t g_spsum_GSV,g_snum_GSV;
 extern uint16_t g_spsum_GSV_sum;
@@ -288,11 +295,13 @@
 extern uint8_t ceju_leave_flag;
 extern uint8_t fixed_solution_count_minute;
 uint8_t open_gps_time=0;
+uint16_t uwb_time_count=0;
 static void sleep_timer_callback(void *dev, uint32_t time)
 {
 if(secondtask_count++%2==0)
     {  
-        open_gps_time++;			
+        open_gps_time++;	
+        uwb_time_count++;			
         input5v_time=1;
         flag_secondtask = 1;
         if(!read_5v_input_pca())
@@ -316,34 +325,36 @@
 //        OpenUWB();
         }
 //				in_the_room_flag=1;	
-      if(30<open_gps_time<90)
+      if(30<open_gps_time&&open_gps_time<=90)
 			{
 			Receive_g_spsum_Data(g_spsum_GSV);
-			Receive_g_snum_Data(g_snum_GSV);
+			Receive_g_snum_Data(g_snum_GSV);			
+			if((g_spsum_GSV_sum<XINGHAOQIANGDU_VALUE||g_snum_GSV_sum<WEIXINGSHULIANG_VALUE)&&(fixed_solution_count_minute<30))
+			{
+			lounei_flag=1;
 			}
+			if((XINGHAOQIANGDU_VALUE<g_spsum_GSV_sum&&WEIXINGSHULIANG_VALUE<g_snum_GSV_sum)&&(fixed_solution_count_minute>30))				
+			{
+			lounei_flag=0;
+			}
+			}
+
+			if(open_gps_time>90)
+			{
 			if(ceju_leave_flag==1)
 			{
 			Receive_g_spsum_Data(g_spsum_GSV);
 			Receive_g_snum_Data(g_snum_GSV);
-			if(open_gps_time>90)
-			{
-			 open_gps_time=90;
-
-//			if((g_spsum_GSV_sum<200&&g_snum_GSV_sum<3)&&(fixed_solution_count_minute<30||fixed_solution_count_minute==0))				
-			if((g_spsum_GSV_sum<300||g_snum_GSV_sum<20)&&(fixed_solution_count_minute<30))
+				
+			if((g_spsum_GSV_sum<XINGHAOQIANGDU_VALUE||g_snum_GSV_sum<WEIXINGSHULIANG_VALUE)&&(fixed_solution_count_minute<30))
 			{
 			lounei_flag=1;
-
-//			Switch_low_power_mode(lounei_flag);
 			}
-			if((400<g_spsum_GSV_sum&&10<g_snum_GSV_sum)&&(fixed_solution_count_minute>30))				
-//			if((200<g_spsum_GSV_sum&&3<g_snum_GSV_sum)&&(ceju_leave_flag==1))
+			if((XINGHAOQIANGDU_VALUE<g_spsum_GSV_sum&&WEIXINGSHULIANG_VALUE<g_snum_GSV_sum)&&(fixed_solution_count_minute>30))				
 			{
 			lounei_flag=0;
-//			Switch_low_power_mode(lounei_flag);
 			}
-			} 
-			
+
 			if(heart_upload_time==60)
 			{
 			ceju_leave_flag=0;
@@ -355,29 +366,33 @@
 			}
 			if(heart_upload_time==0||heart_upload_time==60)
 			{
-				TCPHeartBeatUpload();	
 				heart_upload_time=0;
-
 			}
 			heart_upload_time++;
 			}
 
+		}
+			if(open_gps_time>149&&lounei_flag==1)
+			{
+
+			if(open_gps_time-90==60)
+			{
+				open_gps_time=90;
+				TCPHeartBeatUpload();	
+			}
 			
-
-
 	
-			
- 			    
-      	
+			}			
+		uwb_app_poll();
 
-		
-
-    }else{
-        flag_secondtask = 0;
+    }
+		else
+		{
+       flag_secondtask = 0;
     }
     if(gps_ntripsend==1)
     {
- gps_ntripsend=2;   
+     gps_ntripsend=2;   
     }
  if(delaysleep_count>0)
      delaysleep_count--;
@@ -386,25 +401,26 @@
 static void pca_handler(enum IO_PIN_T pin)
 {
 	PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值
-	uint16_t gpio_state;
-	gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
-    test41++;
-	if(WAKE_UP_POSITION&gpio_state)
-	{
-		nomove_count=0;
-        test11++;
-	}
-//	if(!(MAIN_RI_POSITION&gpio_state))
+	check_input_change();
+//	uint16_t gpio_state;
+//	gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
+//    test41++;
+//	if(WAKE_UP_POSITION&gpio_state)
 //	{
-//		 flag_4G_recdata = 1;
-//     delaysleep_count = 3;
-//        test21++;
+//		nomove_count=0;
+//        test11++;
 //	}
-    if((PWR_ON_POSITION&gpio_state))
-	{
-        PowerTask();
-        test31++;
-	}
+////	if(!(MAIN_RI_POSITION&gpio_state))
+////	{
+////		 flag_4G_recdata = 1;
+////     delaysleep_count = 3;
+////        test21++;
+////	}
+//    if((PWR_ON_POSITION&gpio_state))
+//	{
+//        PowerTask();
+//        test31++;
+//	}
 }
 
 void _4gUsart_handler(enum IO_PIN_T pin)
@@ -699,7 +715,7 @@
     adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
     pca_input_detection_init(pca_handler);//pca检测输入
     Uwb_init();
-//    OpenUWB();    
+    OpenUWB();    
 //    DBG_SetMode(DBG_MODE_SHELL);
 //    Shell_Init();
 
@@ -719,7 +735,7 @@
                 PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS
     while (1)
     { 
-			  uwb_app_poll();
+			  
         Internet_Poll();
         HIDO_TimerPoll();
         HIDO_ATLitePoll();

--
Gitblit v1.9.3