#ifndef __TOUCH_H__ #define __TOUCH_H__ #include "gd32f4xx.h" #include "systick.h" #define SCL_RCU RCU_GPIOB #define SCL_PORT GPIOB #define SCL_PIN GPIO_PIN_6 #define SCL_ON gpio_bit_set(SCL_PORT,SCL_PIN) #define SCL_OFF gpio_bit_reset(SCL_PORT,SCL_PIN) #define SCL_TOGGLE gpio_bit_toggle(SCL_PORT,SCL_PIN) #define SDA_RCU RCU_GPIOB #define SDA_PORT GPIOB #define SDA_PIN GPIO_PIN_7 #define SDA_ON gpio_bit_set(SDA_PORT,SDA_PIN) #define SDA_OFF gpio_bit_reset(SDA_PORT,SDA_PIN) #define SDA_TOGGLE gpio_bit_toggle(SDA_PORT,SDA_PIN) //IO方向设置 #define CT_SDA_IN() gpio_mode_set(SDA_PORT, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, SDA_PIN) #define CT_SDA_OUT() gpio_mode_set(SDA_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, SDA_PIN) //IO操作函数 #define CT_IIC_SCL //PBout(0) //SCL #define CT_IIC_SDA(val) ((val)==1?SDA_ON:SDA_OFF)//PFout(11) //SDA #define CT_READ_SDA gpio_input_bit_get(SDA_PORT,SDA_PIN) //PFin(11) //输入SDA #define RST_RCU RCU_GPIOD #define RST_PORT GPIOD #define RST_PIN GPIO_PIN_12 #define RST_ON gpio_bit_set(RST_PORT,RST_PIN) #define RST_OFF gpio_bit_reset(RST_PORT,RST_PIN) #define RST_TOGGLE gpio_bit_toggle(RST_PORT,RST_PIN) #define INT_RCU RCU_GPIOD #define INT_PORT GPIOD #define INT_PIN GPIO_PIN_11 #define INT_ON gpio_bit_set(INT_PORT,INT_PIN) #define INT_OFF gpio_bit_reset(INT_PORT,INT_PIN) #define INT_TOGGLE gpio_bit_toggle(INT_PORT,INT_PIN) // EXTI 中断配置 #define TOUCH_EXTI_LINE EXTI_11 #define TOUCH_EXTI_IRQn EXTI10_15_IRQn extern volatile uint8_t g_touch_irq_flag; //I2C读写命令 #define GT_CMD_WR 0X28 //写命令 #define GT_CMD_RD 0X29 //读命令 //GT1151 部分寄存器定义 #define GT_CTRL_REG 0X8040 //GT1151控制寄存器 #define GT_CFGS_REG 0X8050 //GT1151地址寄存器 #define GT_CHECK_REG 0X813C //GT1151验和寄存器 #define GT_PID_REG 0X8140 //GT1151产品ID寄存器 #define GT_GSTID_REG 0X814E //GT1151前检测到的触摸情况 #define GT_TP1_REG 0X8150 //第一个触摸点数据地址 #define GT_TP2_REG 0X8158 //第二个触摸点数据地址 #define GT_TP3_REG 0X8160 //第三个触摸点数据地址 #define GT_TP4_REG 0X8168 //第四个触摸点数据地址 #define GT_TP5_REG 0X8170 //第五个触摸点数据地址 #define TP_PRES_DOWN 0x80 //触屏被按下 #define TP_CATH_PRES 0x40 //有按键按下了 #define CT_MAX_TOUCH 5 //电容屏支持的点数,固定为5点 //触摸屏控制器 typedef struct { // uint8_t (*init)(void); //初始化触摸屏控制器 // uint8_t (*scan)(uint8_t); //扫描触摸屏.0,屏幕扫描;1,物理坐标; // void (*adjust)(void); //触摸屏校准 uint16_t x[CT_MAX_TOUCH]; //当前坐标 uint16_t y[CT_MAX_TOUCH]; //电容屏有最多5组坐标,电阻屏则用x[0],y[0]代表:此次扫描时,触屏的坐标,用 uint8_t sta; //笔的状态 float xfac; float yfac; short xoff; short yoff; uint8_t touchtype; }_m_tp_dev; extern _m_tp_dev tp_dev; //触屏控制器在touch.c里面定义 uint8_t GT1151_Send_Cfg(uint8_t mode); uint8_t GT1151_WR_Reg(uint16_t reg,uint8_t *buf,uint8_t len); void GT1151_RD_Reg(uint16_t reg,uint8_t *buf,uint8_t len); uint8_t GT1151_Init(void); uint8_t GT1151_Scan(uint8_t mode); #endif