From 7001a22f0c7e737dc8193c1b50be7ef31b38108a Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期一, 28 四月 2025 18:28:55 +0800 Subject: [PATCH] 解决不测距,充电问题 --- keil/include/main/main.c | 112 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 79 insertions(+), 33 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 047412b..f837e83 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -40,6 +40,10 @@ #define UPDATE_TIME 10 +#define UWB_OPEN_COUNT 1 +#define UWB_MEASUREMENT_INTERVAL 3 +#define UWB_MEASUREMENT_INTERVAL_SLEEP 60 + extern uint8_t mUsartReceivePack[100]; extern uint8_t mUsart2ReceivePack[150]; extern uint8_t state5V_prase_flag,gps_prase_flag; @@ -71,8 +75,20 @@ LINK_SUCCESS, SEARCH_DEV, } Operation_step; -Operation_step UWB_work_state; +Operation_step UWB_work_state; +// 定义状态 +typedef enum { + STATE_NORMAL, // 正常状态,3秒测距上传一次 + STATE_SLEEP // 休眠状态,1分钟测距上传一次 +} CountState_t; + +uint32_t uwb_time_count = 0; // 定时器计数值 +//uint32_t step_count = 0; // 步数计数 +//uint32_t last_step_count = 0; // 上一次步数 + +CountState_t current_state = STATE_NORMAL; // 当前状态 +uint32_t state_start_time = 0; // 状态开始时间 Commend_SendDate send_struct; struct ADC_CFG_T usr_adc_cfg = { @@ -122,7 +138,7 @@ lock = int_lock(); // LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n"); // gps_air780_power_change(0,0);//关闭gps,4G - PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED + PCA9555_Set_One_Value_Output(LED_POWER,0);//输出低电平关闭LED PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G sleep_timer_stop(); @@ -145,7 +161,7 @@ { bat_percent = 0; } - else if(fVoltage_mv > 4100) + else if(fVoltage_mv > 4200) { bat_percent = 100; } @@ -180,6 +196,7 @@ { if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1) {//power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH); + power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW); mcu_deep_sleep(); } } @@ -316,34 +333,14 @@ if(delaysleep_count>0) delaysleep_count--; } -uint8_t test11,test21,test31,test41,test51; + static void pca_handler(enum IO_PIN_T pin) { PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值 - uint16_t gpio_state; - gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1]; - test41++; - if(WAKE_UP_POSITION&gpio_state) - { - nomove_count=0; - test11++; - } -// if(!(MAIN_RI_POSITION&gpio_state)) -// { -// flag_4G_recdata = 1; -// delaysleep_count = 3; -// test21++; -// } - if((PWR_ON_POSITION&gpio_state)) - { - PowerTask(); - test31++; - } - if(!(SOS_ENBALE_POSITION&gpio_state)) - { - UserKeyTask(); - test21++; - } + check_input_change(); +// uint16_t gpio_state; +// gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1]; + } void _4gUsart_handler(enum IO_PIN_T pin) @@ -369,6 +366,7 @@ send_struct.alarmDistence=prewarning_distance;//更新报警距离 memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID send_struct.tagId=dev_id;//更新设备ID + tag_frequency = 1000/g_com_map[COM_INTERVAL]; // g_com_map[IP_0]=111; // g_com_map[IP_1]=198; @@ -418,7 +416,7 @@ } g_com_map[MODBUS_MODE] = 0; log_4g_enable_flag=g_com_map[LOG_4G_ENABLE]; - g_com_map[VERSION] = (1<<8)|7; + g_com_map[VERSION] = (1<<8)|8; LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); @@ -471,7 +469,7 @@ { nomove_count = 0; // adctick = HIDO_TimerGetTick(); - if(HIDO_TimerGetTick()-adctick>60) //10分钟采样一次 电量 + if(HIDO_TimerGetTick()-adctick>600) //10分钟采样一次 电量 { chongman_time=chongman_time+60; adctick = HIDO_TimerGetTick(); @@ -483,7 +481,7 @@ only_one_flag=1; chongman_time=0; } - if(bat_percent>=99&&chongman_time>=600) + if(bat_percent>=99&&chongman_time>=180) { powerled = GREEN; }else{ @@ -527,6 +525,7 @@ g_com_map[CNT_RESTART]=0; save_com_map_to_flash(); NVIC_SystemReset(); + LOG_INFO(TRACE_MODULE_APP,"1111"); } } else @@ -542,6 +541,7 @@ } } NVIC_SystemReset(); + LOG_INFO(TRACE_MODULE_APP,"2222"); input5vflag=1; } else @@ -561,11 +561,12 @@ { g_com_map[CNT_RESTART]=0; NVIC_SystemReset(); - + LOG_INFO(TRACE_MODULE_APP,"3333"); } if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0) { NVIC_SystemReset(); + LOG_INFO(TRACE_MODULE_APP,"4444"); } HIDO_TimerPoll(); if(ledonflag==1) @@ -591,6 +592,49 @@ uart_close(UART_ID0);//解绑原来串口0 } +extern uint32_t uwb_time_count; +void upload_apppoll() +{ + uint32_t elapsed_time_jibu; + + switch (current_state) + { + case STATE_NORMAL: + elapsed_time_jibu = uwb_time_count - state_start_time; + switch(elapsed_time_jibu) + { + case UWB_OPEN_COUNT: + + CloseUWB(); + break; + + case UWB_MEASUREMENT_INTERVAL: + OpenUWB(); + state_start_time = uwb_time_count; + break; + } + break; + + case STATE_SLEEP: + elapsed_time_jibu = uwb_time_count - state_start_time; + switch(elapsed_time_jibu) + { + case UWB_OPEN_COUNT: + + CloseUWB(); + break; + + case UWB_MEASUREMENT_INTERVAL_SLEEP: + + OpenUWB(); + state_start_time = uwb_time_count; + break; + } + break; + } + +} + uint8_t flag_4guart_needinit=0; uint8_t index1,index2,index3; int16_t Voltage_input; @@ -600,10 +644,11 @@ extern uint8_t receive_flag; int main(void) { + __enable_irq(); board_clock_run(); boot_deinit(); board_pins_config(); - board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200); + board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200); // Reset reason reset_cause_get(); reset_cause_clear(); @@ -623,6 +668,7 @@ wdt_close(WDT_ID0); Program_Init(); Uart_Register(UART_ID_4G, UART_ID0); + Uart_Register(UART_ID_DBG_GPS, UART_ID1); DBG_Init(); -- Gitblit v1.9.3