From bfa1481d9e7b053fe7d67dbb451aa41d4b4f3fab Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期五, 15 三月 2024 15:58:24 +0800
Subject: [PATCH] 1

---
 Src/main.c |  112 ++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 68 insertions(+), 44 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index d4d8c8d..29e458e 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -83,8 +83,6 @@
 DMA_HandleTypeDef hdma_lpuart1_tx;
 DMA_HandleTypeDef hdma_usart1_rx;
 DMA_HandleTypeDef hdma_usart1_tx;
-DMA_HandleTypeDef hdma_usart5_rx;
-DMA_HandleTypeDef hdma_usart5_tx;
 
 SPI_HandleTypeDef hspi1;
 
@@ -99,9 +97,9 @@
 static void MX_ADC_Init(void);
 static void MX_IWDG_Init(void);
 static void MX_LPTIM1_Init(void);
-static void MX_LPUART1_UART_Init(void);
 static void MX_USART1_UART_Init(void);
 static void MX_SPI1_Init(void);
+static void MX_LPUART1_UART_Init(void);
 static void MX_USART5_UART_Init(void);
 /* USER CODE BEGIN PFP */
 
@@ -125,6 +123,7 @@
 uint8_t anjian_flag;
 uint8_t  stationary_flag;
 uint16_t stationary_num;
+uint8_t recv_end_time;
 u16 GetLPTime(void)
 {
 	u16 count=HAL_LPTIM_ReadCounter(&hlptim1);
@@ -201,31 +200,32 @@
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 }
 uint16_t hardware_version,hardware_pici,hardware_type;
-uint8_t state5v = 1;
+uint8_t state5v;
 extern uint8_t du_flag;
 extern uint8_t xie_flag;
 float motor_keeptime;
 void IdleTask(void)
 {
 	if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
-	{
-        	
+	{  state5v=1;
+        LoraInit();
+        HAL_UART_DMAStop(&hlpuart1); //  停止DMA传输,防止  
+        while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))	
+      {
         UART_CheckReceive();
 		UART_CheckSend();
 		nomove_count = 0;
-       // bat_percent=Get_Battary();
-		if(state5v==0)
-		{
-			state5v=1;
-			UsartInit();
-		}
+        
 		if(bat_percent>95)
 		{
             powerled=GREEN;
 		}else{
             powerled=RED;           
-		}		
+		}
+      }
+     HAL_NVIC_SystemReset();    
 	}else{
+        state5v=0;
             if(bat_percent>20)
             {
             powerled=BLUE;
@@ -233,11 +233,11 @@
             powerled=RED;           
             }
         
-        if(state5v==1)
-        {
-            state5v=0;
-            UsartDeInit();
-        }
+//        if(state5v==1)
+//        {
+//            state5v=0;
+//            UsartDeInit();
+//        }
 }
         if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
 		{
@@ -308,7 +308,7 @@
 //    //	g_com_map[MAX_REPORT_ANC_NUM]=1;
 //    //	g_com_map[NOMOVESLEEP_TIME]=10;
 //    #endif
-    g_com_map[GROUP_ID]=0;
+    g_com_map[GROUP_ID]=1;
 //    g_com_map[COM_INTERVAL] = 1000;
     if(g_com_map[COM_INTERVAL]<1000)
     {g_com_map[COM_INTERVAL] = 1000;}
@@ -539,7 +539,6 @@
     {
     yuyin_sendflag=0;
   //  SYN_FrameInfo(0,yuyin_yinliang);//设置音量等级V10
-   // delay_ms(10);
     SYN_FrameInfo(0,xiafayuyin_data); //播放内容
 //    HAL_UART_Receive_IT(&huart6, &Get_Uart6_data, 1);
     memset(xiafayuyin_data,0,sizeof(xiafayuyin_data)); 
@@ -557,11 +556,13 @@
 static uint32_t powercount=0;
     if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12))
       {
-          delay_ms(1000);
+          delay_ms(500);
           if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12))
           {     
               while(1)
               {
+                  Set4LEDColor(RED,RED,RED,RED);
+                  recv_end_time=0;
                 if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==0) 
                 {
                     delay_ms(100);
@@ -630,11 +631,12 @@
 }
 extern  volatile uint8_t rx_len ;  //接收一帧数据的长度
 extern volatile uint8_t recv_end_flag; //一帧数据接收完成标志
-void lpuarttest_Poll(void)
+void Lpuart_rx_Poll(void)
 {
 if(recv_end_flag == 1)  //接收完成标志
 {
-//GPS_ParseGGA(GPS_GGAdate, rx_len);  
+    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);
 rx_len = 0;//清除计数
@@ -676,11 +678,11 @@
   MX_GPIO_Init();
   MX_DMA_Init();
   MX_ADC_Init();
-//  MX_IWDG_Init();
+  MX_IWDG_Init();
   MX_LPTIM1_Init();
-//  MX_LPUART1_UART_Init();
   MX_USART1_UART_Init();
   MX_SPI1_Init();
+  MX_LPUART1_UART_Init();
   MX_USART5_UART_Init();
   /* USER CODE BEGIN 2 */
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); //开GPS电源
@@ -693,29 +695,27 @@
     Dw1000_Init();
     dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
     dwt_entersleep();
-     if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE))
-    {
-     Error_Handler();
-    }
+
     LIS3DH_Data_Init();	
     Set4LEDColor(RED,RED,RED,RED);
-    HAL_Delay(500);
-    Set4LEDColor(GREEN,GREEN,GREEN,GREEN);
     HAL_Delay(500);
     Set4LEDColor_Off();
     HAL_Delay(500);
     LoraInit();
     
-
-//        GPS_Close_flag=0;
-//        GPS_Close_Init();      
+bat_percent=Get_Battary();
+        GPS_Close_flag=0;
+        GPS_Close_Init();      
     if (HAL_LPTIM_TimeOut_Start_IT(&hlptim1, LPTIMER_1S_COUNT, 0) != HAL_OK)  //system time is 1010ms   1 puls=30.518us
   {
     Error_Handler();
   } 
-//  HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收
-//  __HAL_UART_ENABLE_IT(&hlpuart1, UART_IT_IDLE); //使能IDLE中断
-
+  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))
+    {
+     Error_Handler();
+    }
   /* USER CODE END 2 */
 
   /* Infinite loop */
@@ -732,7 +732,7 @@
       }
       else
       {
-          lpuarttest_Poll();
+      Lpuart_rx_Poll();
       OneSecondTask();
       IdleTask();	
       PowerDownDetect();
@@ -1274,12 +1274,18 @@
 uint16_t no_data_chongqi_num;
 uint8_t no_yingdatime;
 #define YUYINSTOP_TIME 10
-void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
+uint8_t bat_time;
+void Bat_Percent_Poll()
 {
-//    uint8_t pinlv;
-    SystemClock_Config();
-    HAL_IWDG_Refresh(&hiwdg);
-Set4LEDColor(powerled,loraled,gpsled,uwbled);
+    bat_time++;
+    if(bat_time>100)
+    {
+        bat_time=0;
+    bat_percent=Get_Battary();
+    }
+}
+void Yuying_Poll()
+{
     yuyinzidongguan_time++;
     if(yuyinzidongguan_time>YUYINSTOP_TIME)
     {
@@ -1288,6 +1294,23 @@
     HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET); 
     yuyin_no_sleep_flag=0;
     }
+}
+void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
+{
+//    uint8_t pinlv;
+    SystemClock_Config();
+    HAL_IWDG_Refresh(&hiwdg);
+Set4LEDColor(powerled,loraled,gpsled,uwbled);
+Bat_Percent_Poll();
+    if(state5v==0)
+    {
+    if(yuyin_no_sleep_flag==0)
+    {
+    recv_end_time++;
+    if(recv_end_time>3)
+    {HAL_NVIC_SystemReset();}
+    }
+    Yuying_Poll();
     Lora_send_flag=1;
     if(nomove_count++>g_com_map[STATIONARY_TIME])
     {
@@ -1300,7 +1323,8 @@
         gotosleep_flag=1;
     } else {
         gotosleep_flag=0;
-    }    
+    }
+    }
     powerled=LEDOFF;
     loraled=LEDOFF;
     gpsled=LEDOFF;

--
Gitblit v1.9.3