From 200bbcc553cfb7c11b06058f3f13ca9247783e93 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期四, 05 十二月 2024 18:27:50 +0800
Subject: [PATCH] 解决多设备丢包版本

---
 keil/uwb_tag_.c |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/keil/uwb_tag_.c b/keil/uwb_tag_.c
index 1bd2f17..637d9bf 100644
--- a/keil/uwb_tag_.c
+++ b/keil/uwb_tag_.c
@@ -12,7 +12,7 @@
 #if defined(MK_SS_TWR_DW_INIT)
 
 extern int TagRange(void);
-
+void Tag_uwb_init(void);
 /* Ranging period: 1s */
 #define RANGING_PERIOD_MS (1000)
 
@@ -398,11 +398,11 @@
 }
 uint32_t count_index;
 int tt=1;
-int TagRange(void)
+void Tag_uwb_init(void)
 {
-    // The following peripherals will be initialized in the uwb_open function
+ // The following peripherals will be initialized in the uwb_open function
     // phy/mac/aes/lsp/phy timers initialized
-    uwb_open();
+			uwb_open();
 #ifdef STS_MODE
 	   // Set STS key and IV
     phy_sts_key_configure(&sts_iv_key);
@@ -435,6 +435,11 @@
 #endif
     ranging_frame_type_set(config.phy_cfg.sts_pkt_cfg);
 
+}
+int sleep_time_step=SLEEP_COUNT;
+int TagRange(void)
+{		
+		phy_timer_open(1, IRQ_PRIORITY_HIGH);
     // Register rx interrupt callback function
     mac_register_process_handler(tx_int_callback, rx_int_callback);
 
@@ -474,7 +479,15 @@
 		
 		current_count=phy_timer_count_get();//不断刷新当前计数器值
 		temp_count2=phy_timer_count_get();
-		while(mac_is_busy());//等待接收完成
+		while(mac_is_busy())//等待接收完成
+		{
+						IdleTask();
+            current_count=phy_timer_count_get();
+            if(current_count>end_receive_count&&current_count<end_receive_count+HALF_SECOND_TIME)
+            {
+                    break;
+            }
+		}
 		temp_count3=phy_timer_count_get();
 		if(receive_flag==1)//成功接收数据
 		{
@@ -506,7 +519,8 @@
 //			#endif
 		}else if(receive_flag==2){//接收出错
 		receive_flag=0;
-		sleep_timer_start(__MS_TO_32K_CNT(sleep_time_count-1));//测试
+		sleep_timer_start(__MS_TO_32K_CNT(SLEEP_COUNT-phy_timer_count_get()%30));//测试
+			sleep_time_step=SLEEP_COUNT-phy_timer_count_get()%10;
 		tempflag=uwb_rx(0, 0, RESP_RX_TIMEOUT_US);//立即开启接受并设置0超时
 		temp_count3=phy_timer_count_get();
 //		while(mac_is_busy());

--
Gitblit v1.9.3