From e328ebef585cea2351b37117b2d5ac4978ecd3c0 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期二, 11 二月 2025 14:57:23 +0800 Subject: [PATCH] 1111111 --- keil/include/drivers/PCA9555.h | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 102 insertions(+), 5 deletions(-) diff --git a/keil/include/drivers/PCA9555.h b/keil/include/drivers/PCA9555.h index 2205304..c15224a 100644 --- a/keil/include/drivers/PCA9555.h +++ b/keil/include/drivers/PCA9555.h @@ -13,9 +13,100 @@ #define PCA9555_REG_CFG0 0x06 // 定义方向配置寄存器0地址 #define PCA9555_REG_CFG1 0x07 // 定义方向配置寄存器1地址 #define PCA9555_DEVICE_ADDR 0x40 // 定义PCA9555地址 -#define SDA_0 gpio_pin_clr(SDA_PIN) -#define SCL_0 gpio_pin_clr(SCL_PIN) -void IIC_gpio_pca_init(void); +#define PCA_OUTPUT_CONFIG_MASK 0x00 +#define PCA_INPUT_CONFIG_MASK 0xff +#define SDA_0 gpio_pin_clr(SDA_PIN) +#define SCL_0 gpio_pin_clr(SCL_PIN) +#define PCA_INPUT_DETECT IO_PIN_17 + +//输出和配置 +#define MAX_GPIO_NUM 16 + +////0组 +//#define MCU_A 0x01 +//#define CHG_G 0x02 +//#define LORA_IRQ 0x03 +//#define LORA_NRST 0x04 +//#define ADC_MINIUS 0x05 +//#define INPUT_5V 0x06 +//#define PWR_ON 0x07 +//#define PWR_ENABLE 0x08 +////1组 +//#define GPS_LED 0x09 +//#define TTS_ENABLE 0x0A +//#define WAKE_UP 0x0B +//#define AIR780E_ENBALE 0x0C +//#define SOS_ENBALE 0x0D +//#define GPS_BACKUP 0x0E +//#define GPS_POWER 0x0F +//#define MAIN_RI 0x10 + +//重新定义宏 +//0组 +#define PWR_GND 0x01 +#define IN_5V 0x02 +#define CHGN 0x03 +#define MOTO 0x04 +#define BT_IRQ 0x05 +#define RED_LED 0x06 +#define GREEN_LED 0x07 +#define BT_LED 0x08 +//1组 +#define LORA_LED 0x09 +#define UWB_LED 0x0A +#define IO_KONG 0x0B +#define LORA_IRQ 0x0C +#define LORA_NRST 0x0D +#define SOS_ENBALE 0x0E +#define WK_UP 0x0F +#define BT_EN 0x10 + + + + +//输入寄存器INT判断数组对应位置 +//input 0组 +#define PWR_GND_POSITION (1<<(MAX_GPIO_NUM-PWR_GND)) +#define IN_5V_POSITION (1<<(MAX_GPIO_NUM-IN_5V)) +#define CHGN_POSITION (1<<(MAX_GPIO_NUM-CHGN)) +#define MOTO_POSITION (1<<(MAX_GPIO_NUM-MOTO)) +#define BT_IRQ_POSITION (1<<(MAX_GPIO_NUM-BT_IRQ)) +#define RED_LED_POSITION (1<<(MAX_GPIO_NUM-RED_LED)) +#define GREEN_LED_POSITION (1<<(MAX_GPIO_NUM-GREEN_LED)) +#define BT_LED_POSITION (1<<(MAX_GPIO_NUM-BT_LED)) +//input 1组 +#define LORA_LED_POSITION (1<<(MAX_GPIO_NUM-LORA_LED)) +#define UWB_LED_POSITION (1<<(MAX_GPIO_NUM-UWB_LED)) +#define IO_KONG_POSITION (1<<(MAX_GPIO_NUM-IO_KONG)) +#define LORA_IRQ_POSITION (1<<(MAX_GPIO_NUM-LORA_IRQ)) +#define LORA_NRST_POSITION (1<<(MAX_GPIO_NUM-LORA_NRST)) +#define SOS_ENBALE_POSITION (1<<(MAX_GPIO_NUM-SOS_ENBALE)) +#define WK_UP_POSITION (1<<(MAX_GPIO_NUM-WK_UP)) +#define BT_EN_POSITION (1<<(MAX_GPIO_NUM-BT_EN)) + +#define LORA_LED_ON PCA9555_Set_One_Value_Output(LORA_LED,1) +#define LORA_LED_OFF PCA9555_Set_One_Value_Output(LORA_LED,0) + +#define UWB_LED_ON PCA9555_Set_One_Value_Output(UWB_LED,1) +#define UWB_LED_OFF PCA9555_Set_One_Value_Output(UWB_LED,0) + +#define RED_LED_ON PCA9555_Set_One_Value_Output(RED_LED,1) +#define RED_LED_OFF PCA9555_Set_One_Value_Output(RED_LED,0) + +#define GREEN_LED_ON PCA9555_Set_One_Value_Output(GREEN_LED,1) +#define GREEN_LED_OFF PCA9555_Set_One_Value_Output(GREEN_LED,0) + +#define BT_LED_ON PCA9555_Set_One_Value_Output(BT_LED,1) +#define BT_LED_OFF PCA9555_Set_One_Value_Output(BT_LED,0) + +#define MOTO_ON PCA9555_Set_One_Value_Output(MOTO,1) +#define MOTO_OFF PCA9555_Set_One_Value_Output(MOTO,0) + +#define LORA_NRST_UP PCA9555_Set_One_Value_Output(LORA_NRST,1) +#define LORA_NRST_DOWN PCA9555_Set_One_Value_Output(LORA_NRST,0) +//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 +//void IIC_gpio_pca_init(void); void IIC2_pca_Start(void); void IIC_pca_Ready(void); void IIC2_pca_Stop(void); @@ -31,5 +122,11 @@ void PCA9555_readdata(unsigned char addr,unsigned char* pBuffer); void PCA9555_Set_All_Output(unsigned char value); void PCA9555_Set_One_Value_Output(unsigned char num,unsigned char value); -void PCA9555_Set_One_Value_Config(unsigned char num,unsigned char value) ; -void PCA9555_init(); \ No newline at end of file +void PCA9555_Set_One_Value_Config(unsigned char num,unsigned char value); +void PCA9555_Set_One_Value_Polarity_input(unsigned char num,unsigned char value); +void PCA9555_init(); +//拓展函数 +int read_userkey_input_pca_lora(); +static void pca_input_detect_irq_handler(enum IO_PIN_T pin); +static void pca_handler(enum IO_PIN_T pin); +void pca_input_detection_init(GPIO_IRQ_HANDLER_T irq_handler); \ No newline at end of file -- Gitblit v1.9.3