在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);
- }
|