From 755f0e3a86e41e9e3cb98f36578b3199c6206e59 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期三, 23 四月 2025 11:14:46 +0800
Subject: [PATCH] 蓝牙现在通过PCA9555关闭使能,反初始化串口,拉低PCA中断脚,现在是0.8v

---
 keil/include/drivers/PCA9555.c |   64 ++++++++++++++++++++++++++-----
 1 files changed, 53 insertions(+), 11 deletions(-)

diff --git a/keil/include/drivers/PCA9555.c b/keil/include/drivers/PCA9555.c
index ede8444..e699e0a 100644
--- a/keil/include/drivers/PCA9555.c
+++ b/keil/include/drivers/PCA9555.c
@@ -1,5 +1,6 @@
 #include "PCA9555.h"
 #include "mk_power.h"
+//#include "DBG.h"
 #include "lora_3029.h"
 uint8_t gps_led_output_state,tts_enbale_output_state,wake_up_output_state,air780e_enable_output_state,sos_enable_output_state,gps_backup_output_state,gps_power_output_state,main_ri_output_state;//1组output IO口从左到右1.0~1.7
 uint8_t mcu_a_output_state,chg_g_output_state,lora_irq_output_state,lora_nrst_output_state,adc_minius_output_state,input_5v_output_state,pwr_on_output_state,pwr_enable_output_state;//2组output IO口从左到右0.0~0.7
@@ -462,15 +463,49 @@
 /*读取5V引脚的输入高低电平
   返回值 高1 低0 电平
 */
+uint16_t gpio_state111;
+extern uint8_t input5v_time;
+uint8_t _5VState = 0;
+uint8_t Get5VState()
+{
+    return _5VState;
+}
+
+void Set5VState(uint8_t state)
+{
+//    if(_5VState != state)
+//    {
+//        DBG_SetMode(DBG_MODE_CHARGE);
+//    }
+    _5VState = state;
+}
+
 int read_5v_input_pca(void)
-{PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值
-	uint16_t gpio_state;
-	gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
-//	if(INPUT_5V_POSITION&gpio_state)
-//		return 1;
-//	else {
-//		return 0;
-//	}
+{
+    if(input5v_time)
+    {
+        input5v_time=0;    
+        PCA9555_readdata(PCA9555_DEVICE_ADDR,pca9555writedata_input);//读输入寄存器的值
+        uint16_t gpio_state;
+        gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
+        gpio_state111=gpio_state;
+        if(gpio_state==0xFFFF)
+        {return 0;}
+        if(IN_5V_POSITION&gpio_state)
+        {
+            Set5VState(1);
+            return 1;
+        }
+        else
+        {
+            Set5VState(0);
+            return 0;
+        }
+    }
+    else {
+        Set5VState(0);
+		return 0;
+	}
 }
 /*读取供电引脚的输入高低电平
   返回值 高1 低0 电平
@@ -534,8 +569,11 @@
 		PCA9555_Set_One_Value_Output(BT_EN,0);	
 	  PCA9555_Set_One_Value_Config(MOTO,0);       //设置MOTO为输出
 	
+	  PCA9555_Set_One_Value_Config(PWR_GND,0);	  //设置PWR_GND为输出	
+	  PCA9555_Set_One_Value_Output(PWR_GND,0);    //拉低
+	
 		//PCA9555_Set_One_Value_Config(LORA_IRQ,1);		//设置LORAIRQ为输入
-	  PCA9555_Set_One_Value_Config(BT_IRQ,1);		  //设置BT_IRQ为输入
+
     PCA9555_Set_One_Value_Config(WK_UP,1);			//设置WK_UP为输入
 		PCA9555_Set_One_Value_Config(SOS_ENBALE,1);	//设置SOS为输入
 	  PCA9555_Set_One_Value_Config(IN_5V,1);      //设置IN_5V为输入
@@ -605,7 +643,7 @@
 	SOS_KEY_STATE=!SOS_KEY_STATE;
 	if(SOS_KEY_STATE)
 	{
-	GREEN_LED_ON;
+//	GREEN_LED_ON;
 //	onemin_onesecond_flag=1;
 //	uwb_time_count=0;
 //	CloseUWB();
@@ -613,7 +651,7 @@
 	else
 	{
 //	onemin_onesecond_flag=0;
-	GREEN_LED_OFF;
+//	GREEN_LED_OFF;
 //	uwb_time_count=0;
 //	CloseUWB();
 	}
@@ -646,6 +684,10 @@
 				 //移动
          move_handler();
 				}
+				if(BT_IRQ_POSITION&gpio_state)
+				{
+
+				}
 
 }
 

--
Gitblit v1.9.3