From 9bd738443a77409f46f3447d46b3fa5f91b31309 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期一, 21 七月 2025 16:10:17 +0800
Subject: [PATCH] 增加读取时串口0回包引脚控制逻辑

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

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index cac88e7..c687682 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -136,7 +136,7 @@
     .flow = UART_FLOW_CONTROL_NONE,
     .rx_level = UART_RXFIFO_CHAR_1,
     .tx_level = UART_TXFIFO_EMPTY,
-    .baud = BAUD_9600,
+    .baud = BAUD_115200,
 #if (TEST_UART_MODE == TEST_UART_POLL_MODE)
     .dma_en = false,
     .int_rx = false,
@@ -151,9 +151,13 @@
     .int_tx = false,
 #endif
 };
-void uart_receive_callback(void *dev, uint32_t err_code)
+void uart0_receive_callback(void *dev, uint32_t err_code)
 {
-    uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
+    uart_receive(UART_ID0,m_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback);
+}
+void uart1_receive_callback(void *dev, uint32_t err_code)
+{
+    uart_receive(UART_ID1,m_EUART1_DMA_RXBuf,EUART1_RX_BUF_SIZE,uart1_receive_callback);
 }
 void mcu_deep_sleep(void)
 {
@@ -295,8 +299,10 @@
 
 }
 #define BIND_COUNT_NUM 50
-uint8_t bind_flag=1,bind_count=BIND_COUNT_NUM;
+uint8_t bind_flag;
+int8_t bind_count=BIND_COUNT_NUM;
 extern uint8_t find_flag;
+uint8_t poll_count,poll_flag;
 void SecondTask(void)
 {static uint8_t second_count;
     if(second_count++>60)
@@ -304,16 +310,17 @@
         second_count = 0;
         MinuteTask();
     }
-			if(bind_flag)
-	{
-		if(bind_count--<=0)
-		{
-		bind_count=BIND_COUNT_NUM;
-		copy_taglist_to_flash();
-		sys_reset(0);			
-		bind_flag=0;
-		}
-	}
+		poll_flag=1;
+//			if(bind_flag)
+//	{
+//		if(bind_count--<=0)
+//		{
+//		bind_count=BIND_COUNT_NUM;
+//		copy_taglist_to_flash();
+//		sys_reset(0);			
+//		bind_flag=0;
+//		}
+//	}
 //    //UWB状态检测
 //if(!power_low_flag)//低供电下不需要检测重连
 //	{
@@ -395,21 +402,20 @@
 extern uint16_t ip0,ip1,ip2,ip3,port;
 extern uint8_t gps_4g_flag;
 extern uint8_t gps_need_data_flag,gps_open_flag;
-
+extern uint16_t bind_distance,button_determinate_distance,change_by_frequency_distance;
+extern uint8_t tag_near_frequency;
 void Program_Init(void)
 {
-    Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为
+    Usart1ParseDataCallback = Usart1ParseDataHandler;//需改为默认为gps处理,Usart1ParseDataHandler为升级处理当调试时候改为
+		Usart0ParseDataCallback=Usart0ParseDataHandler;
     parameter_init_anchor();//g_com_map表初始化角色默认为基站
     dev_id=g_com_map[DEV_ID];//这里不太对
     group_id=g_com_map[GROUP_ID];//组ID
     memcpy(&disoffset,&g_com_map[DIST_OFFSET],2);
-    warning_distance=g_com_map[ALARM_DISTANCE1];
-    prewarning_distance=g_com_map[ALARM_DISTANCE2];
-    send_struct.warnDistence=warning_distance;
-    send_struct.alarmDistence=prewarning_distance;//更新报警距离
-    memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID
-    send_struct.tagId=dev_id;//更新设备ID
-
+		memcpy(&bind_distance,&g_com_map[BIND_DISTANCE],2);
+		memcpy(&button_determinate_distance,&g_com_map[DETERMINATION_DISTANCE],2);//设定开关判断距离
+		memcpy(&tag_near_frequency,&g_com_map[NERA_FREQUENCY],1);//设定附近HZ数
+		memcpy(&change_by_frequency_distance,&g_com_map[FREQUENCY_DISTANCE],2);//设定修改HZ生效默认范围
     if(g_com_map[BIND_DEV_ID]==0)
     {
         UWB_work_state = UN_BIND;
@@ -431,9 +437,13 @@
     ip3 = (g_com_map[TCP_IP_3]>>12&0xf)*1000+(g_com_map[TCP_IP_3]>>8&0xf)*100+(g_com_map[TCP_IP_3]>>4&0xf)*10+(g_com_map[TCP_IP_3]&0xf);
     port = g_com_map[TCP_PORT];
     g_com_map[VERSION] = (1<<8)|0;
+		 gpio_pin_set(CHANGE_UART_PIN);//;拉高打印输出
     LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
     LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_无感闸机 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
     LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port);
+		while(uart_tx_in_progress(UART_ID0));
+		gpio_pin_clr(CHANGE_UART_PIN);//;拉低输入
+			
 }
 
 
@@ -485,6 +495,7 @@
 //        }
 //			}
 		UART0_CheckReceive();
+		UART_CheckReceive();
 }
 void boot_deinit(void)
 {
@@ -504,7 +515,7 @@
 int tt2;
 int test1,test3;
 uint32_t test4;
-
+#define SLEEP_TIMER_NUM 1000
 int main(void)
 {
     board_clock_run();
@@ -515,20 +526,22 @@
     reset_cause_get();
     reset_cause_clear();
 //注意串口一波特率改为9600了为了能和GPS通信上
-    // Load calibration parameters from NVM
-    uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1;
-    uint32_t external_flash = (REG_READ(0x40010030) >> 28) & 0x3;
-    if (internal_flash || external_flash == 1)
-    {
-        WsfNvmInit();
-        board_calibration_params_load();
-        flash_close(FLASH_ID0);
-    }
-    else
-    {
-        board_calibration_params_default();
-    }
+//    // Load calibration parameters from NVM
+//    uint32_t internal_flash = (REG_READ(0x40000018) >> 17) & 0x1;
+//    uint32_t external_flash = (REG_READ(0x40010030) >> 28) & 0x3;
+//    if (internal_flash || external_flash == 1)
+//    {
+//        WsfNvmInit();
+//        board_calibration_params_load();
+//        flash_close(FLASH_ID0);
+//    }
+//    else
+//    {
+//        board_calibration_params_default();
+//    }
 
+  // Load calibration parameters
+    board_calibration_params_load();
     // Chip calibration
     calib_chip();
 
@@ -539,28 +552,36 @@
     // open system timer
     //sys_timer_open();
     gpio_open();
-		LED_output_init();//配置彩色灯引脚
+		LED_output_init();//配置串口控制脚
 	
     adc_open(&usr_adc_cfg);
+		 
 		   Program_Init();
-    //uart_open(UART_ID1, &test_uart_cfg);
-   // uart1_change_from_gps_to_debug();   
-    //Uart1GpsRecDebugSend();   
-    uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
-   
+		
+    uart_open(UART_ID1, &test_uart_cfg);
+    uart_receive(UART_ID1,m_EUART1_DMA_RXBuf,EUART1_RX_BUF_SIZE,uart1_receive_callback);
+		 uart_receive(UART_ID0,m_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback);
 	// Initialize low power mode
     power_init();
     sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback);
     sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试
 		 adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
-    //board_acceleration_detection_init(move_handler);
-//		pca_input_detection_init(pca_handler);//pca检测输入
-		//board_4GUsart_detection_init(_4gUsart_handler);
-		Uwb_init();
+		uwb_open();
+		Anchor_uwb_aoa_square_init();
+		
 		OpenUWB();
     while (1)
     { 
 				uwb_app_poll();
+				if(poll_flag)
+				{
+				CloseUWB();//关闭接收
+				Tag_uwb_aoa_square_init();
+				TagRange();	//做标签
+				Anchor_uwb_aoa_square_init();
+				poll_flag=0;
+				OpenUWB();	
+				}
         if(flag_secondtask)
         {
             flag_secondtask = 0;
@@ -603,7 +624,7 @@
             trace_flush();
             lock = int_lock();            
             power_enter_power_down_mode(0);
-						uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
+						uart_receive(UART_ID1,m_EUART1_DMA_RXBuf,EUART1_RX_BUF_SIZE,uart1_receive_callback);
 //					test3=gpio_pin_get_val(_4G_USART_RX_Pin);
 					//LOG_INFO(TRACE_MODULE_APP, "进入休眠\r\n");
             int_unlock(lock);

--
Gitblit v1.9.3