zhangbo
2025-04-21 57b984b8395bb30b2d170369c75f19722502b104
keil/include/drivers/PCA9555.c
@@ -79,7 +79,7 @@
    uint8_t ucErrTime=0;
//  IIC2_SDA_IN();  
 
   gpio_pin_set_dir(SDA_PIN,GPIO_DIR_IN,1); //SDA设置为输入等待接收端的应答信号
   gpio_pin_set_dir(SDA_PIN,GPIO_DIR_IN,0); //SDA设置为输入等待接收端的应答信号
    SDA_1;
   delay_us(6);
   SCL_1;
@@ -107,7 +107,7 @@
void IIC2_pca_send_Ack(void)
{
    SCL_0;
    SDA_0;//读取SDA电平为低则有应答
///    SDA_0;//读取SDA电平为低则有应答
    delay_us(10);
    SCL_1;
      delay_us(10);
@@ -530,7 +530,8 @@
     PCA9555_Set_One_Value_Config(GREEN_LED,0);   //设置GREEN_LED为输出
     //管脚
     PCA9555_Set_One_Value_Config(LORA_NRST,0);   //设置LORA_NRST为输出
     PCA9555_Set_One_Value_Config(BT_EN,0);         //设置BT_EN为输出
     PCA9555_Set_One_Value_Config(BT_EN,0);         //设置BT_EN为输出
      PCA9555_Set_One_Value_Output(BT_EN,0);
     PCA9555_Set_One_Value_Config(MOTO,0);       //设置MOTO为输出
   
      //PCA9555_Set_One_Value_Config(LORA_IRQ,1);      //设置LORAIRQ为输入
@@ -597,17 +598,24 @@
}
uint8_t LORA_IRQ_flag=0;
uint8_t Sos_state;
uint8_t SOS_KEY_STATE=0;
extern uint16_t uwb_time_count;
void SOS_irq_callback()
{
   Sos_state=!Sos_state;
   if(Sos_state)
   SOS_KEY_STATE=!SOS_KEY_STATE;
   if(SOS_KEY_STATE)
   {
   RED_LED_ON;
   GREEN_LED_ON;
//   onemin_onesecond_flag=1;
//   uwb_time_count=0;
//   CloseUWB();
   }
   else
   {
   RED_LED_OFF;
//   onemin_onesecond_flag=0;
   GREEN_LED_OFF;
//   uwb_time_count=0;
//   CloseUWB();
   }
}
@@ -617,31 +625,14 @@
//}
void move_handler()
{
    nomove_count=0;
     Sos_state=!Sos_state;
      if(Sos_state)
   {
      GREEN_LED_ON;
   }
   else
   {
      GREEN_LED_OFF;
   }
    nomove_count=0;
}
void check_input_change(void)
{
        uint16_t gpio_state;
        gpio_state=(uint16_t)pca9555writedata_input[0]<<8|pca9555writedata_input[1];
//        if(LORA_IRQ_POSITION&gpio_state)
//        {
//            //Lora_irq_callback();
//        }
//            else
//            {
//
//            }
            if(BT_IRQ_POSITION&gpio_state)
            {
@@ -652,11 +643,13 @@
            }
           if(WK_UP_POSITION&gpio_state)
            {
             //移动
         move_handler();
            }
        //uart_change_check(gpio_state);
}
//static void pca_input_detect_irq_handler(enum IO_PIN_T pin)
@@ -667,12 +660,11 @@
void pca_input_detection_init(GPIO_IRQ_HANDLER_T irq_handler)
{
{
        gpio_pin_set_dir(PCA_INPUT_DETECT , GPIO_DIR_IN, 0);
        io_pull_set(PCA_INPUT_DETECT, IO_PULL_UP, IO_PULL_UP_LEVEL2);
        gpio_enable_irq(PCA_INPUT_DETECT, GPIO_IRQ_TYPE_FALLING_EDGE, irq_handler);
        power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
//        power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)PCA_INPUT_DETECT, POWER_WAKEUP_LEVEL_LOW);
}