From 932b0ff31177b22810351183c9c47e82589167cd Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期二, 17 十二月 2024 14:52:23 +0800 Subject: [PATCH] 开关机逻辑完成,可实现无jlink下开关机 --- keil/include/main/main.c | 106 ++++++++++++++++++++++++----------------------------- 1 files changed, 48 insertions(+), 58 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 91c2dc1..e2a3a44 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -62,6 +62,7 @@ #include "HIDO_Timer.h" #include "TCPClient.h" #include "PCA9555.h" +#include "WS2812.h" #define DEBUG_MODE extern int simple_main(void); @@ -299,25 +300,28 @@ } } void UserKeyTask(void) - { - if(!GET_USERKEY) +{ + if(read_powerkey_input_pca()) { - if(HIDO_TimerGetTick() - keystarttime>3) + if(HIDO_TimerGetTick() - keystarttime>2) { userkey_state = 1; keystarttime = HIDO_TimerGetTick(); - UDPClient_UploadGPS(); + PCA9555_Set_One_Value_Output(PWR_ENABLE,0);//低电平关闭 + PCA9555_Set_One_Value_Output(GPS_LED,0);//输出低电平关闭LED + //UDPClient_UploadGPS(); } - if(HIDO_TimerGetTick() - keystarttime2>10) - { - g_com_map[CNT_RESTART] = 1; - } +// if(HIDO_TimerGetTick() - keystarttime2>10) +// { +// +// g_com_map[CNT_RESTART] = 1; +// } }else { keystarttime = HIDO_TimerGetTick(); keystarttime2 = HIDO_TimerGetTick(); } - } +} void MinuteTask(void) { PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低 @@ -372,6 +376,7 @@ uint8_t tt=1; uint8_t flag_sleeptimer,flag_secondtask,secondtask_count,log_4g_enable_flag; uint8_t uwb_enable_flag=0; + void check_input_change(void) { uint16_t gpio_state; @@ -380,39 +385,21 @@ { nomove_count=0; } - uart_change_check(gpio_state); + //uart_change_check(gpio_state); } static void sleep_timer_callback(void *dev, uint32_t time) { - //IO_control_init(); - if(enbale_blink_flag) - { - green_charge_state=0; - charge_red_on(); - } - - charge_state_change();//充电状态判断 if(secondtask_count++%2==0) { flag_secondtask = 1; }else{ flag_secondtask = 0; } - if(enbale_blink_flag) - { - //delay_us(5000); - green_charge_state=0; - charge_red_off(); - } if(delaysleep_count>0) delaysleep_count--; //GPS工作逻辑 } -static void voltage_input_handler(enum IO_PIN_T pin) -{ - -} static void move_handler(enum IO_PIN_T pin) { nomove_count=0; @@ -502,32 +489,27 @@ } void IdleTask(void) { -// if(gpio_pin_get_val(INPUT_5V_Pin)) -// { - -// if(state5v==0) -// { -// state5v=1; -// state5V_prase_flag=state5v; -// gps_prase_flag=0;//解除gps解析 -// uart1_change_from_gps_to_debug();//测试 -// // uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);//开启dma -// //UartInit(); -// } - -// //UART_CheckSend(); -// } else { -// if(state5v==1) -// { -// g_com_map[MODBUS_MODE] = 0; -// state5v=0; -// state5V_prase_flag=state5v; -// gps_prase_flag=1;//恢复gps解析 -// uart1_change_from_debug_to_gps();//测试 -// // uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);//开启dma -// //UartDeinit(); -// } -// } +if(read_5v_input_pca()) + { + if(state5v==0) + { + 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输入 + } + }else { + if(state5v==1) + { + g_com_map[MODBUS_MODE] = 0; + state5v=0; + state5V_prase_flag=state5v; + gps_prase_flag=1;//恢复gps解析 + uart1_change_from_debug_to_gps();//测试 + PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS + } + } UART_CheckReceive(); } int bind_check(void) @@ -610,7 +592,7 @@ // TCPClient_Init(); gpio_open(); - //board_output_init();//配置adcGND引脚 + LED_output_init();//配置adcGND引脚 // battery_monitor_open(); // Voltage_input=battery_monitor_get(); // battery_monitor_close(); @@ -620,14 +602,21 @@ IIC2_Init(); Accelerometer_Init(); PCA9555_init(); - //IO_control_init(); + if(!read_5v_input_pca()) + { + Set4LEDColor(BLUE,GREEN,WHITE,GREEN); + delay_ms(500); + Set4LEDColor(RED,WHITE,RED,WHITE); + delay_ms(500); + //Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF); + } + //IO_control_init(); // io_pin_mux_set(SCL_PIN, IO_FUNC0);//测试测距波形 // gpio_pin_set_dir(SCL_PIN , GPIO_DIR_IN, 0); // io_pull_set(SCL_PIN , IO_PULL_UP, IO_PULL_UP_LEVEL4); //gps_air780_power_change(0,1);//开启gps,4G //加速度计初始化必须在IO_control_init之前因为复用SDA引脚 gpio_pin_clr(ADC_GND_ENABLE); - Program_Init(); //uart_open(UART_ID1, &test_uart_cfg); // uart1_change_from_gps_to_debug(); @@ -652,6 +641,7 @@ while (1) { uwb_app_poll(); + //test4=gpio_pin_get_val(SCL_PIN); //UWBPoll(); // if(!power_low_flag)//确认是否休眠下才开启功能 @@ -686,7 +676,7 @@ SecondTask(); } -// UserKeyTask(); + UserKeyTask(); // IMUTask(); IdleTask(); #ifndef DEBUG_MODE -- Gitblit v1.9.3