From e7bad2338d19ebba1a73fa3aac2d1b0c642127b0 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期一, 25 八月 2025 09:12:37 +0800
Subject: [PATCH] 修改协议内容V1.76

---
 源码/核心板/Src/main.c |  110 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 76 insertions(+), 34 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
index a6e0ca9..a9144a5 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
@@ -46,7 +46,7 @@
 	RCC_Configuration();
 	//SystemInit();
 	NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x5000);
-	
+	Nvic_Init();
 //	Systick_Init();
 	TIM3_Int_Init();
 	Led_Init();
@@ -55,9 +55,8 @@
 	Uart1_Init();
 	Spi_Init();
 	ADC_Configuration();
-	//IWDG_Config(IWDG_Prescaler_128 ,4095);   //10s
-	Nvic_Init();
-  IWDG_Feed();
+	IWDG_Config(IWDG_Prescaler_128 ,4095);   //10s
+    IWDG_Feed();
 	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
 }
 u8 anchor_type;
@@ -95,12 +94,7 @@
 	{
 	  g_com_map[COM_INTERVAL]=100;
 	}
-    if(dist_threshold<300)
-		{dist_threshold = 300;}
-		if(dist_threshold>15000)
-		{dist_threshold = 15000;}
 }
-extern u8 needanchorrx;  
 u16 JDQ_time;
 int16_t g_commap_antdelay;
 void Program_Init(void)
@@ -148,9 +142,13 @@
         
 	OUT485_ENABLE;
 	ComMapCheck();	
-	g_com_map[VERSION] = 1<<8|61;
+	g_com_map[VERSION] = 1<<8|76;
     FLASH_Read(FLASH_HARDWARE_FLAG, (uint8_t*)&g_com_map[HARDWAREFLAG_INDEX], 16);
     dist_threshold = (g_com_map[SPEEDFILTER_THRES]*10)/(1000/g_com_map[COM_INTERVAL]);
+     if(dist_threshold<300)
+		{dist_threshold = 300;}
+		if(dist_threshold>15000)
+		{dist_threshold = 15000;}
     g_commap_antdelay = g_com_map[ANT_LENGTH];
     JDQ_time = g_com_map[WAR_JDQ_TIME]*10;
 	g_com_map[SW_TYPE] = 	SW_FANGZHUANG;
@@ -171,16 +169,15 @@
 	
 	if(g_com_map[DEV_ROLE])
 	{
-		needanchorrx = 0;
-	printf("标签ID: %d .\r\n",dev_id);
-	printf("通讯间隔: %d ms.\r\n",g_com_map[COM_INTERVAL]);
-	printf("单次通讯基站数量: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]);
+//	printf("标签ID: %d .\r\n",dev_id);
+//	printf("通讯间隔: %d ms.\r\n",g_com_map[COM_INTERVAL]);
+//	printf("单次通讯基站数量: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]);
 	}else{
-	needanchorrx = 1;
+	
 	anchor_type = dev_id%g_com_map[MAX_REPORT_ANC_NUM];
-	printf("基站ID: %x .\r\n",dev_id);
-	printf("基站类型: %c .\r\n",anchor_type+0x41);
-	printf("单次通讯基站数量: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]);
+//	printf("基站ID: %x .\r\n",dev_id);
+//	printf("基站类型: %c .\r\n",anchor_type+0x41);
+//	printf("单次通讯基站数量: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]);
 	}
 	OUT485_DISABLE;
 //	printf("DEVICE PAIRID: %d .\r\n",g_com_map[PAIR_ID]);
@@ -227,8 +224,8 @@
 void IdleTask(void)
 {
 		
-			UART_CheckReceive();
-	//	UART_CheckSend();
+        UART_CheckReceive();
+		UART_CheckSend();
 	
 	if(heartbeat_timer>1000)
 	{
@@ -248,7 +245,7 @@
 //						NVIC_SystemReset();
 //					}
 //				}
-	  flag_newsecond=0;
+	    flag_newsecond=0;
 		tagpos_binary=0;
 		memcpy(ancidlist_send,ancidlist_rec,ancidlist_num*2);
 		ancidlist_num=0;
@@ -307,12 +304,60 @@
 		{
 				SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
 		}
-		
-		g_com_map[RELAY1_STATE_INDEX] = READ_RELAY1;
-		g_com_map[RELAY2_STATE_INDEX] = READ_RELAY2;
+     //   g_com_map[RELAY1_STATE_INDEX] = READ_RELAY1;
+	//	g_com_map[RELAY2_STATE_INDEX] = READ_RELAY2;
 
 	}
+//uint8_t at_cmd[3]={0x2B,0x2B,0x2B};
+//uint8_t at_cmd1[2]={0x41,0x54};
+ 
+char at_cmd2[22]={"AT+CAN=500,0000,NDTF\r\n"};  //AT+CAN?\r\n
+char at_cmd3[9]={"AT+CAN?\r\n"}; 
+char at_cmd4[9]={"AT+EXAT\r\n"}; 
+void send_to_ECAN()
+{
+//    g_com_map[NEARBASE_ID1]=0x12;
+//    g_com_map[NEARBASE_ID2]=0x34;
+    uint8_t id_high = g_com_map[NEARBASE_ID1];  // 0x12
+    uint8_t id_low = g_com_map[NEARBASE_ID2];   // 0x34
+    
 
+    uint16_t frame_id = (id_high << 8) | id_low;
+    
+    uint32_t decimal_id = frame_id;  // 0x1234 = 4660  
+    
+    if(decimal_id > 0x1FFFFFFF) 
+    {
+    printf("错误:帧ID超出扩展帧范围!");
+    return;
+    }
+    
+    const char *frame_type = (frame_id <= 0x7FF) ? "NDTF" : "EDTF";
+    
+
+    snprintf(at_cmd2, sizeof(at_cmd2), 
+             "AT+CAN=250,%x,%s\r\n", 
+             frame_id, 
+             frame_type);
+
+    printf("+++");
+    delay_ms(500);
+    
+    printf("AT");
+    delay_ms(500);
+    
+
+    printf("%s", at_cmd2);
+    
+    delay_ms(200);
+    
+    printf("%s", at_cmd3);
+    
+    delay_ms(200);
+    
+    printf("%s", at_cmd4);  
+}
+    
 int main(void)
 {
  
@@ -320,7 +365,7 @@
 	//StartUpTest();
 	Program_Init();
 	Dw1000_Init();
-  delay_ms(10);	
+    delay_ms(10);	
 	Dw1000_App_Init();
     /* Loop forever initiating ranging exchanges. */
 	RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
@@ -328,23 +373,20 @@
 	usart_send[1]=0xAA;
 	usart_send_anc[0]=0x55;
 	usart_send_anc[1]=0xAA;
-	dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间
-	dwt_rxenable(0);//打开接收
+    send_to_ECAN();
 	while(1)
 	{
-//	g_start_sync_flag=0;
+
+	g_start_sync_flag=0;
 	if(g_start_send_flag)
 	{
 		g_start_send_flag = 0;		
 		Tag_App();
-		//needanchorrx = 1;
 	}
 		IdleTask();		
-//if(g_com_map[DEV_ROLE]==0)
-//    {needanchorrx = 0;
-//			Anchor_App();
-//       // Anchor_Start();
-//    }
+if(g_com_map[DEV_ROLE]==0)
+		Anchor_App();
+
 	}
 }
 

--
Gitblit v1.9.3