使用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);
}
成功的产生起始信号
在使用LL库进行STM32的中断I2C测试时,遇到发送起始信号后无法进入接收状态的问题。问题出在SB标志位未被置一。通过添加检查和启用I2C外设的代码,成功解决了起始信号生成的问题。
5416

被折叠的 条评论
为什么被折叠?



