WXK
2025-04-25 df5669303bd54d7bfd553c7cfad279231d7ece17
APL/App.c
@@ -57,7 +57,9 @@
static HIDO_UINT32 l_u32LocationTick = 0;
extern ST_GPS l_stGPS;
extern uint32_t uwbled,gpsled,loraled,powerled;
uint8_t uwb_send[100]={0x55,0xaa};
uint8_t uwb_send[200]={0x55,0xaa};
void Uwb_Zubao_Poll();
extern IWDG_HandleTypeDef hiwdg;
/*******************************************************************************
 *                        Local Function Declaration                           *
 *******************************************************************************/
@@ -101,140 +103,83 @@
//    HexToAsciiSendUDP(LBS_data,u32Len);
//    UDPClient_UploadGPS((char*)LBS_data);
}
extern UART_HandleTypeDef huart2;
uint8_t chongdian_only_one_flag;
void Stop_chongdian_Mode_Poll()
{
    if(chongdian_only_one_flag==0)
    {
        chongdian_only_one_flag=1;
        GPS_PowerOff();
        HAL_UART_DeInit(&huart2);
        GPIO_InitTypeDef GPIO_InitStruct = {0};//
        GPIO_InitStruct.Pin = GPIO_PIN_4;
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*******************************************************************************
 * Function Name     : App_Poll
 * Description       :
 * Input             :
 * Output            : None
 * Return            : None
 * Author            : www.hido-studio.com
 * Modified Date:    : 2021年5月07日
 *******************************************************************************/
//HIDO_VOID App_Poll(HIDO_VOID)
//{
//    // 充电状态
//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET)
//    {
//        if(HIDO_FALSE == l_bCharge)
//        {
//            l_bCharge = HIDO_TRUE;
//            l_u32ChargeTick = 0;
//            l_u32CancelChargeReport = HIDO_FALSE;
//        }
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
//        Radio.Sleep();
        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
        dwt_entersleep();
    }
}
uint8_t only_one_flag;
void Stop_Mode_Poll()
{
    if(only_one_flag==0)
    {
        only_one_flag=1;
        GPS_PowerOff();
        HAL_UART_DeInit(&huart2);
        GPIO_InitTypeDef GPIO_InitStruct = {0};//
        GPIO_InitStruct.Pin = GPIO_PIN_4;
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
//        if(l_bCharge == HIDO_TRUE && l_u32CancelChargeReport == HIDO_FALSE)
//        {
//            if((HIDO_TimerGetTick() - l_u32ChargeTick) >= HIDO_TIMER_TICK_S(10))
//            {
//                l_u32ChargeTick = HIDO_TimerGetTick();
//                // 发送状态
//            }
//        }
//        return;
//    }
//    else
//    {
//        l_bCharge = HIDO_FALSE;
//    }
//    // 设备被拆卸
//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) == GPIO_PIN_RESET)
//    {
//        if(HIDO_FALSE == l_bDismantle)
//        {
//            l_bCancelAlarm = HIDO_FALSE;
//            l_bDismantle = HIDO_TRUE;
//            l_u32DismantleAlarmTick = 0;
//        }
//    }
//    else
//    {
//        l_bDismantle = HIDO_TRUE;
//    }
//    // 启动蜂鸣器
//    if(l_bDismantle == HIDO_TRUE && l_bCancelAlarm == HIDO_FALSE)
//    {
//        // 蜂鸣器动作
//        // 每隔10秒发送一次告警
//        if((HIDO_TimerGetTick() - l_u32DismantleAlarmTick) >= HIDO_TIMER_TICK_S(10))
//        {
//            l_u32DismantleAlarmTick = HIDO_TimerGetTick();
//            // 发送告警
//        }
//    }
//    // 10分钟上报一次位置
//    if((HIDO_TimerGetTick() - l_u32LocationTick) >= HIDO_TIMER_TICK_S(1/*0 * 60*/))
//    {
//        l_u32LocationTick = HIDO_TimerGetTick();
//        // GPS定位有效
//        if(l_stGPS.m_eState)
//        {
//            // 发送GNSS位置
//        }
//        // GPS定位无效
//        else
//        {
//            // 获取LBS位置
//            Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//        }
//    }
//}
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
//        Radio.Sleep();
        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
        dwt_entersleep();
    }
}
extern uint16_t nomove_count;
extern uint8_t bat_percent;
extern uint8_t chargedbg_flag;
u8 power_state = 0,chargeon = 0;
uint8_t chongman_flag;
void PowerLedTask(void)
{
     static u8 powerled_state=0;
    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
    {
        if(!power_state&&!chargedbg_flag)
        {
            DBG_SetMode(DBG_MODE_CHARGE);
            power_state = 1;
        }
       while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE)
        {
        DBG_Poll();
        IdleTask();
        uwbled=LEDOFF;
            if(bat_percent>90)
            {
                powerled = RED;
                gpsled = LEDOFF;
                uwbled = LEDOFF;
                loraled = LEDOFF;
                chongman_flag=1;
            }
            else
            {
                powerled = RED;
            }
        }
    }
    chongman_flag=0;
    chargeon = 0;
   if(power_state)
    {
        DBG_SetMode(DBG_MODE_SHELL);
        power_state = 0;
    }
    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
    {
        chargedbg_flag = 0;
    }
}
extern uint8_t bat_percent;
extern uint16_t heart_time;
extern uint8_t nomove_flag;
uint16_t qidong_time;
#define QIDONG_TIME 60  //1分钟
#define DENGDAI_TIME 30//90s
//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
#define YUNDONG_UWB_TIME 1
#define YUNDONG_GPS4G_TIME 100
uint8_t GPS_data[200];
uint8_t GPS_successful_flag;
uint8_t fangchai_flag;
uint8_t fangchai_state;
extern uint16_t fangchai_time;
extern uint8_t taglist_num;
uint16_t tagseq;
extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
extern uint8_t tagbat_list[ANC_MAX_NUM];
extern TIM_HandleTypeDef htim3;
extern uint8_t beep_state;
//extern uint8_t air780_state;
extern uint16_t sleep_time;
uint8_t zuihoufasong_falg;
extern uint8_t receive1_gotosleep_flag;
extern uint8_t receive2_gotosleep_flag;
extern uint8_t receive3_gotosleep_flag;
extern uint8_t chongdian_time;
extern uint8_t input5vtime;
extern uint16_t work_time;
uint8_t imu_enable;
extern uint32_t dev_id;
void Program_Init(void)
@@ -249,8 +194,8 @@
//    hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP + 4);
    //deca_sleep(1000);
    g_com_map[GROUP_ID]=0;
   g_com_map[VERSION] = (1<<8)|5;
    g_com_map[GROUP_ID]=3;
   g_com_map[VERSION] = (3<<8)|6;
    if (g_com_map[COM_INTERVAL] <50)
    {
@@ -287,10 +232,12 @@
      else          
      {g_com_map[GPS_HZ]=600;}
    }
    g_com_map[GPS_HZ]=1;
    if(g_com_map[CHAICHUGPS_HZ]<180||g_com_map[CHAICHUGPS_HZ]>3600)
    {
      {g_com_map[CHAICHUGPS_HZ]=600;}
    }
    g_com_map[CHAICHUGPS_HZ]=1800;
    if(g_com_map[NOMOVESLEEP_TIME]>120)
    {
       g_com_map[NOMOVESLEEP_TIME]=120;
@@ -305,30 +252,66 @@
    dev_id = g_com_map[DEV_ID];
    printf("设备ID: %x .\r\n",dev_id);
    printf("固件版本: 铁鞋定位 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
    printf("固件版本:  L071无UWB工卡V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
    printf("服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[IP_0],g_com_map[IP_1],g_com_map[IP_2],g_com_map[IP_3],g_com_map[PORT]);
    printf("当前运动时GPS工作间隔: %d .\r\n",g_com_map[GPS_HZ]);
    printf("当前被拆时GPS工作间隔: %d .\r\n",g_com_map[CHAICHUGPS_HZ]);
       if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
    {        printf("TCP_RTCM模式,服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[TCP_IP_0],g_com_map[TCP_IP_1],g_com_map[TCP_IP_2],g_com_map[TCP_IP_3],g_com_map[TCP_PORT]);
    }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP)
    {
//        sprintf((char *)&g_com_map[NTRIP_HOST_INDEX],"140.143.212.42");
//        g_com_map[NTRIP_PORT_INDEX] = 8005;
//        sprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX],"test006");
//        sprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX],"hxzk20151102");
//        sprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX],"RTCM32_GNSS2");
        printf("NtripHost:%s.\r\n",(char *)&g_com_map[NTRIP_HOST_INDEX]);
        printf("NtripPort:%d.\r\n",g_com_map[NTRIP_PORT_INDEX]);
        printf("NtripUsername:%s.\r\n",(char *)&g_com_map[NTRIP_USERNANME_INDEX]);
        printf("NtripPassword:%s.\r\n",(char *)&g_com_map[NTRIP_PASSWORD_INDEX]);
        printf("NtripSourcename:%s.\r\n",(char *)&g_com_map[NTRIP_SOURCENAME_INDEX]);
    }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NONE)
    {
        printf("单点定位模式模式. \r\n");
    }
//    printf("当前被拆时GPS工作间隔: %d .\r\n",g_com_map[CHAICHUGPS_HZ]);
//       if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP)
//    {        printf("TCP_RTCM模式,服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[TCP_IP_0],g_com_map[TCP_IP_1],g_com_map[TCP_IP_2],g_com_map[TCP_IP_3],g_com_map[TCP_PORT]);
//    }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP)
//    {
////        sprintf((char *)&g_com_map[NTRIP_HOST_INDEX],"140.143.212.42");
////        g_com_map[NTRIP_PORT_INDEX] = 8005;
////        sprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX],"test006");
////        sprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX],"hxzk20151102");
////        sprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX],"RTCM32_GNSS2");
//        printf("NtripHost:%s.\r\n",(char *)&g_com_map[NTRIP_HOST_INDEX]);
//        printf("NtripPort:%d.\r\n",g_com_map[NTRIP_PORT_INDEX]);
//        printf("NtripUsername:%s.\r\n",(char *)&g_com_map[NTRIP_USERNANME_INDEX]);
//        printf("NtripPassword:%s.\r\n",(char *)&g_com_map[NTRIP_PASSWORD_INDEX]);
//        printf("NtripSourcename:%s.\r\n",(char *)&g_com_map[NTRIP_SOURCENAME_INDEX]);
//    }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NONE)
//    {
//        printf("单点定位模式模式. \r\n");
//    }
}
void PowerDownDetect(void)
{
    static HIDO_UINT32 l_u32QXpowerTick = 0;
    static uint32_t powercount=0;
    if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12))
    {
       if((HIDO_TimerGetTick() - l_u32QXpowerTick) >=1000)
      {
          while(1)
          {
              gpsled=WHITE;
              uwbled=WHITE;
              loraled=WHITE;
              powerled=WHITE;
              Set4LEDColor(uwbled,gpsled,loraled,powerled);
              if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_12)==0)
              {
                  powercount = 0;
                  l_u32QXpowerTick = HIDO_TimerGetTick();
                  while(1)
                  {
//                  if((HIDO_TimerGetTick() - l_u32QXpowerTick) >=100)
                    {
                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
                        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
                        HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
                    }
                }
              }
          }
      }
      }else{
           l_u32QXpowerTick = HIDO_TimerGetTick();
      }
}
void IdleTask(void)
{
  // APLPollTask();
@@ -348,73 +331,15 @@
        }
}
extern uint8_t bat_percent;
extern uint16_t heart_time;
extern uint8_t nomove_flag;
uint16_t qidong_time;
#define QIDONG_TIME 60  //1分钟
#define DENGDAI_TIME 30//90s
//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
#define YUNDONG_UWB_TIME 1
#define YUNDONG_GPS4G_TIME 100
extern UART_HandleTypeDef huart2;
uint8_t GPS_data[100];
uint8_t GPS_successful_flag;
uint8_t fangchai_flag;
uint8_t fangchai_state;
uint8_t only_one_flag;
uint8_t only_one_flag1;
extern uint16_t fangchai_time;
extern uint8_t taglist_num;
uint16_t tagseq;
extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
extern uint8_t yundong_state;
extern uint16_t yundong_time;
extern uint8_t tagbat_list[ANC_MAX_NUM];
extern TIM_HandleTypeDef htim3;
extern uint8_t beep_state;
extern uint8_t air780_state;
void Stop_Mode_Poll()
{
    if(only_one_flag==0)
    {
        only_one_flag=1;
        GPS_PowerOff();
        HAL_UART_DeInit(&huart2);
        GPIO_InitTypeDef GPIO_InitStruct = {0};//
        GPIO_InitStruct.Pin = GPIO_PIN_4;
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
        Radio.Sleep();
    }
}
void Stop_Mode_chulelora_Poll()//关掉除了lora外的
{
    if(only_one_flag1==0)
    {
        only_one_flag1=1;
        GPS_PowerOff();
        HAL_UART_DeInit(&huart2);
        GPIO_InitTypeDef GPIO_InitStruct = {0};//
        GPIO_InitStruct.Pin = GPIO_PIN_4;
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
    }
}
extern uint16_t testlorarecve;
void Uwb_Zubao_Poll()
{       
    uint16_t state_flag;
    u16 uwbchecksum;
    state_flag=fangchai_flag<<4;
        if(taglist_num>8)
        {taglist_num=8;}
        uwb_send[2] = 0x12;//正常模式 
        uwb_send[3] = 15+5*(taglist_num);//数据段长度
        memcpy(&uwb_send[4],&dev_id,2);
@@ -422,7 +347,8 @@
        uwb_send[7] = (tagseq++)>>8;
        uwb_send[8] = bat_percent;
        uwb_send[9] = state_flag;
        //memcpy(&usart_send[10],&rec_tagheight,2);
        memcpy(&uwb_send[10],&testlorarecve,2);
        testlorarecve=0;
        uwb_send[12] = 0;
        uwb_send[13] = 0;
        uwb_send[14] = 0;
@@ -435,165 +361,226 @@
        uwbchecksum = Checksum_u16(&uwb_send[2],15+5*taglist_num);
        memcpy(&uwb_send[17+5*taglist_num],&uwbchecksum,2);
}
void Main_Poll()
u8 only_one_flag;
u16 chongman_time;
u8 bat_percent_old=100;
extern IWDG_HandleTypeDef hiwdg;
u32 adctick = 0;
u8 rtk_state = 1;
void CloseRTK4G(void)
{
    u16 uwbchecksum;
    IdleTask();
    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸
      rtk_state = 0;
      loraled = LEDOFF;
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
}
void OpenRTK4G(void)
{
      loraled = 1;
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);
}
extern uint8_t ledonflag;
extern uint32_t ledontime;
void PowerLedTask(void)
{
    static u8 powerled_state=0;
    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
    {
        if(air780_state>=2)
        {
            HAL_NVIC_SystemReset();
        }
        fangchai_flag=1;
        yundong_state=0;
        if(fangchai_state==0||fangchai_state==1)
        chongman_time=0;
        only_one_flag=0;
        uwbled=0;
        gpsled=0;
        loraled=0;
        powerled=0;
        if(!power_state&&!chargedbg_flag)
        {
//            PowerLedTask();
//            DBG_Poll();
//            IdleTask();
            GPS_Poll();
            Internet_Poll();
            HIDO_TimerPoll();
            HIDO_ATLitePoll();
            UDPClient_Poll();
            CloseRTK4G();
            DBG_SetMode(DBG_MODE_CHARGE);
            power_state = 1;
//            Uart_ChongxinInit(UART_ID_DBG);
//            DBG_Init();
//            Shell_Init();
        }
        if(fangchai_time>QIDONG_TIME&&fangchai_state==0)
        while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE)
        {
            fangchai_state=1;
            fangchai_time=0;
            if(GPS_successful_flag)
            nomove_count = 0;
            if(HIDO_TimerGetTick()-adctick>6000)  //10分钟采样一次 电量
            {HAL_IWDG_Refresh(&hiwdg);
                chongman_time=chongman_time+6;
                adctick = HIDO_TimerGetTick();
                if( HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10))
                {
                    bat_percent=Get_Battary();
                }else{
                    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
                    bat_percent=Get_Battary();
                    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
                }
            }
            if(bat_percent>=99&&!only_one_flag)
            {
                UDPClient_UploadGPS((char*)GPS_data);
//                loraled=GREEN;
            only_one_flag=1;
            chongman_time=0;
            }
            if(bat_percent>=99&&chongman_time>=1800)
            {
                powerled = GREEN;
            }else{
                powerled = RED;
            }
            delay_ms(100);
            DBG_Poll();
            Internet_Poll();
            Set4LEDColor(0,0,0,powerled);
        }
    }
    chargeon = 0;
    if(power_state)
    {
        DBG_SetMode(DBG_MODE_SHELL);
        power_state = 0;
        bat_percent_old=100;
        OpenRTK4G();
    }
    if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
    {
     chargedbg_flag = 0;
    }
    if(HIDO_TimerGetTick()-ledontime>100&&ledonflag==1)
    {
        ledonflag=0;
    Set4LEDColor_Off();
    }
//        else
//        {
////            if(powerled_state)
//            {
//                powerled_state = 0;
////                powerled = LEDOFF;
////                uwbled = LEDOFF;
////                gpsled = LEDOFF;
////                loraled = LEDOFF;
////                Set4LEDColor(uwbled,gpsled,loraled,powerled);
//                Set4LEDColor_Off();
//            }
//
//        }
    if(HIDO_TimerGetTick()-adctick>6000)  //10分钟采样一次 电量
    {
        adctick = HIDO_TimerGetTick();
        if( HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10))
        {
            bat_percent=Get_Battary();
            if(bat_percent>bat_percent_old)
            {
            bat_percent=bat_percent_old;
            }
            else
            {
                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//                loraled=WHITE;
            bat_percent_old=bat_percent;
            }
        }
        if(fangchai_time>DENGDAI_TIME&&fangchai_state==1)
        {
            fangchai_time=0;
            fangchai_state=2;
            Stop_Mode_Poll();
        }
        if(fangchai_state==2)
        {
         HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
        }
        if(fangchai_time>g_com_map[CHAICHUGPS_HZ]-QIDONG_TIME-DENGDAI_TIME&&fangchai_state==2)
        {
            HAL_NVIC_SystemReset();
        }
    }
    else//设备没被拆卸
    {
        fangchai_flag=0;
        if(fangchai_state>=2)
        {
            HAL_NVIC_SystemReset();
        }
        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
        {   yundong_state=0;
            PowerLedTask();
            DBG_Poll();
            IdleTask();
            Internet_Poll();
            HIDO_TimerPoll();
            HIDO_ATLitePoll();
            UDPClient_Poll();
            uwbled=LEDOFF;
        }
        else//没有5V输入
        {
            if(nomove_flag)//静止状态
        }else{
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
            bat_percent=Get_Battary();
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
            if(bat_percent>bat_percent_old)
            {
                yundong_state=0;
                Stop_Mode_Poll();
                HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
            bat_percent=bat_percent_old;
            }
            else//运动状态
            {
                if(yundong_state==0)
                {Radio.Rx(0);}
                yundong_state=1;
                GPS_Poll();
                Internet_Poll();
                HIDO_TimerPoll();
                HIDO_ATLitePoll();
                UDPClient_Poll();
//                taglist_num=5;
                if(taglist_num>0)
                {
                    if(air780_state>=2)
                    {
                        HAL_NVIC_SystemReset();
                    }
                    if(yundong_time>=YUNDONG_UWB_TIME)
                    {
                        air780_state=0;
                        yundong_time=0;
                        Uwb_Zubao_Poll();
                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
//                        loraled=BLUE;
                        taglist_num=0;
                    }
                }
                else
                {
                    if(g_com_map[GPS_HZ]==1)
                    {
                        if(yundong_time>=g_com_map[GPS_HZ])
                        {
                            yundong_time=0;
                            if(GPS_successful_flag)
                            {
                                UDPClient_UploadGPS((char*)GPS_data);
//                                loraled=GREEN;
                            }
                            else
                            {
                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//                                loraled=WHITE;
                            }
                        }
                    }
                    else
                    {
                        if(yundong_time>=60&&air780_state==0)
                        {
                            air780_state=1;
                            yundong_time=0;
                            if(GPS_successful_flag)
                            {
                                UDPClient_UploadGPS((char*)GPS_data);
//                                loraled=GREEN;
                            }
                            else
                            {
                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//                                loraled=WHITE;
                            }
                        }
                        if(yundong_time>=30&&air780_state==1)
                        {
                            air780_state=2;
                            yundong_time=0;
                            Stop_Mode_chulelora_Poll();
                        }
                        if(air780_state==2)
                        {
                            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
                        }
                        if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2)
                        {
                            HAL_NVIC_SystemReset();
                        }
                    }
                }
            }
            else
            {
            bat_percent_old=bat_percent;
            }
        }
    }
    if(bat_percent<=1)
    {
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
    }
}
extern uint32_t main_time;
extern uint16_t testlorarecve;
uint8_t delaysleep_count;
char str[17]= {"AT+IPR=9600;&W\r\n"};
extern  UART_HandleTypeDef huart5;
extern uint8_t stop_flag;
extern uint16_t beepontime;
u32 keystarttime,keystarttime2;
extern uint8_t userkey_state4g;
void UserKeyTask(void)
{
     if(!HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1))
     {
        if(HIDO_TimerGetTick() - keystarttime>1000)
        {
            beepontime = 2;
            userkey_state4g = 1;
//            userkey_state = 1;
//            heartbeasend_flag = 1;
            keystarttime =  HIDO_TimerGetTick();
        }
     }else
     {
       keystarttime =  HIDO_TimerGetTick();
       keystarttime2 =  HIDO_TimerGetTick();
     }
    if(beepontime>0)
    {Beep_On();}
    else
    {Beep_Off();}
    Sleep_Panduan_Poll();
}
void Main_Poll()
{
//    if(main_time>10&&only_one_flag==0)
//    {
//        only_one_flag=1;
//      Uart_ReConfigBaudRate(UART_ID_4G,115200);
//    HAL_UART_Transmit(&huart5, str,17,1000);
//    Uart_ReConfigBaudRate(UART_ID_4G,9600);
//    }
    if(stop_flag)
    {
        HAL_IWDG_Refresh(&hiwdg);
        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
    }
    else
    {
        PowerLedTask();
        DBG_Poll();
        IdleTask();
        GPS_Poll();
        Internet_Poll();
        HIDO_TimerPoll();
        HIDO_ATLitePoll();
        UDPClient_Poll();
        HAL_IWDG_Refresh(&hiwdg);
        PowerDownDetect();
        UserKeyTask();
        Sleep_Panduan_Poll();
    }
//    if(AIR780E_IsIPIdle() && Socket_IsSendQueueEmpty(0))
//    {
//        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
//    }
//    if(delaysleep_count==0/*&&!gps_need_data_flag*/)
//    if(((IfTCPConnected()&&AIR780E_IsIPIdle()&&Socket_IsSendQueueEmpty(0))/*||((!flag_TCP_reconnectting)&&!IfTCPConnected())*/))
//    {
//         HAL_IWDG_Refresh(&hiwdg);
//        printf("要进入休眠了,当前时间戳%d\r\n",HIDO_TimerGetTick());
//    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
//    }
}
//*/
////以上是源代码,被拆除时间接性关闭4G