yincheng.zhong
2024-04-24 6f6d3bc73b0b59b67ec7c3acfe6cd966523741b3
Src/main.c
@@ -125,7 +125,7 @@
uint8_t anjian_flag;
uint8_t  stationary_flag;
uint16_t stationary_num;
uint16_t recv_end_time;
uint16_t recv_end_time,ledon_time;
u16 GetLPTime(void)
{
   u16 count=HAL_LPTIM_ReadCounter(&hlptim1);
@@ -207,7 +207,12 @@
extern uint8_t xie_flag;
float motor_keeptime;
void IdleTask(void)
{
{uint16_t current_lptime = GetLPTime();
    if(current_lptime-ledon_time>100||current_lptime<ledon_time-500)
    {
      //  Set4LEDColor(0,0,0,0);
         Set4LEDColor_Off();
    }
   if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
   {  state5v=1;
        LoraInit();
@@ -306,7 +311,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)|17;
   g_com_map[VERSION] = (1<<8)|21;
//    g_com_map[DEV_ID]=1158;
//    #ifdef DEBUG_MODE
//   // g_com_map[GROUP_ID]=21;
@@ -599,15 +604,17 @@
extern uint8_t rec_secdelay;
void Lora_Send_Poll(void)
{
    if(rec_secdelay>0)
    {
        rec_secdelay--;
        return;
    }
    if(Lora_send_flag)
    { 
        debugnum++;
        Lora_send_flag=0;
        Lora_send_flag=0;
        if(rec_secdelay>0)
            {
                loraled=YELLOW;
                rec_secdelay--;
                return;
            }
        loraled=BLUE;
        LoraReportPoll();
        flag_onesecond = 1;
@@ -618,19 +625,19 @@
extern volatile uint8_t recv_end_flag; //一帧数据接收完成标志
void Lpuart_rx_Poll(void)
{
if(recv_end_flag == 1)  //接收完成标志
{
    uint16_t i;
    recv_end_time=0;
    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接收
    if(recv_end_flag == 1)  //接收完成标志
    {
        uint16_t i;
        recv_end_time=0;
        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接收
}
/* USER CODE END 0 */
@@ -1291,38 +1298,41 @@
 if(chongqi_flag==0&&shengji_flag==0)
 {
    SystemClock_Config();
Set4LEDColor(powerled,loraled,gpsled,uwbled);
Bat_Percent_Poll();
    Set4LEDColor(uwbled,gpsled,loraled,powerled); //代码有BUG需要执行2次,否则电源灯不亮
    Set4LEDColor(uwbled,gpsled,loraled,powerled);
    //Set4LEDColor(powerled,loraled,gpsled,uwbled);
    ledon_time = GetLPTime();
    Bat_Percent_Poll();
    if(state5v==0)
    {
    if(yuyin_no_sleep_flag==0)
    {
    recv_end_time++;
    if(recv_end_time>NOGPS_RESET_TIME)
    {HAL_NVIC_SystemReset();}
        if(yuyin_no_sleep_flag==0)
        {
            recv_end_time++;
            if(recv_end_time>NOGPS_RESET_TIME)
            {HAL_NVIC_SystemReset();}
        }
        Yuying_Poll();
        Lora_send_flag=1;
        if(nomove_count++>g_com_map[STATIONARY_TIME])
        {
            stationary_flag = 1;
        }
        else
        {
            stationary_flag = 0;
        }
        if(nomove_count>=g_com_map[NOMOVESLEEP_TIME]-1&&imu_enable)
        {
            gotosleep_flag=1;
        } else {
            gotosleep_flag=0;
        }
    }
    Yuying_Poll();
    Lora_send_flag=1;
    if(nomove_count++>g_com_map[STATIONARY_TIME])
    {
        stationary_flag = 1;
    }
    else
    {
    stationary_flag = 0;
    }
    if(nomove_count>=g_com_map[NOMOVESLEEP_TIME]-1&&imu_enable)
    {
        gotosleep_flag=1;
    } else {
        gotosleep_flag=0;
    }
    }
    powerled=LEDOFF;
    loraled=LEDOFF;
    gpsled=LEDOFF;
    uwbled=LEDOFF;
Set4LEDColor_Off();
//    powerled=LEDOFF;
//    loraled=LEDOFF;
//    gpsled=LEDOFF;
//    uwbled=LEDOFF;
//    Set4LEDColor_Off();
 }
 HAL_IWDG_Refresh(&hiwdg);
}