使用LL库进行stm32中断I2C的测试中,发出信号时可以产生起始信号,但是接收信号时,卡在了下面这句话
/* 产生起始位 */
LL_I2C_GenerateStartCondition(I2C1);
while(LL_I2C_IsActiveFlag_SB(I2C1) != 1);
这个SB信号一直不置一
之后,在接收函数清pos前加了如下几行
/* 1.保证I2C外设不在使用中. */
while(LL_I2C_IsActiveFlag_BUSY(I2C1));
/* Check if the I2C is already enabled */
if ((I2C1->CR1 & I2C_CR1_PE) != I2C_CR1_PE)
{
/* Enable I2C peripheral */
LL_I2C_Enable(I2C1);
}
成功的产生起始信号