Yunhorn_OLD_R1_R2_R5/Inc/i2c_user.h

33 lines
935 B
C

#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 */