初级会员

- 积分
- 60
- 金钱
- 60
- 注册时间
- 2019-9-4
- 在线时间
- 21 小时
|
#define GPIO_PORT_I2C GPIOA // GPIO端口A
#define I2C_SCL_PIN GPIO_PIN_0 // 连接到SCL时钟线的GPIO 0
#define I2C_SDA_PIN GPIO_PIN_1 // 连接到SDA数据线的GPIO 1
/*
* debug yhn: 软件模拟iic GPIO口配置为开漏输出OUT_OD,否则会出现 无法读取的情况 原因可能是 GPIO_PORT_I2C->IDR & I2C_SCL_PIN 读端口位
*/
/* 定义读写SCL和SDA的宏 */
#define I2C_SCL_1() HAL_GPIO_WritePin(GPIO_PORT_I2C,I2C_SCL_PIN,GPIO_PIN_SET) // SCL = 1
#define I2C_SCL_0() HAL_GPIO_WritePin(GPIO_PORT_I2C,I2C_SCL_PIN,GPIO_PIN_RESET) // SCL = 0
#define I2C_SDA_1() HAL_GPIO_WritePin(GPIO_PORT_I2C,I2C_SDA_PIN,GPIO_PIN_SET) // SDA = 1
#define I2C_SDA_0() HAL_GPIO_WritePin(GPIO_PORT_I2C,I2C_SDA_PIN,GPIO_PIN_RESET) // SDA = 0
#define I2C_SDA_READ() (GPIO_PORT_I2C->IDR & I2C_SDA_PIN) // 读SDA口线状态
#define I2C_SCL_READ() (GPIO_PORT_I2C->IDR & I2C_SCL_PIN) // 读SCL口线状态
/*Configure GPIO pins : PA0 PA1 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|