From ef2519e856f324550def78ebdd57f2b7a8743e5d Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期五, 02 二月 2024 18:35:37 +0800
Subject: [PATCH] 初步开发完成

---
 Src/main.c |  780 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 504 insertions(+), 276 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index 04306c4..37f878a 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -17,7 +17,6 @@
   ******************************************************************************
   */
 /* USER CODE END Header */
-
 /* Includes ------------------------------------------------------------------*/
 #include "main.h"
 
@@ -36,10 +35,20 @@
 #include "stdio.h"
 #include "delay.h"
 #include <stdlib.h>
+#include "WS2812.h"
+#include "syn6288.h"
 #define NSH1 0x0001
 #define GP   0x0002
 #define FLASH_HARDWARE_VERSION_MAP		(uint32_t)0x08004F00    //硬件版本号和批次信息位置
-#define DEBUG_MODE
+//#define DEBUG_MODE
+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";
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -59,19 +68,22 @@
 /* USER CODE END PM */
 
 /* Private variables ---------------------------------------------------------*/
-ADC_HandleTypeDef hadc;
+ ADC_HandleTypeDef hadc;
+DMA_HandleTypeDef hdma_adc;
 
 IWDG_HandleTypeDef hiwdg;
 
 LPTIM_HandleTypeDef hlptim1;
 
-SPI_HandleTypeDef hspi1;
-
-TIM_HandleTypeDef htim2;
-
+UART_HandleTypeDef hlpuart1;
 UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart5;
 DMA_HandleTypeDef hdma_usart1_rx;
 DMA_HandleTypeDef hdma_usart1_tx;
+DMA_HandleTypeDef hdma_usart5_rx;
+DMA_HandleTypeDef hdma_usart5_tx;
+
+SPI_HandleTypeDef hspi1;
 
 /* USER CODE BEGIN PV */
 
@@ -80,13 +92,14 @@
 /* Private function prototypes -----------------------------------------------*/
 void SystemClock_Config(void);
 static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
+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_ADC_Init(void);
-static void MX_DMA_Init(void);
-static void MX_IWDG_Init(void);
-static void MX_TIM2_Init(void);
+static void MX_USART5_UART_Init(void);
 /* USER CODE BEGIN PFP */
 
 /* USER CODE END PFP */
@@ -124,6 +137,11 @@
 	 Error_Handler();
 	}
 }
+void Usart5Init(void)
+{
+	 MX_DMA_Init();
+	MX_USART5_UART_Init();
+}
 static void MX_DMA_DeInit(void)
 {
 
@@ -143,6 +161,38 @@
     MX_DMA_DeInit();
     HAL_UART_DeInit(&huart1);
     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+}
+void Usart5DeInit(void)
+{
+    GPIO_InitTypeDef GPIO_InitStruct = {0};
+    waitusart_timer = 0;
+//    MX_DMA_DeInit();
+    HAL_UART_DeInit(&huart5);
+    GPIO_InitStruct.Pin = GPIO_PIN_12;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+    
+    GPIO_InitStruct.Pin = GPIO_PIN_2;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+}
+void LpusartDeInit(void)
+{
+    GPIO_InitTypeDef GPIO_InitStruct = {0};
+    waitusart_timer = 0;
+//    MX_DMA_DeInit();
+    HAL_UART_DeInit(&hlpuart1);
+    GPIO_InitStruct.Pin = GPIO_PIN_2;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+    
+    GPIO_InitStruct.Pin = GPIO_PIN_3;
     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
     GPIO_InitStruct.Pull = GPIO_NOPULL;
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
@@ -182,11 +232,11 @@
 		}
 		if(bat_percent>99)
 		{
-			LED2_TR_OFF;
-			LED2_TB_ON;	
+    powerled=GREEN;
+    Set4LEDColor(powerled,loraled,gpsled,uwbled);
 		}else{
-			LED2_TR_ON;
-			LED2_TB_OFF;
+    powerled=RED;
+    Set4LEDColor(powerled,loraled,gpsled,uwbled);
 		}		
 	}else{
         if(state5v==1)
@@ -194,8 +244,10 @@
             state5v=0;
             UsartDeInit();
         }
-		LED2_TR_OFF;
-		LED2_TB_OFF;
+//    powerled=LEDOFF;
+//    Set4LEDColor(powerled,loraled,gpsled,uwbled);
+//    gpsled=LEDOFF;
+//    Set4LEDColor(powerled,loraled,gpsled,uwbled);    
 //	}
 }
         if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0)
@@ -276,48 +328,6 @@
 u8 active_flag,nomovesleeptime;
 void GetLoratx_frequency(void)
 {
-//if(g_com_map[NEARBASE_ID1]==0x470)
-//{Loratx_frequency=470000000;}
-//if(g_com_map[NEARBASE_ID1]==0x471)
-//{Loratx_frequency=471000000;}
-//if(g_com_map[NEARBASE_ID1]==0x472)
-//{Loratx_frequency=472000000;}
-//if(g_com_map[NEARBASE_ID1]==0x473)
-//{Loratx_frequency=473000000;}
-//if(g_com_map[NEARBASE_ID1]==0x474)
-//{Loratx_frequency=474000000;}
-//if(g_com_map[NEARBASE_ID1]==0x475)
-//{Loratx_frequency=475000000;}
-//if(g_com_map[NEARBASE_ID1]==0x476)
-//{Loratx_frequency=476000000;}
-//if(g_com_map[NEARBASE_ID1]==0x477)
-//{Loratx_frequency=477000000;}
-//if(g_com_map[NEARBASE_ID1]==0x478)
-//{Loratx_frequency=478000000;}
-//if(g_com_map[NEARBASE_ID1]==0x479)
-//{Loratx_frequency=479000000;}
-//if(g_com_map[NEARBASE_ID1]==0x480)
-//{Loratx_frequency=480000000;}
-//if(g_com_map[NEARBASE_ID1]==0x481)
-//{Loratx_frequency=481000000;}
-//if(g_com_map[NEARBASE_ID1]==0x482)
-//{Loratx_frequency=482000000;}
-//if(g_com_map[NEARBASE_ID1]==0x483)
-//{Loratx_frequency=483000000;}
-//if(g_com_map[NEARBASE_ID1]==0x484)
-//{Loratx_frequency=484000000;}
-//if(g_com_map[NEARBASE_ID1]==0x485)
-//{Loratx_frequency=485000000;}
-//if(g_com_map[NEARBASE_ID1]==0x486)
-//{Loratx_frequency=486000000;}
-//if(g_com_map[NEARBASE_ID1]==0x487)
-//{Loratx_frequency=487000000;}
-//if(g_com_map[NEARBASE_ID1]==0x488)
-//{Loratx_frequency=488000000;}
-//if(g_com_map[NEARBASE_ID1]==0x489)
-//{Loratx_frequency=489000000;}
-//if(g_com_map[NEARBASE_ID1]==0x490)
-//{Loratx_frequency=490000000;}
 Loratx_frequency=470000000;
 srand(HAL_LPTIM_ReadCounter(&hlptim1));
         Loratx_frequency=((rand()%5)+470)*1000000; 
@@ -339,13 +349,13 @@
 	//deca_sleep(1000);
 	g_com_map[VERSION] = (1<<8)|0;
 //    g_com_map[DEV_ID]=1158;
-    #ifdef DEBUG_MODE
-   // g_com_map[GROUP_ID]=21;
-//    		g_com_map[DEV_ID]=4;
-    //	g_com_map[COM_INTERVAL]=100;
-    //	g_com_map[MAX_REPORT_ANC_NUM]=1;
-    //	g_com_map[NOMOVESLEEP_TIME]=10;
-    #endif
+//    #ifdef DEBUG_MODE
+//   // g_com_map[GROUP_ID]=21;
+////    		g_com_map[DEV_ID]=4;
+//    //	g_com_map[COM_INTERVAL]=100;
+//    //	g_com_map[MAX_REPORT_ANC_NUM]=1;
+//    //	g_com_map[NOMOVESLEEP_TIME]=10;
+//    #endif
     g_com_map[GROUP_ID]=5;
 //    g_com_map[COM_INTERVAL] = 1000;
     if(g_com_map[COM_INTERVAL]<1000)
@@ -384,13 +394,16 @@
 
 	current_slotnum=1;
 //	current_time=GetLPTime();
-		if (HAL_LPTIM_TimeOut_Start_IT(&hlptim1, LPTIMER_1S_COUNT, 32767) != HAL_OK)  //system time is 1010ms   1 puls=30.518us
+		if (HAL_LPTIM_TimeOut_Start_IT(&hlptim1, LPTIMER_1S_COUNT, 0) != HAL_OK)  //system time is 1010ms   1 puls=30.518us
   {
     Error_Handler();
   }
-  
+//  		if (HAL_LPTIM_TimeOut_Start_IT(&hlptim1, LPTIMER_1S_COUNT, slot_startcount) != HAL_OK)  //system time is 1010ms   1 puls=30.518us
+//  {
+//    Error_Handler();
+//  }
 //g_com_map[NOMOVESLEEP_TIME]=5;
-    printf("固件版本: 免布线基站LORA版本 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
+    printf("固件版本: URT-LORA-GPS版本 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
 	memcpy(g_com_map2,g_com_map,COM_MAP_SIZE);
 //	printf("DEVICE PAIRID: %d .\r\n",g_com_map[PAIR_ID]);
 //	printf("DEVICE ALARM DISTANCE: 1.%d 2.%d 3.%d .\r\n",g_com_map[ALARM_DISTANCE1],g_com_map[ALARM_DISTANCE2],g_com_map[ALARM_DISTANCE3]);
@@ -461,10 +474,10 @@
 uint16_t irq_num;
 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 {
-    if(GPIO_Pin == GPIO_PIN_3)
+    if(GPIO_Pin == RADIO_DIO1_Pin)
     {
         SystemClock_Config();
-        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
+//        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
 //        HAL_GPIO_WritePin(RADIO_NSS_GPIO_Port, RADIO_NSS_Pin, GPIO_PIN_RESET); //片选lora有效
 //        l_bIsVibration = HIDO_TRUE;
 //        nomove_time=0;
@@ -474,25 +487,19 @@
     }
     if(GPIO_Pin == GPIO_PIN_1)//按键
     {
+        SystemClock_Config();
       anjian_flag=1;
     }
     if(GPIO_Pin == GPIO_PIN_0)//加速度
     {
+        SystemClock_Config();
      stationary_flag =0;
         stationary_num=0;
+   if(chongqi_flag==1)
+   {
+   HAL_NVIC_SystemReset();
+   }
     }
-}
-void Uwb_Lora_Switch(uint8_t uwb, uint8_t lora)
-{
-if(uwb)
-HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_SET);
-else
-HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_RESET);    
-
-if(lora)
-HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_SET);
-else
-HAL_GPIO_WritePin(GPIOB, RADIO_NSS_Pin, GPIO_PIN_RESET); 
 }
 extern void Lora_tx_zubao( void );
 extern void Lora_tx_mode( void );
@@ -527,13 +534,18 @@
 	data_length1=data_length+9;
 //	UART_PushFrame(send_frame1, data_length+9);	
 }
+extern uint8_t GPSchangdu;
 uint8_t no_yingdaflag;
+extern  uint8_t GPS_GGAdate[200];
+uint8_t GPS_GGAdate111[200]="报警";
 void Lora_Tx_Poll()
 {
 
     if(lora_tx_flag)
     {  
         lora_tx_flag=0;
+//        SYN_FrameInfo(0,GPS_GGAdate111);
+//        while(1);
        if(du_flag==1)
        {    
     Lora47X_Init();    
@@ -545,20 +557,28 @@
        {
         Lora47X_Init();
         if(bat_percent>20)
-        {LED_TR_ON;}
+        {
+    loraled=BLUE;
+//    Set4LEDColor(powerled,loraled,gpsled,uwbled);
+        }
         else
-        {LED_TB_ON;}
-        
+        {
+    loraled=RED;
+//    Set4LEDColor(powerled,loraled,gpsled,uwbled);
+        }
     lora_seq_nb2++;
     Lora_tx_zubao();
-//    Lora_tx_mode();            
-//        if(usart_send[2]==0x99)
-//        {LED_TB_ON;}
-    Radio.Send( usart_send, 15+Lora_tx_ancnum*4);
+    Radio.Send( usart_send, 15+Lora_tx_ancnum*4+GPSchangdu);
     Lora_tx_ancnum=0;    
+    GPSchangdu=0;
     memset(Lora_tx_ancdist,0,sizeof(Lora_tx_ancdist));
     memset(Lora_tx_ancid,0,sizeof(Lora_tx_ancid));
+    memset(GPS_GGAdate,0,sizeof(GPS_GGAdate));
     anjian_flag=0;
+        //        delay_ms(10);
+//            loraled=LEDOFF;
+//    Set4LEDColor(powerled,loraled,gpsled,uwbled);
+//        HAL_UART_Transmit(&huart1,usart_send,15+Lora_tx_ancnum*4+GPSchangdu,3000);
        }
     }
      
@@ -567,21 +587,154 @@
 {
 MX_ADC_Init();
 }
+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);
+}
 extern uint16_t Lora_rece_error;
 extern uint16_t Beepchixutime;
-void Beep_Off()
+#define BleRxBufferSize 1
+uint8_t aRxBuffer[1],group_id,GPSRxBuffer[BleRxBufferSize];
+uint8_t ble_rx_success_flag;
+uint8_t fangzhijinrushuimian_flag;
+uint8_t GPS_zhongzhuandate[200];
+uint8_t GPS_zhongzhuannum;
+uint8_t GPSchangdu;
+uint8_t GPS_GGAdate[200]={1,2,3,4,5,6,7,8,9};
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 
 {
-    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 0);
-    HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3);
-    HAL_TIM_Base_Stop_IT(&htim2);
+    {
+    GPS_zhongzhuandate[GPS_zhongzhuannum]=GPSRxBuffer[0];
+    GPS_zhongzhuannum++;
+    if(GPS_zhongzhuandate[GPS_zhongzhuannum-1]==0x0A&&GPS_zhongzhuandate[GPS_zhongzhuannum-2]==0x0D)
+    {
+//        HAL_UART_Transmit(&hlpuart1,ble_rxdate,5,1000);
+    memcpy(GPS_GGAdate,GPS_zhongzhuandate,GPS_zhongzhuannum);
+    GPSchangdu= GPS_zhongzhuannum;
+    memset(GPS_zhongzhuandate,0,sizeof(GPS_zhongzhuandate));
+        GPS_zhongzhuannum=0;
+        fangzhijinrushuimian_flag=0;
+        ble_rx_success_flag=1;
+        if(GPSchangdu>40)
+        {
+            gpsled=BLUE;
+//    Set4LEDColor(powerled,loraled,gpsled,uwbled);
+        }
+        else
+        {
+            gpsled=RED;
+//    Set4LEDColor(powerled,loraled,gpsled,uwbled);
+        }
+    }
+    HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
+    }
 }
-void Beep_On()
+uint8_t ble_rxdate111[3]={0x11,0x22,0x33};
+void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
 {
-    HAL_TIM_Base_Start_IT(&htim2);
-    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
-    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 60);
+        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];
+//    ble_zhongzhuannum++;
+//    if(ble_rxzhongzhuandate[ble_zhongzhuannum-1]==0x0A&&ble_rxzhongzhuandate[ble_zhongzhuannum-2]==0x0D)
+//    {
+//        ble_zhongzhuannum=0;
+//    memcpy(ble_rxdate,ble_rxzhongzhuandate,50);
+//    memset(ble_rxzhongzhuandate,0,sizeof(ble_rxzhongzhuandate));
+//    }
+//        if(lp_time>3)
+    fangzhijinrushuimian_flag=1;
+    HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
+//    HAL_UART_Transmit(&hlpuart1,ble_rxdate,2,1000);
 }
-
+//void GPS_rx_Poll()
+//{
+//  if(ble_rx_success_flag)
+//  {
+//  ble_rx_success_flag=0;
+//  }
+//}
+extern uint8_t  yuyin_no_sleep_flag;
+extern uint8_t yuyin_sendflag;
+extern uint8_t xiafayuyin_data[200];
+extern uint8_t yuyinzidongguan_time;
+uint8_t yuyin_yinliang[10]={0X5B,0X76,0X31,0X30,0X5D};//音量等级V10
+void TTSchaxun_Busy(void)
+{
+    if(yuyin_sendflag)
+    {
+    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)); 
+    }
+//    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)
+{  
+ static uint32_t l_u32QXpowerTick = 0;    
+static uint32_t powercount=0;
+    if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12))
+      {
+          delay_ms(1000);
+          if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12))
+          {     
+              while(1)
+              {
+                if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==0) 
+                {
+                    delay_ms(100);
+                    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
+                }
+            }
+          }
+      }
+}
+uint8_t usart5_state;
+void Jingzhi_Poll(void)
+{
+          powerled=LEDOFF;
+          loraled=LEDOFF;
+          gpsled=LEDOFF;
+          uwbled=LEDOFF;
+      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET); //GuanGPS and lora 电源
+      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET); //guan uwb 电源
+          HAL_SPI_DeInit(&hspi1);
+          HAL_GPIO_WritePin( RADIO_NSS_GPIO_Port, RADIO_NSS_Pin,GPIO_PIN_RESET);//lora  cs
+          HAL_GPIO_WritePin( GPIOA, GPIO_PIN_4,GPIO_PIN_RESET);//uwb cs
+          HAL_GPIO_WritePin( GPIOC, GPIO_PIN_3,GPIO_PIN_RESET);//LORA REST
+          Usart5DeInit();
+          LpusartDeInit();
+          HAL_ADC_DeInit(&hadc);
+//          __HAL_RCC_GPIOA_CLK_DISABLE();
+//          __HAL_RCC_GPIOB_CLK_DISABLE();
+//          __HAL_RCC_GPIOC_CLK_DISABLE();
+//          __HAL_RCC_GPIOD_CLK_DISABLE();
+//          __HAL_RCC_GPIOE_CLK_DISABLE();
+          Set4LEDColor_Off(); //关led总电源
+          chongqi_flag=1;
+}
 /* USER CODE END 0 */
 
 /**
@@ -612,22 +765,25 @@
 
   /* Initialize all configured peripherals */
   MX_GPIO_Init();
-  MX_LPTIM1_Init();
   MX_DMA_Init();
-  MX_USART1_UART_Init();
-  MX_SPI1_Init();
   MX_ADC_Init();
 //  MX_IWDG_Init();
-  MX_TIM2_Init();
+  MX_LPTIM1_Init();
+  MX_LPUART1_UART_Init();
+  MX_USART1_UART_Init();
+  MX_SPI1_Init();
+  MX_USART5_UART_Init();
   /* USER CODE BEGIN 2 */
 //    LED_LG_ON;
+    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电源
+//delay_ms(1000);
+
     Program_Init();
     LIS3DH_Data_Init();	
-//    Uwb_Lora_Switch(1,0);
     Dw1000_Init();
     Dw1000_App_Init();
-    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();
@@ -636,27 +792,20 @@
      Error_Handler();
     }
     Delay_Ms(2);
-//    Uwb_Lora_Switch(0,1);
-//    Lora433rx_Init();
-//    Lora47xrx_Init();
-//    Lora_Init();
-//    Lora47xrx_Init();
-//    Radio.Sleep( );
     Delay_Ms(10);
-//    Uwb_Lora_Switch(0,0);
-    printf("RXD :66666\r\n");
-    usart_send[0]=0x55;
-    usart_send[1]=0xaa;
     bat_percent=Get_VDDVlotage();
-      GetLoratx_frequency();
+    GetLoratx_frequency();
+    delay_ms(2000);
+    GPS_Close_Init();    
+
+    HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)GPSRxBuffer, 1);
+    Set4LEDColor(RED,RED,RED,RED);
+    HAL_Delay(500);
+    Set4LEDColor(GREEN,GREEN,GREEN,GREEN);
+    HAL_Delay(500);
+    Set4LEDColor_Off();
 //    Lora47X_Init();
-//	mcu_sleep();
-	//LED0_BLINK;		
-//	SystemPower_Config();
-//HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);   
-//    HAL_GPIO_WritePin(RADIO_NSS_GPIO_Port, RADIO_NSS_Pin, GPIO_PIN_SET); //片选lora无效
-//    lora_tx_flag=1;
-//     Lora_Tx_Poll();
+//    Radio.Sleep();
   /* USER CODE END 2 */
 
   /* Infinite loop */
@@ -668,19 +817,46 @@
     /* USER CODE BEGIN 3 */
 //Lora_rx_open();
 //      Lora_Tx_Poll();
-      Lora_Tx_Poll();
-
+      if(stationary_flag==1)
+      {
+          Jingzhi_Poll();
+          HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
+      }
+      else
+      {
+      Lora_Tx_Poll();    
+          IdleTask();	
+      TTSchaxun_Busy();
+      PowerDownDetect();
+      
+//      Ble_rx_Poll();
 //    HAL_IWDG_Refresh(&hiwdg);
-    IdleTask();	
-      Lora_rece_error=0;
+
+//      Lora_rece_error=0;
 //	Radio.IrqProcess( ); // Process Radio IRQ
 //     Anchor_App();
 
     #ifndef DEBUG_MODE	
-    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))				
+    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))	
+  {      
+      if(fangzhijinrushuimian_flag==0&&yuyin_no_sleep_flag==0)
+          {
+      if(usart5_state==0)
+      {
+      usart5_state=1;
+      Usart5DeInit();
+      }
+    Selection.WakeUpEvent = UART_WAKEUP_ON_STARTBIT;
+    HAL_UARTEx_EnableClockStopMode(&hlpuart1);
+    HAL_UARTEx_EnableStopMode( &hlpuart1 );
+    HAL_UARTEx_StopModeWakeUpSourceConfig( &hlpuart1, Selection );
+    __HAL_UART_ENABLE_IT(&hlpuart1, UART_IT_WUF);   
+    Set4LEDColor_Off();              
     HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
+          }
+  }
     #endif
-    
+    }
   }
   /* USER CODE END 3 */
 }
@@ -698,11 +874,14 @@
   /** Configure the main internal regulator output voltage
   */
   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
+
   /** Configure LSE Drive Capability
   */
   HAL_PWR_EnableBkUpAccess();
-  __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH);
-  /** Initializes the CPU, AHB and APB busses clocks
+  __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
+
+  /** Initializes the RCC Oscillators according to the specified parameters
+  * in the RCC_OscInitTypeDef structure.
   */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI
                               |RCC_OSCILLATORTYPE_LSE;
@@ -718,7 +897,8 @@
   {
     Error_Handler();
   }
-  /** Initializes the CPU, AHB and APB busses clocks
+
+  /** Initializes the CPU, AHB and APB buses clocks
   */
   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
@@ -731,8 +911,10 @@
   {
     Error_Handler();
   }
-  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_LPTIM1;
+  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_LPUART1
+                              |RCC_PERIPHCLK_LPTIM1;
   PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
+  PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_LSE;
   PeriphClkInit.LptimClockSelection = RCC_LPTIM1CLKSOURCE_LSE;
 
   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
@@ -758,6 +940,7 @@
   /* USER CODE BEGIN ADC_Init 1 */
 
   /* USER CODE END ADC_Init 1 */
+
   /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
   */
   hadc.Instance = ADC1;
@@ -781,10 +964,19 @@
   {
     Error_Handler();
   }
+
+  /** Configure for the selected ADC regular channel to be converted.
+  */
+  sConfig.Channel = ADC_CHANNEL_1;
+  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
+  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
   /** Configure for the selected ADC regular channel to be converted.
   */
   sConfig.Channel = ADC_CHANNEL_VREFINT;
-  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
   if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
   {
     Error_Handler();
@@ -852,108 +1044,42 @@
     Error_Handler();
   }
   /* USER CODE BEGIN LPTIM1_Init 2 */
-//	if (HAL_LPTIM_TimeOut_Start_IT(&hlptim1, Period, Timeout) != HAL_OK)
-//  {
-//    Error_Handler();
-//  }
+
   /* USER CODE END LPTIM1_Init 2 */
 
 }
 
 /**
-  * @brief SPI1 Initialization Function
+  * @brief LPUART1 Initialization Function
   * @param None
   * @retval None
   */
-static void MX_SPI1_Init(void)
+static void MX_LPUART1_UART_Init(void)
 {
 
-  /* USER CODE BEGIN SPI1_Init 0 */
+  /* USER CODE BEGIN LPUART1_Init 0 */
 
-  /* USER CODE END SPI1_Init 0 */
+  /* USER CODE END LPUART1_Init 0 */
 
-  /* USER CODE BEGIN SPI1_Init 1 */
+  /* USER CODE BEGIN LPUART1_Init 1 */
 
-  /* USER CODE END SPI1_Init 1 */
-  /* SPI1 parameter configuration*/
-  hspi1.Instance = SPI1;
-  hspi1.Init.Mode = SPI_MODE_MASTER;
-  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
-  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
-  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
-  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
-  hspi1.Init.NSS = SPI_NSS_SOFT;
-  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
-  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
-  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
-  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
-  hspi1.Init.CRCPolynomial = 7;
-  if (HAL_SPI_Init(&hspi1) != HAL_OK)
+  /* USER CODE END LPUART1_Init 1 */
+  hlpuart1.Instance = LPUART1;
+  hlpuart1.Init.BaudRate = 9600;
+  hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
+  hlpuart1.Init.StopBits = UART_STOPBITS_1;
+  hlpuart1.Init.Parity = UART_PARITY_NONE;
+  hlpuart1.Init.Mode = UART_MODE_TX_RX;
+  hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+  hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+  if (HAL_UART_Init(&hlpuart1) != HAL_OK)
   {
     Error_Handler();
   }
-  /* USER CODE BEGIN SPI1_Init 2 */
-__HAL_SPI_ENABLE(&hspi1);
-  /* USER CODE END SPI1_Init 2 */
+  /* USER CODE BEGIN LPUART1_Init 2 */
 
-}
-
-/**
-  * @brief TIM2 Initialization Function
-  * @param None
-  * @retval None
-  */
-static void MX_TIM2_Init(void)
-{
-
-  /* USER CODE BEGIN TIM2_Init 0 */
-
-  /* USER CODE END TIM2_Init 0 */
-
-  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
-  TIM_MasterConfigTypeDef sMasterConfig = {0};
-  TIM_OC_InitTypeDef sConfigOC = {0};
-
-  /* USER CODE BEGIN TIM2_Init 1 */
-
-  /* USER CODE END TIM2_Init 1 */
-  htim2.Instance = TIM2;
-  htim2.Init.Prescaler = 32-1;
-  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim2.Init.Period = 250-1;
-  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
-  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
-  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
-  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
-  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
-  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  sConfigOC.OCMode = TIM_OCMODE_PWM1;
-  sConfigOC.Pulse = 0;
-  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
-  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
-  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  /* USER CODE BEGIN TIM2_Init 2 */
-
-  /* USER CODE END TIM2_Init 2 */
-  HAL_TIM_MspPostInit(&htim2);
+  /* USER CODE END LPUART1_Init 2 */
 
 }
 
@@ -1005,6 +1131,81 @@
 }
 
 /**
+  * @brief USART5 Initialization Function
+  * @param None
+  * @retval None
+  */
+static void MX_USART5_UART_Init(void)
+{
+
+  /* USER CODE BEGIN USART5_Init 0 */
+
+  /* USER CODE END USART5_Init 0 */
+
+  /* USER CODE BEGIN USART5_Init 1 */
+
+  /* USER CODE END USART5_Init 1 */
+  huart5.Instance = USART5;
+  huart5.Init.BaudRate = 9600;
+  huart5.Init.WordLength = UART_WORDLENGTH_8B;
+  huart5.Init.StopBits = UART_STOPBITS_1;
+  huart5.Init.Parity = UART_PARITY_NONE;
+  huart5.Init.Mode = UART_MODE_TX_RX;
+  huart5.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart5.Init.OverSampling = UART_OVERSAMPLING_16;
+  huart5.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+  huart5.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT;
+  huart5.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;
+  huart5.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR;
+  if (HAL_UART_Init(&huart5) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN USART5_Init 2 */
+
+  /* USER CODE END USART5_Init 2 */
+
+}
+
+/**
+  * @brief SPI1 Initialization Function
+  * @param None
+  * @retval None
+  */
+static void MX_SPI1_Init(void)
+{
+
+  /* USER CODE BEGIN SPI1_Init 0 */
+
+  /* USER CODE END SPI1_Init 0 */
+
+  /* USER CODE BEGIN SPI1_Init 1 */
+
+  /* USER CODE END SPI1_Init 1 */
+  /* SPI1 parameter configuration*/
+  hspi1.Instance = SPI1;
+  hspi1.Init.Mode = SPI_MODE_MASTER;
+  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
+  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
+  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
+  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
+  hspi1.Init.NSS = SPI_NSS_SOFT;
+  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
+  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
+  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
+  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
+  hspi1.Init.CRCPolynomial = 7;
+  if (HAL_SPI_Init(&hspi1) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN SPI1_Init 2 */
+__HAL_SPI_ENABLE(&hspi1);
+  /* USER CODE END SPI1_Init 2 */
+
+}
+
+/**
   * Enable DMA controller clock
   */
 static void MX_DMA_Init(void)
@@ -1014,9 +1215,15 @@
   __HAL_RCC_DMA1_CLK_ENABLE();
 
   /* DMA interrupt init */
+  /* DMA1_Channel1_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
   /* DMA1_Channel2_3_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(DMA1_Channel2_3_IRQn, 1, 0);
   HAL_NVIC_EnableIRQ(DMA1_Channel2_3_IRQn);
+  /* DMA1_Channel4_5_6_7_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Channel4_5_6_7_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Channel4_5_6_7_IRQn);
 
 }
 
@@ -1034,19 +1241,35 @@
   __HAL_RCC_GPIOH_CLK_ENABLE();
   __HAL_RCC_GPIOA_CLK_ENABLE();
   __HAL_RCC_GPIOB_CLK_ENABLE();
+  __HAL_RCC_GPIOD_CLK_ENABLE();
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_7|GPIO_PIN_8, GPIO_PIN_RESET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin|SDA_Pin|SCL_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIOC, RADIO_NSS_Pin|RADIO_nRESET_Pin|GPIO_PIN_4, GPIO_PIN_SET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOB, LED1_G_Pin|LED1_R_Pin|GPIO_PIN_14|RADIO_nRESET_Pin
-                          |RADIO_NSS_Pin|GPIO_PIN_7, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4|GPIO_PIN_8, GPIO_PIN_SET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8|DW_CTRL_Pin|LED2_G_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5
+                          |GPIO_PIN_7, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10|SCL_Pin|SDA_Pin|GPIO_PIN_6, GPIO_PIN_SET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12|GPIO_PIN_15, GPIO_PIN_RESET);
+
+  /*Configure GPIO pins : PC13 RADIO_NSS_Pin RADIO_nRESET_Pin PC4
+                           PC7 PC8 */
+  GPIO_InitStruct.Pin = GPIO_PIN_13|RADIO_NSS_Pin|RADIO_nRESET_Pin|GPIO_PIN_4
+                          |GPIO_PIN_7|GPIO_PIN_8;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 
   /*Configure GPIO pin : PA0 */
   GPIO_InitStruct.Pin = GPIO_PIN_0;
@@ -1054,49 +1277,49 @@
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
-  /*Configure GPIO pin : SPI_CS_Pin */
-  GPIO_InitStruct.Pin = SPI_CS_Pin;
+  /*Configure GPIO pin : PA4 */
+  GPIO_InitStruct.Pin = GPIO_PIN_4;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
-  HAL_GPIO_Init(SPI_CS_GPIO_Port, &GPIO_InitStruct);
+  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
-  /*Configure GPIO pin : BAT_MEAS_GND_Pin */
-  GPIO_InitStruct.Pin = BAT_MEAS_GND_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
-  GPIO_InitStruct.Pull = GPIO_NOPULL;
-  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(BAT_MEAS_GND_GPIO_Port, &GPIO_InitStruct);
-
-  /*Configure GPIO pin : USER_KEY_Pin */
-  GPIO_InitStruct.Pin = USER_KEY_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
-  GPIO_InitStruct.Pull = GPIO_PULLUP;
-  HAL_GPIO_Init(USER_KEY_GPIO_Port, &GPIO_InitStruct);
-
-  /*Configure GPIO pin : RADIO_BUSY_Pin */
-  GPIO_InitStruct.Pin = RADIO_BUSY_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-  GPIO_InitStruct.Pull = GPIO_NOPULL;
-  HAL_GPIO_Init(RADIO_BUSY_GPIO_Port, &GPIO_InitStruct);
-
-  /*Configure GPIO pin : INPUT_5V_Pin */
-  GPIO_InitStruct.Pin = INPUT_5V_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-  HAL_GPIO_Init(INPUT_5V_GPIO_Port, &GPIO_InitStruct);
-
-  /*Configure GPIO pins : LED1_G_Pin LED1_R_Pin PB14 RADIO_nRESET_Pin
-                           RADIO_NSS_Pin PB7 */
-  GPIO_InitStruct.Pin = LED1_G_Pin|LED1_R_Pin|GPIO_PIN_14|RADIO_nRESET_Pin
-                          |RADIO_NSS_Pin|GPIO_PIN_7;
+  /*Configure GPIO pins : PB0 PB2 PB10 PB4
+                           PB5 PB6 PB7 */
+  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_10|GPIO_PIN_4
+                          |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : PA8 DW_CTRL_Pin LED2_G_Pin */
-  GPIO_InitStruct.Pin = GPIO_PIN_8|DW_CTRL_Pin|LED2_G_Pin;
+  /*Configure GPIO pin : PB1 */
+  GPIO_InitStruct.Pin = GPIO_PIN_1;
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
+  GPIO_InitStruct.Pull = GPIO_PULLUP;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : PB12 */
+  GPIO_InitStruct.Pin = GPIO_PIN_12;
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : SCL_Pin SDA_Pin */
+  GPIO_InitStruct.Pin = SCL_Pin|SDA_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PC6 RADIO_BUSY_Pin */
+  GPIO_InitStruct.Pin = GPIO_PIN_6|RADIO_BUSY_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PA8 PA12 PA15 */
+  GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_12|GPIO_PIN_15;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
@@ -1108,19 +1331,18 @@
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(RADIO_DIO1_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : SDA_Pin SCL_Pin */
-  GPIO_InitStruct.Pin = SDA_Pin|SCL_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
+  /*Configure GPIO pin : INPUT_5V_Pin */
+  GPIO_InitStruct.Pin = INPUT_5V_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
-  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+  HAL_GPIO_Init(INPUT_5V_GPIO_Port, &GPIO_InitStruct);
 
   /* EXTI interrupt init*/
   HAL_NVIC_SetPriority(EXTI0_1_IRQn, 2, 0);
   HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
 
-  HAL_NVIC_SetPriority(EXTI2_3_IRQn, 1, 0);
-  HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
+  HAL_NVIC_SetPriority(EXTI4_15_IRQn, 2, 0);
+  HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
 
 }
 
@@ -1166,12 +1388,13 @@
     anchor_send_num++;
     no_data_chongqi_num++;
     stationary_num++;
-    if(Beepchixutime>0)
-    {
-        Beepchixutime--;
-        if(Beepchixutime==0)
-        {Beep_Off();}
-    }
+    Set4LEDColor(powerled,loraled,gpsled,uwbled);
+//    if(Beepchixutime>0)
+//    {
+//        Beepchixutime--;
+//        if(Beepchixutime==0)
+//        {Beep_Off();}
+//    }
     if(no_yingdaflag==1)
     {
     no_yingdatime++;
@@ -1211,11 +1434,18 @@
     }
     }
 
-    if(stationary_num>=10)
+    if(stationary_num>=30)
     {stationary_num=0;
     stationary_flag=1;
     }
-    
+    yuyinzidongguan_time++;
+    if(yuyinzidongguan_time>10)
+    {
+    yuyinzidongguan_time=0;
+    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
+    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET); 
+    yuyin_no_sleep_flag=0;
+    }
 }
 /* USER CODE END 4 */
 
@@ -1247,5 +1477,3 @@
   /* USER CODE END 6 */
 }
 #endif /* USE_FULL_ASSERT */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

--
Gitblit v1.9.3