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