1
WXK
2024-03-15 bfa1481d9e7b053fe7d67dbb451aa41d4b4f3fab
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])
    {
@@ -1301,6 +1324,7 @@
    } else {
        gotosleep_flag=0;
    }    
    }
    powerled=LEDOFF;
    loraled=LEDOFF;
    gpsled=LEDOFF;