#ifndef __I2C_USER_H #define __I2C_USER_H #include "main.h" #define SDA_IN() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=0<<7*2;} #define SDA_OUT() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=1<<7*2;} #define Read_I2C_SDA() ((GPIOB->IDR&I2C_SDA_Pin)!=0)?1:0 #define I2C_SDA_HIGH() LL_GPIO_SetOutputPin(I2C_SDA_GPIO_Port,I2C_SDA_Pin) #define I2C_SDA_LOW() LL_GPIO_ResetOutputPin(I2C_SDA_GPIO_Port,I2C_SDA_Pin) #define I2C_SCL_HIGH() LL_GPIO_SetOutputPin(I2C_SCL_GPIO_Port,I2C_SCL_Pin) #define I2C_SCL_LOW() LL_GPIO_ResetOutputPin(I2C_SCL_GPIO_Port,I2C_SCL_Pin) #define I2C_ACK 0 //应答 #define I2C_NOACK 1 //非应答 void uDelay(uint32_t cnt); void I2C_Start(void); void I2C_Stop(void); void I2C_PutAck(uint8_t Ack); uint8_t I2C_GetAck(void); void I2C_WriteByte(uint8_t Data); void I2C_WriteByte7(uint8_t Data); uint8_t I2C_ReadByte(uint8_t ack); #endif /* __I2C_USER_H */