From 767edd5ec2a133c04c5d84aeba4135f0bd21d23f Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期三, 28 八月 2024 15:11:49 +0800 Subject: [PATCH] V3.1,改为最新逻辑。 1.铁鞋没有处于充电状态&&同时在运动状态,正常定位,有uwb发uwb跟gps数据,没有就看是否有gps数据,有发gps数据没有发lbs数据。 2.铁鞋没有处于充电状态&&同时在静止休状态,1秒钟发送一次状态和位置坐标;直到定位引擎回复收到消息后,设备停止发送状态进入休眠模式;20分钟后再次启动工作,重复(避免铁鞋被盗找不到) 3.铁鞋插上充电时候(延迟x秒后,为了确保能判断归箱)1秒钟发送一次在充电状态;定位引擎回复收到消息后,设备停止发送状态进入休眠模式(目的太阳能充电省电) 4.铁鞋充电到100%后启动4G工作,1秒钟发送一次充满电状态;定位引擎回复收到消息后,设备停止发送状态进入休眠模式(目的太阳能充电省电)。休眠模式是指:所有外设不再工作,不联网不测距。PS:每两种状态之间切换时,只要之前进入过休眠,就要重新开启4g,联网时间根据信号强度5-20s不等。重新联网期间没有办法上发任何数据。 --- Core/Src/main.c | 65 ++++++++++++-------------------- 1 files changed, 25 insertions(+), 40 deletions(-) diff --git a/Core/Src/main.c b/Core/Src/main.c index c3fd7fe..218e58c 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -831,19 +831,18 @@ uint16_t fangchai_time; extern uint8_t fangchai_flag; extern uint8_t fangchai_state; -uint8_t yundong_state; -uint16_t yundong_time; + + uint8_t gpslednum; #define BAT_TIME 100 #define DIANLIANG 15 -uint8_t air780_state; +//uint8_t air780_state; extern uint8_t chongman_flag; uint8_t jinru_parsegga_flag; uint8_t input_5v_flag; uint8_t num; uint16_t sleep_time; -uint16_t chongdian_yundong_time; -uint16_t chongdianmeiyouuwb_time; +uint16_t chongdian_time; void Bat_Percent_Poll() { bat_time++; @@ -856,19 +855,8 @@ void Powerled_Poll() { if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) - {input_5v_flag=0; - if(bat_percent>DIANLIANG) - { - powerled = RED; - } - else - { - powerled = RED; - } - } - else { - input_5v_flag=1; + powerled = RED; } } void Fangchai_Panduan_Poll() @@ -898,17 +886,7 @@ // Beep_Off(); } } -void Yundong_Panduan_Poll() -{ - if(yundong_state>0) - { - yundong_time++; - } - else - { - yundong_time=0; - } -} + void Sleep_Panduan_Poll() { if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&imu_enable) @@ -926,7 +904,7 @@ } void Gps_Chongqi_Poll() { - if(nomove_flag==0&&!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&fangchai_state==0&&air780_state==0) + if(nomove_flag==0&&!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&fangchai_state==0) { if(jinru_parsegga_flag==0) { @@ -940,12 +918,27 @@ } } } +uint16_t work_time; +uint8_t input5vtime=10; void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim) { SystemClock_Config(); Gps_Chongqi_Poll(); Powerled_Poll(); - chongdianmeiyouuwb_time++; +// chongdianmeiyouuwb_time++; + if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) + { + chongdian_time++; + if(chongdian_time>input5vtime) + {input_5v_flag=1;} + else + {input_5v_flag=0;} + } + else + { + chongdian_time=0; + input_5v_flag=0; + } if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&chongman_flag==0) { num++; @@ -968,20 +961,12 @@ Set4LEDColor(powerled,loraled,gpsled,uwbled); } Fangchai_Panduan_Poll(); - Yundong_Panduan_Poll(); heart_time++; + work_time++; nomove_count++; Sleep_Panduan_Poll(); Bat_Percent_Poll(); - chongdian_yundong_time++; -// if(!chongman_flag) -// { -// powerled=LEDOFF; -// loraled=LEDOFF; -// gpsled=LEDOFF; -// uwbled=LEDOFF; -// Set4LEDColor_Off(); -// } + if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&chongman_flag==0) { } -- Gitblit v1.9.3