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 | 175 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 89 insertions(+), 86 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index effe597..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,6 +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(GPS_POWER,0);//关闭gps,4G PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G sleep_timer_stop(); @@ -144,7 +161,7 @@ { bat_percent = 0; } - else if(fVoltage_mv > 4100) + else if(fVoltage_mv > 4200) { bat_percent = 100; } @@ -174,10 +191,12 @@ uint8_t flag_4G_recdata; uint8_t ledonflag; uint32_t ledontime; +extern uint8_t flag_first_TCPconnect; void IMUTask(void) { 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(); } } @@ -185,10 +204,12 @@ { if(!read_userkey_input_pca()) { - if(HIDO_TimerGetTick() - keystarttime3>2) + delay_ms(1000); + if(!read_userkey_input_pca()) { userkey_state = 1; keystarttime3 = HIDO_TimerGetTick(); + flag_first_TCPconnect = 1; //UDPClient_UploadGPS(); } // if(HIDO_TimerGetTick() - keystarttime2>10) @@ -205,7 +226,8 @@ { if(read_powerkey_input_pca()) { - if(HIDO_TimerGetTick() - keystarttime>2) + delay_ms(1000); + if(read_powerkey_input_pca()) { rtkled=WHITE; uwbled=WHITE; @@ -233,12 +255,13 @@ } void MinuteTask(void) { - PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低 + PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低 + delay_ms(100); adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 } void SecondTask(void) {static uint8_t second_count; - if(second_count++>60) + if(second_count++>120) { second_count = 0; MinuteTask(); @@ -306,36 +329,18 @@ }else{ flag_secondtask = 0; } - if(gps_ntripsend==1) - { - gps_ntripsend=2; - } + 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++; - } + 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) @@ -361,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; @@ -410,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)|5; + g_com_map[VERSION] = (1<<8)|8; LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); @@ -463,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(); @@ -475,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{ @@ -519,6 +525,7 @@ g_com_map[CNT_RESTART]=0; save_com_map_to_flash(); NVIC_SystemReset(); + LOG_INFO(TRACE_MODULE_APP,"1111"); } } else @@ -534,6 +541,7 @@ } } NVIC_SystemReset(); + LOG_INFO(TRACE_MODULE_APP,"2222"); input5vflag=1; } else @@ -553,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) @@ -583,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; @@ -590,61 +642,13 @@ int test1,test3; uint32_t test4; extern uint8_t receive_flag; -//extern uint8_t YUANGPS_ParseGGA_data[256]; -//extern uint8_t YUANGPS_ParseGGA_changdu; -//static HIDO_CHAR url[256 + 1]; -//void OTA_MODE(void) -//{ -// if(g_com_map[OTA_FLAG]) -// { -// Uart_Register(UART_ID_4G, UART_ID0); -// Uart_Register(UART_ID_DBG_GPS, UART_ID1); -// DBG_Init(); -// DBG_SetMode(DBG_MODE_SHELL); -// Internet_Init(); -// // TCPClient_Init(); -// HTTPClient_Init(); -// gpio_open(); -// LED_output_init();//配置彩色灯引脚 -// IIC2_Init(); -// // Accelerometer_Init(); -// PCA9555_init(); -// uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); -// power_init(); -// sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback); -// sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试 -// pca_input_detection_init(pca_handler);//pca检测输入 -// state5v=1; -// state5V_prase_flag=state5v; -// gps_prase_flag=0;//解除gps解析 -// uart1_change_from_gps_to_debug();//测试 -// PCA9555_Set_One_Value_Output(MCU_A,1);//输出高电平切换为5V输入 -// memcpy((HIDO_UINT8 *)url,g_com_map+OTA_URL_INDEX,g_com_map[OTA_URL_CHANGDU]); -// OTA_Start((HIDO_UINT8 *)url); -// -//// g_com_map[OTA_FLAG]=0; -//// save_com_map_to_flash(); -//// delay_us(100000); -//// NVIC_SystemReset(); //软复位回到bootloader -// -// -// while (1) -// { -// OTA_Poll(); -// HTTPClient_Poll(); -// Internet_Poll(); -// HIDO_TimerPoll(); -// HIDO_ATLitePoll(); -//// IdleTask(); -// } -// } -//} 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(); @@ -664,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(); @@ -727,9 +732,7 @@ flag_secondtask = 0; SecondTask(); } - PowerTask(); IMUTask(); - UserKeyTask(); IdleTask(); } } -- Gitblit v1.9.3