|
在网上找的例程LL_I2C_IsActiveFlag_SB总是卡死。
uint8_t I2C_Read(uint8_t addr, uint8_t reg)
{
uint8_t data;
while(LL_I2C_IsActiveFlag_BUSY(I2C1));
LL_I2C_HandleTransfer(I2C1, addr, LL_I2C_ADDRSLAVE_7BIT, 1, LL_I2C_MODE_AUTOEND, LL_I2C_GENERATE_START_WRITE);
while(!LL_I2C_IsActiveFlag_TXE(I2C1));
LL_I2C_TransmitData8(I2C1, reg);
while(!LL_I2C_IsActiveFlag_TC(I2C1));
LL_I2C_HandleTransfer(I2C1, addr, LL_I2C_ADDRSLAVE_7BIT, 1, LL_I2C_MODE_AUTOEND, LL_I2C_GENERATE_START_READ);
while(!LL_I2C_IsActiveFlag_RXNE(I2C1));
data = LL_I2C_ReceiveData8(I2C1);
while(!LL_I2C_IsActiveFlag_STOP(I2C1));
return data;
}
这个是AI的参考例程,F1的库里没有这个函数LL_I2C_HandleTransfer |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|