From 65b24351ebb9e910ce58caa59799241588378746 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期日, 27 四月 2025 10:55:50 +0800
Subject: [PATCH] UWB常开版本,跟老版本免布线基站测距,功耗130ma,

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

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 047412b..476ccbe 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -40,6 +40,10 @@
 #define UPDATE_TIME 10
 
 
+#define UWB_OPEN_COUNT 1
+#define UWB_MEASUREMENT_INTERVAL 3
+#define UWB_MEASUREMENT_INTERVAL_SLEEP 60
+
 extern uint8_t mUsartReceivePack[100];
 extern uint8_t mUsart2ReceivePack[150];
 extern uint8_t state5V_prase_flag,gps_prase_flag;
@@ -71,8 +75,20 @@
         LINK_SUCCESS,
         SEARCH_DEV,
 } Operation_step;
-Operation_step UWB_work_state;
 
+Operation_step UWB_work_state;
+// 定义状态
+typedef enum {
+    STATE_NORMAL,    // 正常状态,3秒测距上传一次
+    STATE_SLEEP      // 休眠状态,1分钟测距上传一次
+} CountState_t;
+
+uint32_t uwb_time_count = 0;  // 定时器计数值
+//uint32_t step_count = 0;      // 步数计数
+//uint32_t last_step_count = 0; // 上一次步数
+
+CountState_t current_state = STATE_NORMAL; // 当前状态
+uint32_t state_start_time = 0; // 状态开始时间
 
 Commend_SendDate send_struct;
 struct ADC_CFG_T usr_adc_cfg = {
@@ -122,7 +138,7 @@
             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(LED_POWER,0);//输出低电平关闭LED
             PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G 
             PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G 
 							sleep_timer_stop();	
@@ -316,34 +332,14 @@
  if(delaysleep_count>0)
      delaysleep_count--;
 }
-uint8_t test11,test21,test31,test41,test51;
+
 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))
-//	{
-//		 flag_4G_recdata = 1;
-//     delaysleep_count = 3;
-//        test21++;
-//	}
-    if((PWR_ON_POSITION&gpio_state))
-	{
-        PowerTask();
-        test31++;
-	}
-    if(!(SOS_ENBALE_POSITION&gpio_state))
-	{
-        UserKeyTask();
-        test21++;
-	}
+	check_input_change();
+//	uint16_t gpio_state;
+//	gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
+
 }
 
 void _4gUsart_handler(enum IO_PIN_T pin)
@@ -591,6 +587,49 @@
 	 uart_close(UART_ID0);//解绑原来串口0
 }
 
+extern uint32_t uwb_time_count;
+void upload_apppoll()
+{	
+	  uint32_t elapsed_time_jibu;
+
+    switch (current_state) 
+			{
+        case STATE_NORMAL:
+            elapsed_time_jibu = uwb_time_count - state_start_time;
+				    switch(elapsed_time_jibu)
+						{
+							case UWB_OPEN_COUNT:
+
+										CloseUWB();	
+							break;
+							
+							case UWB_MEASUREMENT_INTERVAL:
+										OpenUWB();	
+                    state_start_time = uwb_time_count;							
+							break;						
+						}
+            break;
+
+        case STATE_SLEEP:
+            elapsed_time_jibu = uwb_time_count - state_start_time;
+				    switch(elapsed_time_jibu)
+						{
+							case UWB_OPEN_COUNT:
+
+											CloseUWB();	
+							break;
+							
+							case UWB_MEASUREMENT_INTERVAL_SLEEP:
+
+											OpenUWB();	
+                      state_start_time = uwb_time_count;							
+							break;						
+						}
+            break;
+			}	
+
+}
+
 uint8_t flag_4guart_needinit=0;
 uint8_t index1,index2,index3;
 int16_t Voltage_input;
@@ -600,10 +639,11 @@
 extern uint8_t receive_flag;
 int main(void)
 {
+	  __enable_irq();
     board_clock_run();
     boot_deinit();
     board_pins_config();
-	board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200);
+	  board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200);
     // Reset reason
     reset_cause_get();
     reset_cause_clear();
@@ -623,6 +663,7 @@
     wdt_close(WDT_ID0);
     Program_Init();
     Uart_Register(UART_ID_4G, UART_ID0);
+
     Uart_Register(UART_ID_DBG_GPS, UART_ID1);
     DBG_Init();
     

--
Gitblit v1.9.3