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 |   62 ++++++++++++++++++++++++++++++
 1 files changed, 61 insertions(+), 1 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 66bbcb6..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 = {
@@ -571,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;
@@ -580,6 +639,7 @@
 extern uint8_t receive_flag;
 int main(void)
 {
+	  __enable_irq();
     board_clock_run();
     boot_deinit();
     board_pins_config();

--
Gitblit v1.9.3