From fad1b368e3d987d753d3424c0144f574c6e44d2c Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 11 四月 2024 11:14:06 +0800
Subject: [PATCH] Merge branch '免布线URT-LORA-L071' of http://47.108.70.204:60062/r/XRange_Tag into 免布线URT-LORA-L071

---
 Src/main.c |  168 ++++++++++++++++++++++++++------------------------------
 1 files changed, 78 insertions(+), 90 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index 29e458e..a33f031 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -39,6 +39,7 @@
 #include "syn6288.h"
 #include "dw_mbx_tag.h"
 #include "GPS.h"
+#include "lora.h"
 #define NSH1 0x0001
 #define GP   0x0002
 #define FLASH_HARDWARE_VERSION_MAP		(uint32_t)0x08004F00    //硬件版本号和批次信息位置
@@ -46,11 +47,11 @@
 uint8_t chongqi_flag;
 uint32_t uwbled,gpsled,loraled,powerled;
 UART_WakeUpTypeDef Selection;
-uint8_t Close_RMC[20]="$CCMSG,RMC,1,0,*04\r\n";
-uint8_t Close_GSA[20]="$CCMSG,GSA,1,0,*0D\r\n";
-uint8_t Close_GSV[20]="$CCMSG,GSV,1,0,*1A\r\n";
-uint8_t Close_GLL[20]="$CCMSG,GLL,1,0,*1F\r\n";
-uint8_t Close_TXT[20]="$CCMSG,TXT,1,0,*00\r\n";
+uint8_t Close_RMC[100]="$CCMSG,RMC,1,0,*04\r\n$CCMSG,GSA,1,0,*0D\r\n$CCMSG,GSV,1,0,*1A\r\n$CCMSG,GLL,1,0,*1F\r\n$CCMSG,TXT,1,0,*00\r\n";
+//uint8_t Close_GSA[20]="$CCMSG,GSA,1,0,*0D\r\n";
+//uint8_t Close_GSV[20]="$CCMSG,GSV,1,0,*1A\r\n";
+//uint8_t Close_GLL[20]="$CCMSG,GLL,1,0,*1F\r\n";
+//uint8_t Close_TXT[20]="$CCMSG,TXT,1,0,*00\r\n";
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -107,6 +108,7 @@
 
 /* Private user code ---------------------------------------------------------*/
 /* USER CODE BEGIN 0 */
+extern uint8_t shengji_flag;
 uint32_t dev_id;
 uint16_t heartbeat_timer,poll_timer,sync_timer;
 uint8_t aRxBuffer[1],group_id;
@@ -123,7 +125,7 @@
 uint8_t anjian_flag;
 uint8_t  stationary_flag;
 uint16_t stationary_num;
-uint8_t recv_end_time;
+uint16_t recv_end_time;
 u16 GetLPTime(void)
 {
 	u16 count=HAL_LPTIM_ReadCounter(&hlptim1);
@@ -243,6 +245,10 @@
 		{
             SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
 		}
+        if(memcmp(g_com_map2,g_com_map,COM_MAP_SIZE)!=0)
+         {
+            SCB->AIRCR = 0X05FA0000|(unsigned int)0x04;
+         }
 
 	}
 
@@ -290,7 +296,8 @@
 u8 active_flag,nomovesleeptime;
 
 void Program_Init(void)
-{	float temp;
+{	
+    float temp;
 	uint16_t temp2;
 	uint16_t i;
 	Usart1ParseDataCallback = UsartParseDataHandler;
@@ -299,7 +306,7 @@
 	hardware_pici = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+2);
 	hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+4);
 	//deca_sleep(1000);
-	g_com_map[VERSION] = (1<<8)|1;
+	g_com_map[VERSION] = (1<<8)|15;
 //    g_com_map[DEV_ID]=1158;
 //    #ifdef DEBUG_MODE
 //   // g_com_map[GROUP_ID]=21;
@@ -308,7 +315,7 @@
 //    //	g_com_map[MAX_REPORT_ANC_NUM]=1;
 //    //	g_com_map[NOMOVESLEEP_TIME]=10;
 //    #endif
-    g_com_map[GROUP_ID]=1;
+    g_com_map[GROUP_ID]=0;
 //    g_com_map[COM_INTERVAL] = 1000;
     if(g_com_map[COM_INTERVAL]<1000)
     {g_com_map[COM_INTERVAL] = 1000;}
@@ -339,6 +346,10 @@
 	{
 	  g_com_map[COM_INTERVAL]=1000;
 	}
+        if(g_com_map[LORA_POWER]>22)
+    {
+        g_com_map[LORA_POWER] = 22;
+    }
 	 if(module_power>67)
 		{module_power=67;}
 		if(module_power<0)
@@ -453,7 +464,6 @@
 
 extern uint8_t GPSchangdu;
 uint8_t no_yingdaflag;
-extern  uint8_t GPS_GGAdate[200];
 uint8_t GPS_GGAdate111[200]="报警";
 
 
@@ -463,32 +473,17 @@
 }
 void GPS_Close_Init()
 {
-    
-    Delay_Ms(100);
-    HAL_UART_Transmit(&hlpuart1,Close_RMC,20,1000);
-//    Delay_Ms(100);
-    HAL_UART_Transmit(&hlpuart1,Close_RMC,20,1000);
-//    Delay_Ms(100);
-    HAL_UART_Transmit(&hlpuart1,Close_GSA,20,1000);
-//    Delay_Ms(100);
-    HAL_UART_Transmit(&hlpuart1,Close_GSV,20,1000);
-//    Delay_Ms(100);
-    HAL_UART_Transmit(&hlpuart1,Close_GLL,20,1000);
-//    Delay_Ms(100);
-    HAL_UART_Transmit(&hlpuart1,Close_TXT,20,1000);
-    Delay_Ms(100);
+    HAL_UART_Transmit_DMA(&hlpuart1,Close_RMC,100);
+    Delay_Ms(150);
 }
+#define GPS_SIZE 400
 extern uint16_t Lora_rece_error;
 extern uint16_t Beepchixutime;
-#define BleRxBufferSize 1
-uint8_t aRxBuffer[1],group_id,GPSRxBuffer[BleRxBufferSize];
-uint8_t ble_rx_success_flag;
+uint8_t group_id;
 uint8_t fangzhijinrushuimian_flag;
-uint8_t GPSchangdu;
-uint8_t GPS_GGAdate[200];
-uint8_t GPS_GGAdatenum;
-void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 
-{
+uint8_t GPS_GGAdate[GPS_SIZE];
+//void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 
+//{
 //    {
 //        GPS_RecvFsm(GPSRxBuffer[0]);
 //        GPS_Recv_Poll(GPSRxBuffer[0]);
@@ -503,11 +498,11 @@
 //    }
 //    HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
 //    }
-}
-uint8_t ble_rxdate111[3]={0x11,0x22,0x33};
-void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
-{
-        SystemClock_Config();
+//}
+//uint8_t ble_rxdate111[3]={0x11,0x22,0x33};
+//void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
+//{
+//        SystemClock_Config();
 // HAL_UART_Transmit(&hlpuart1,(uint8_t*)ble_rxdate111,3,1000);
 ////  huart->RxState = HAL_UART_STATE_BUSY_RX;
 //        ble_rxzhongzhuandate[ble_zhongzhuannum]=BleRxBuffer[0];
@@ -519,15 +514,15 @@
 //    memset(ble_rxzhongzhuandate,0,sizeof(ble_rxzhongzhuandate));
 //    }
 //        if(lp_time>3)
-      if(HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE))  
-    {
-     Error_Handler();
-    }   
-    fangzhijinrushuimian_flag=1;
+//      if(HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE))  
+//    {
+//     Error_Handler();
+//    }   
+//    fangzhijinrushuimian_flag=1;
 //    HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
 //    HAL_UART_Transmit(&hlpuart1,ble_rxdate,2,1000);
     
-}
+//}
 extern uint8_t  yuyin_no_sleep_flag;
 extern uint8_t yuyin_sendflag;
 extern uint8_t xiafayuyin_data[200];
@@ -538,17 +533,9 @@
     if(yuyin_sendflag)
     {
     yuyin_sendflag=0;
-  //  SYN_FrameInfo(0,yuyin_yinliang);//设置音量等级V10
     SYN_FrameInfo(0,xiafayuyin_data); //播放内容
-//    HAL_UART_Receive_IT(&huart6, &Get_Uart6_data, 1);
     memset(xiafayuyin_data,0,sizeof(xiafayuyin_data)); 
     }
-//    if(Get_Uart6_data==0x4F)
-//    {
-//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
-//HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET);  
-//        Get_Uart6_data=0;
-//    }
 }
 void PowerDownDetect(void)
 {  
@@ -572,10 +559,14 @@
           }
       }
 }
+uint8_t only_one_flag;
 uint8_t gotosleep_flag;
 uint8_t usart5_state,flag_onesecond;
 void Jingzhi_Poll(void)
 {
+    if(only_one_flag==0)
+    {
+        only_one_flag=1;
           powerled=LEDOFF;
           loraled=LEDOFF;
           gpsled=LEDOFF;
@@ -592,6 +583,7 @@
 
           Set4LEDColor_Off(); //关led总电源
           chongqi_flag=1;
+    }
 }
 void OneSecondTask(void)
 {
@@ -608,43 +600,31 @@
 {
         if(Lora_send_flag)
         { 
-//            memset(GPS_GGAdate,0,100);
-//            HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate, LPUART_SIZE); 
-           
-//         GPS_Close_time++;   
-//        if(GPS_Close_time>5&&GPS_Close_flag)
-//        {
-//        GPS_Close_flag=0;
-//        GPS_Close_Init();   
-//HAL_UART_Receive_DMA(&hlpuart1, (uint8_t *)GPS_GGAdate, 1);            
-//        }
-//        if(GPS_Close_flag==0)
-//        HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
             debugnum++;
         Lora_send_flag=0;    
-//        LedTask();
             loraled=BLUE;
         LoraReportPoll();
         flag_onesecond = 1;
         }
 
 }
-extern  volatile uint8_t rx_len ;  //接收一帧数据的长度
+extern  volatile uint16_t rx_len ;  //接收一帧数据的长度
 extern volatile uint8_t recv_end_flag; //一帧数据接收完成标志
 void Lpuart_rx_Poll(void)
 {
 if(recv_end_flag == 1)  //接收完成标志
 {
+    uint16_t i;
     recv_end_time=0;
-GPS_ParseGGA(GPS_GGAdate, rx_len);  
-//HAL_UART_Transmit_DMA(&hlpuart1, GPS_GGAdate,rx_len);
-memset(GPS_GGAdate,0,rx_len);
+    for(i=0;i<GPS_SIZE;i++)
+    {GPS_RecvFsm(GPS_GGAdate[i]);}
+//GPS_ParseGGA(GPS_GGAdate, rx_len);  
+memset(GPS_GGAdate,0,GPS_SIZE);
 rx_len = 0;//清除计数
 recv_end_flag = 0;//清除接收结束标志位
 fangzhijinrushuimian_flag=0;
-//HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收
 }
-
+HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收
 }
 /* USER CODE END 0 */
 
@@ -675,22 +655,23 @@
   /* USER CODE END SysInit */
 
   /* Initialize all configured peripherals */
-  MX_GPIO_Init();
-  MX_DMA_Init();
-  MX_ADC_Init();
-  MX_IWDG_Init();
-  MX_LPTIM1_Init();
-  MX_USART1_UART_Init();
-  MX_SPI1_Init();
-  MX_LPUART1_UART_Init();
-  MX_USART5_UART_Init();
+  MX_GPIO_Init();        //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+  MX_DMA_Init();         //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+  MX_ADC_Init();         //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+  MX_LPTIM1_Init();      //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+  MX_USART1_UART_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+  MX_SPI1_Init();        //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+  MX_LPUART1_UART_Init();//看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+//  MX_IWDG_Init();      //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
+  MX_USART5_UART_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
   /* USER CODE BEGIN 2 */
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); //开GPS电源
     delay_ms(10);
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); //开uwb电源
     Program_Init();
+    MX_IWDG_Init(); //看门狗务必放到开GPS电源开uwb电源后面,否则GPS工作不正常。
 #ifdef _USE_BAR
-BarInit();
+//BarInit();
 #endif 
     Dw1000_Init();
     dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
@@ -702,7 +683,7 @@
     Set4LEDColor_Off();
     HAL_Delay(500);
     LoraInit();
-    
+//    delay_ms(1000);
 bat_percent=Get_Battary();
         GPS_Close_flag=0;
         GPS_Close_Init();      
@@ -710,7 +691,7 @@
   {
     Error_Handler();
   } 
-  HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收
+//  HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收
   __HAL_UART_ENABLE_IT(&hlpuart1, UART_IT_IDLE); //使能IDLE中断
      if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE))
     {
@@ -728,16 +709,19 @@
       if(gotosleep_flag==1)
       {
           Jingzhi_Poll();
+//          HAL_IWDG_Refresh(&hiwdg);
           HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
       }
       else
       {
+//      HAL_IWDG_Refresh(&hiwdg);
       Lpuart_rx_Poll();
       OneSecondTask();
       IdleTask();	
       PowerDownDetect();
       Lora_Send_Poll();
       TTSchaxun_Busy();
+      LoraUp_Poll();
 //    #ifndef DEBUG_MODE	
 //    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))	
 //  {      
@@ -1139,8 +1123,8 @@
 
   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_7|GPIO_PIN_8, GPIO_PIN_RESET);
-
-  /*Configure GPIO pin Output Level */
+  
+  /*Configure GPIO pin O__set_MSPutput Level */
   HAL_GPIO_WritePin(GPIOC, RADIO_NSS_Pin|RADIO_nRESET_Pin|GPIO_PIN_4, GPIO_PIN_SET);
 
   /*Configure GPIO pin Output Level */
@@ -1295,11 +1279,12 @@
     yuyin_no_sleep_flag=0;
     }
 }
+#define NOGPS_RESET_TIME 300
 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
 {
-//    uint8_t pinlv;
+ if(chongqi_flag==0&&shengji_flag==0)
+ {
     SystemClock_Config();
-    HAL_IWDG_Refresh(&hiwdg);
 Set4LEDColor(powerled,loraled,gpsled,uwbled);
 Bat_Percent_Poll();
     if(state5v==0)
@@ -1307,7 +1292,7 @@
     if(yuyin_no_sleep_flag==0)
     {
     recv_end_time++;
-    if(recv_end_time>3)
+    if(recv_end_time>NOGPS_RESET_TIME)
     {HAL_NVIC_SystemReset();}
     }
     Yuying_Poll();
@@ -1315,8 +1300,10 @@
     if(nomove_count++>g_com_map[STATIONARY_TIME])
     {
         stationary_flag = 1;
-    } else {
-        stationary_flag = 0;
+    } 
+    else 
+    {
+    stationary_flag = 0;
     }
     if(nomove_count>=g_com_map[NOMOVESLEEP_TIME]-1&&imu_enable)
     {
@@ -1330,7 +1317,8 @@
     gpsled=LEDOFF;
     uwbled=LEDOFF;
 Set4LEDColor_Off();
-//delay_ms(10);
+ }
+ HAL_IWDG_Refresh(&hiwdg);
 }
 /* USER CODE END 4 */
 

--
Gitblit v1.9.3