| | |
| | | // 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); |
| | | |
| | | 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); |
| | | |
| | | 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; |
| | | extern uint16_t chongdian_yundong_time; |
| | | extern uint8_t bat_percent; |
| | | extern uint16_t heart_time; |
| | | extern uint8_t nomove_flag; |
| | |
| | | //#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[200]; |
| | | 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; |
| | | //extern uint8_t air780_state; |
| | | extern uint16_t sleep_time; |
| | | uint8_t zuihoufasong_falg; |
| | | uint8_t UDPClient_UploadGPS_flag; |
| | | extern uint16_t chongdianmeiyouuwb_time; |
| | | 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; |
| | | void PowerLedTask(void) |
| | | { |
| | | static u8 powerled_state=0; |
| | |
| | | } |
| | | while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE) |
| | | { |
| | | nomove_count = 0; |
| | | HAL_IWDG_Refresh(&hiwdg); |
| | | nomove_count = 0; |
| | | HAL_IWDG_Refresh(&hiwdg); |
| | | DBG_Poll(); |
| | | IdleTask(); |
| | | uwbled=LEDOFF; |
| | | if(bat_percent>=100) |
| | | { |
| | | powerled = RED; |
| | | chongman_flag=1; |
| | | } |
| | | else |
| | | { |
| | | powerled = RED; |
| | | } |
| | | if(receive1_gotosleep_flag||receive2_gotosleep_flag) |
| | | { |
| | | if(receive1_gotosleep_flag) |
| | | { |
| | | uwbled=LEDOFF; |
| | | Stop_chongdian_Mode_Poll(); |
| | | HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); |
| | | if(chongman_flag) //充满电重启,重启外设。 |
| | | {HAL_NVIC_SystemReset();} |
| | | } |
| | | if(receive2_gotosleep_flag) |
| | | { |
| | | uwbled=LEDOFF; |
| | | Stop_chongdian_Mode_Poll(); |
| | | HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Internet_Poll(); |
| | | HIDO_TimerPoll(); |
| | | HIDO_ATLitePoll(); |
| | | UDPClient_Poll(); |
| | | GPS_Poll(); |
| | | if(bat_percent>90) |
| | | { |
| | | powerled = RED; |
| | | chongman_flag=1; |
| | | } |
| | | else |
| | | { |
| | | powerled = RED; |
| | | } |
| | | if(chongdianmeiyouuwb_time>30) |
| | | { |
| | | HAL_NVIC_SystemReset(); |
| | | } |
| | | if(taglist_num>0) |
| | | { |
| | | if(air780_state>=2) |
| | | { |
| | | HAL_NVIC_SystemReset(); |
| | | } |
| | | if(chongdian_yundong_time>=YUNDONG_UWB_TIME) |
| | | if(work_time>=YUNDONG_UWB_TIME) |
| | | { |
| | | air780_state=0; |
| | | chongdian_yundong_time=0; |
| | | work_time=0; |
| | | Uwb_Zubao_Poll(); |
| | | UDPClient_UploadGPS((char*)GPS_data); |
| | | // UDPClient_UploadGPS_flag=1; |
| | | HexToAsciiSendUDP(uwb_send,19+5*taglist_num); |
| | | taglist_num=0; |
| | | chongdianmeiyouuwb_time=0; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if(chongdian_yundong_time>=g_com_map[GPS_HZ]) |
| | | if(work_time>=g_com_map[GPS_HZ]) |
| | | { |
| | | chongdian_yundong_time=0; |
| | | work_time=0; |
| | | if(GPS_successful_flag) |
| | | { |
| | | UDPClient_UploadGPS((char*)GPS_data); |
| | | // UDPClient_UploadGPS_flag=1; |
| | | } |
| | | else |
| | | { |
| | | Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | //deca_sleep(1000); |
| | | |
| | | g_com_map[GROUP_ID]=3; |
| | | g_com_map[VERSION] = (2<<8)|11; |
| | | g_com_map[VERSION] = (3<<8)|1; |
| | | |
| | | if (g_com_map[COM_INTERVAL] <50) |
| | | { |
| | |
| | | } |
| | | |
| | | } |
| | | 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(); |
| | | dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); |
| | | dwt_entersleep(); |
| | | } |
| | | } |
| | | void Stop_Mode_chulelora_Poll()//关掉除了uwb外的 |
| | | { |
| | | 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); |
| | | dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); |
| | | dwt_entersleep(); |
| | | } |
| | | } |
| | | extern uint16_t testlorarecve; |
| | | void Uwb_Zubao_Poll() |
| | | { |
| | |
| | | IdleTask(); |
| | | HAL_IWDG_Refresh(&hiwdg); |
| | | 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(); |
| | | } |
| | | else |
| | | { |
| | | if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。 然后10分钟发送一次定位信息,和XTB,其他时候休眠。 |
| | | { |
| | | if(air780_state>=2) |
| | | { |
| | | HAL_NVIC_SystemReset(); |
| | | } |
| | | fangchai_flag=1; |
| | | yundong_state=0; |
| | | if(fangchai_state==0||fangchai_state==1) |
| | | { |
| | | GPS_Poll(); |
| | | Internet_Poll(); |
| | | HIDO_TimerPoll(); |
| | | HIDO_ATLitePoll(); |
| | | UDPClient_Poll(); |
| | | } |
| | | if(fangchai_time>QIDONG_TIME&&fangchai_state==0) |
| | | { |
| | | fangchai_state=1; |
| | | fangchai_time=0; |
| | | if(GPS_successful_flag) |
| | | { |
| | | UDPClient_UploadGPS((char*)GPS_data); |
| | | // UDPClient_UploadGPS_flag=1; |
| | | } |
| | | else |
| | | { |
| | | Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); |
| | | } |
| | | } |
| | | if(fangchai_time>DENGDAI_TIME&&fangchai_state==1) |
| | | { |
| | | fangchai_time=0; |
| | | fangchai_state=2; |
| | | if(chongdian_only_one_flag)//如果从充电休眠状态突然拔掉充电线,进入正常工作模式,要重启重新启动4g gps等模块 |
| | | {HAL_NVIC_SystemReset();} |
| | | // if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。 然后10分钟发送一次定位信息,和XTB,其他时候休眠。 |
| | | // { |
| | | // fangchai_flag=1; |
| | | // yundong_state=0; |
| | | // if(fangchai_state==0||fangchai_state==1) |
| | | // { |
| | | // GPS_Poll(); |
| | | // Internet_Poll(); |
| | | // HIDO_TimerPoll(); |
| | | // HIDO_ATLitePoll(); |
| | | // UDPClient_Poll(); |
| | | // } |
| | | // if(fangchai_time>QIDONG_TIME&&fangchai_state==0) |
| | | // { |
| | | // fangchai_state=1; |
| | | // fangchai_time=0; |
| | | // if(GPS_successful_flag) |
| | | // { |
| | | // UDPClient_UploadGPS((char*)GPS_data); |
| | | // } |
| | | // else |
| | | // { |
| | | // Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); |
| | | // } |
| | | // } |
| | | // 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//设备没被拆卸 |
| | | // { |
| | | if(receive3_gotosleep_flag)//没有处于充电状态&&同时在静止休状态,收到上位机要求的休眠标志位 |
| | | { |
| | | 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(nomove_flag/*&&zuihoufasong_falg*/)//静止状态 |
| | | { |
| | | yundong_state=0; |
| | | if(sleep_time>12) |
| | | { |
| | | Stop_Mode_Poll(); |
| | | HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); |
| | | if(sleep_time>1800) |
| | | {HAL_NVIC_SystemReset();} |
| | | } |
| | | else |
| | | { |
| | | Internet_Poll(); |
| | | HIDO_TimerPoll(); |
| | | HIDO_ATLitePoll(); |
| | | UDPClient_Poll(); |
| | | } |
| | | HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); |
| | | if(work_time>1200) |
| | | {HAL_NVIC_SystemReset();}///20分钟后再次启动工作,重复a步骤(避免铁鞋被盗找不到) |
| | | } |
| | | else |
| | | { |
| | | yundong_state=1; |
| | | GPS_Poll(); |
| | | Internet_Poll(); |
| | | HIDO_TimerPoll(); |
| | |
| | | // taglist_num=5; |
| | | if(taglist_num>0) |
| | | { |
| | | if(air780_state>=2) |
| | | { |
| | | HAL_NVIC_SystemReset(); |
| | | } |
| | | if(yundong_time>=YUNDONG_UWB_TIME) |
| | | if(work_time>=YUNDONG_UWB_TIME) |
| | | { |
| | | air780_state=0; |
| | | yundong_time=0; |
| | | work_time=0; |
| | | Uwb_Zubao_Poll(); |
| | | UDPClient_UploadGPS((char*)GPS_data); |
| | | // UDPClient_UploadGPS_flag=1; |
| | | HexToAsciiSendUDP(uwb_send,19+5*taglist_num); |
| | | taglist_num=0; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // if(g_com_map[GPS_HZ]==1) |
| | | // { |
| | | if(yundong_time>=g_com_map[GPS_HZ]) |
| | | if(work_time>=g_com_map[GPS_HZ]) |
| | | { |
| | | yundong_time=0; |
| | | work_time=0; |
| | | if(GPS_successful_flag) |
| | | { |
| | | UDPClient_UploadGPS((char*)GPS_data); |
| | | // UDPClient_UploadGPS_flag=1; |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |