在oled_driver.c修改I2C_WriteByte函数
/**
[url=home.php?mod=space&uid=247401]@brief[/url] I2C_WriteByte,向OLED寄存器地址写一个byte的数据
@param addr:寄存器地址
data:要写入的数据
@retval 无
*/
void I2C_WriteByte(uint8_t addr, uint8_t data)
{
// while (I2C_GetFlagStatus(I2CX, I2C_FLAG_BUSY));
// I2C_GenerateSTART(I2CX, ENABLE);//开启I2C1
// while (!I2C_CheckEvent(I2CX, I2C_EVENT_MASTER_MODE_SELECT)); /*EV5,主模式*/
// I2C_Send7bitAddress(I2CX, OLED_ADDRESS, I2C_Direction_Transmitter);//器件地址 -- 默认0x78
// while (!I2C_CheckEvent(I2CX, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
// I2C_SendData(I2CX, addr);//寄存器地址
// while (!I2C_CheckEvent(I2CX, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
// I2C_SendData(I2CX, data);//发送数据
// while (!I2C_CheckEvent(I2CX, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
// I2C_GenerateSTOP(I2CX, ENABLE);//关闭I2C1总线
extern I2C_HandleTypeDef hi2c1;
HAL_I2C_Mem_Write(&hi2c1, OLED_ADDRESS, addr, I2C_MEMADD_SIZE_8BIT, &data, 1, 10);
}
|