From b473b9e6b3a511358d127d5c8d3b56e42ab41bfc Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期三, 27 九月 2023 11:08:29 +0800
Subject: [PATCH] 1

---
 Src/main.c |  178 ++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 138 insertions(+), 40 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index 92e97d9..0d208be 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -38,7 +38,7 @@
 #define NSH1 0x0001
 #define GP   0x0002
 #define FLASH_HARDWARE_VERSION_MAP		(uint32_t)0x08004F00    //硬件版本号和批次信息位置
-#define DEBUG_MODE
+//#define DEBUG_MODE
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -96,7 +96,7 @@
 extern u8 motor_state;
 uint16_t tyncpoll_time,lpsettime;
 uint16_t slottime,max_slotpos;
-uint16_t lastpoll_count,interval_count,slot_startcount,tag_frequency,lastpoll_time;
+uint16_t lastpoll_count,interval_count,slot_startcount,tag_frequency,lastpoll_time,current_time;
 extern uint8_t module_power;
 extern float nomove_count;
 uint8_t imu_enable,motor_enable;	
@@ -142,7 +142,7 @@
 uint8_t state5v = 1;
 float motor_keeptime;
 void IdleTask(void)
-{
+{u16 current_time;
 //if(huart1.Instance->ISR&USART_ISR_FE)
 //	{
 //	SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
@@ -227,10 +227,10 @@
 	hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+4);
 	//deca_sleep(1000);
 	g_com_map[VERSION] = (1<<8)|68;
-    
+    g_com_map[DEV_ID]=0x6777;
     #ifdef DEBUG_MODE
    // g_com_map[GROUP_ID]=21;
-//    		g_com_map[DEV_ID]=4;
+    		g_com_map[DEV_ID]=0x6777;
     //	g_com_map[COM_INTERVAL]=100;
     //	g_com_map[MAX_REPORT_ANC_NUM]=1;
     //	g_com_map[NOMOVESLEEP_TIME]=10;
@@ -270,7 +270,7 @@
 		{module_power=0;}
 
 	current_slotnum=1;
-//	current_time=GetLPTime();
+	current_time=GetLPTime();
 		if (HAL_LPTIM_TimeOut_Start_IT(&hlptim1, LPTIMER_1S_COUNT, slot_startcount) != HAL_OK)  //system time is 1010ms   1 puls=30.518us
   {
     Error_Handler();
@@ -344,22 +344,7 @@
     HAL_ADC_DeInit(&hadc);
     HAL_ADCEx_DisableVREFINT();
 }
-uint16_t irq_num;
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
-{
-    if(GPIO_Pin == GPIO_PIN_11)
-    {
-//        l_bIsVibration = HIDO_TRUE;
-//        nomove_time=0;
-//        printf("RXD :77777\r\n");
-        irq_num++;
-        RadioIrqProcess();
-    }
-//    if(GPIO_Pin == GPIO_PIN_8)
-//    {
-//     Anchor_App();
-//    }
-}
+extern uint8_t TX_Buffer;
 void Uwb_Lora_Switch(uint8_t uwb, uint8_t lora)
 {
 if(uwb)
@@ -371,6 +356,14 @@
 HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_SET);
 else
 HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_RESET); 
+}
+uint8_t tx_num;
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+    if(GPIO_Pin == GPIO_PIN_11)
+    {
+        RadioIrqProcess();
+    }
 }
 /* USER CODE END 0 */
 
@@ -407,7 +400,7 @@
   MX_SPI1_Init();
   MX_ADC_Init();
   MX_DMA_Init();
-//  MX_IWDG_Init();
+  MX_IWDG_Init();
   /* USER CODE BEGIN 2 */
     LED_LG_ON;
     Program_Init();
@@ -418,8 +411,9 @@
     Delay_Ms(10);
 //    Uwb_Lora_Switch(0,0);
     //	HardWareTypeDiffConfig();
-//    dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
-//    dwt_entersleep();
+    dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
+    dwt_entersleep();
+    DW_DISABLE;
      if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE))
     {
      Error_Handler();
@@ -427,11 +421,9 @@
     HAL_Delay(2000);
 //    Uwb_Lora_Switch(0,1);
     Lora_Init();
+//    RadioSleep();
     Delay_Ms(10);
 //    Uwb_Lora_Switch(0,0);
-    printf("RXD :66666\r\n");
-    usart_send[0]=0x55;
-    usart_send[1]=0xaa;
 //	mcu_sleep();
 	//LED0_BLINK;		
 //	SystemPower_Config();
@@ -445,16 +437,68 @@
     /* USER CODE END WHILE */
 
     /* USER CODE BEGIN 3 */
-Lora_rx_open();
-//    HAL_IWDG_Refresh(&hiwdg);
-//    IdleTask();	
-//	Radio.IrqProcess( ); // Process Radio IRQ
-//     Anchor_App();
-    #ifndef DEBUG_MODE	
-    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))				
-    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
-    #endif
-    
+		if(g_start_send_flag)
+	{ static uint16_t blink_count=0;
+		SystemClock_Config();
+		g_start_send_flag = 0;	
+		HAL_IWDG_Refresh(&hiwdg);
+
+//        Uwb_Lora_Switch(0,1);
+//        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
+        memcpy(&TX_Buffer+3,&tx_num,1);
+//        HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_RESET); 
+//        delay_us(100);
+//        HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_SET); 
+//        delay_us(600);
+//            Lora_Init();
+//        printf("TX fasong\r\n");
+	    Radio.Send( &TX_Buffer, 4);
+//        delay_us(1000);
+////        RadioSleep();
+//        delay_us(1000);
+        tx_num++;
+//                delay_ms(10);
+//        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
+        delay_ms(9);
+//                Lora_Init();
+//        Uwb_Lora_Switch(1,0);
+
+		if(bat_percent>15)
+		{	LED_TB_ON;
+			Tag_App();
+			LED_TB_OFF;
+		}else{
+			LED_TR_ON;
+			Tag_App();
+			LED_TR_OFF;		
+		}
+//        Uwb_Lora_Switch(0,0);
+		//LED0_BLINK;		
+		IdleTask();	
+		if(waitusart_timer>0)
+		{
+			waitusart_timer--;
+		}		 
+	}else{  
+	IdleTask();	
+	}
+    if(m_bEUARTTxEn==0&&waitusart_timer==0)
+    {
+     if(memcmp(g_com_map2,g_com_map,200)!=0)
+     {
+        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04;
+     }
+         if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))				
+                    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
+//    #ifndef DEBUG_MODE	
+//    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))				
+//                    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
+//    #endif
+    }
+// HAL_Delay(100);
+    //  Get_Battary();
+
+	//	LIS3DH_Data_Init();	
   }
   /* USER CODE END 3 */
 }
@@ -867,11 +911,65 @@
 extern uint8_t tx_near_msg[80],stationary_flag;
 float key_keeptime;
 extern float freqlost_count,range_lost_time;
-uint32_t lp_time;
 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
 {
-    lp_time++;
+	static uint8_t i=0,lost_jumpcount=0;
+	i++;
+	
+	current_slotnum++;
+    freqlost_count+=1/(float)tag_frequency;
+    range_lost_time +=1/(float)tag_frequency;
     
+    if(freqlost_count>FREQ_LOST_TIME)
+    {
+        tag_frequency = NOTAG_FREQ;
+        if(lost_jumpcount++>=0) //无测距情况下,每5秒发一次;
+        {
+            lost_jumpcount = 0;
+            g_start_send_flag=1;
+        }
+    }else{
+        g_start_send_flag=1;
+    }
+    if(range_lost_time<1||freqlost_count>FREQ_LOST_TIME)
+    {
+        SetNextPollTime(0);
+    }else{
+        SetNextPollTime(5);
+    }
+	nomove_count+=1/(float)tag_frequency;
+    if(motor_keeptime>0)
+	{	
+        nomove_count+=1/(float)tag_frequency;
+	}
+	if(!GET_USERKEY)
+	{
+		key_keeptime+=1/(float)tag_frequency;
+		if(key_keeptime>=KEY_KEEPRESET_TIME)
+		{
+            g_com_map[ACTIVE_INDEX]=!active_flag;
+            save_com_map_to_flash();
+            MOTOR_ON;
+            HAL_Delay(2000);
+			SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; 
+		}
+	}else{
+		key_keeptime=0;
+	}
+//	if(nomove_count>STATIONARY_TIME)
+//	{
+//		stationary_flag = 1;
+//	}else{
+//		stationary_flag = 0;
+//	}
+//if(nomove_count>=nomovesleeptime-1&&imu_enable)
+//	{
+//		tx_near_msg[TAGSTATE] = tx_near_msg[TAGSTATE]|GOINGSLEEPBIT;
+//	}
+//	if(nomove_count>nomovesleeptime&&imu_enable)
+//	{
+//		mcu_sleep();
+//	}
 }
 /* USER CODE END 4 */
 

--
Gitblit v1.9.3