2019-07-21 03:05发布
肖涛xiao 发表于 2019-4-11 10:47 是不是stop要写在最后一个接收的字节之前,ACK/NOACK要写在每一个接受的字节之前?像我这样写对吗? I ...
最多设置5个标签!
I2C1->DR = Address;
while ((I2C1->SR1&0x0002) != 0x0002); // 等待ADDR
__disable_irq();
temp = I2C1->SR2; // Clr ADDR Flag
I2C1->CR1 &= CR1_ACK_Reset; // 清ACK
__enable_irq();
while ((I2Cx->SR1 & 0x00004) != 0x000004); // 等待BTF
__disable_irq();
I2C_GenerateSTOP(I2C1, ENABLE); // Stop
temp[0] = I2C1->DR; // 读
__enable_irq();
temp[1] = I2C1->DR; // 读
while ((I2Cx->CR1&0x200) == 0x200); // STOPF
I2C1->CR1 |= CR1_ACK_Set;
I2C1->CR1 &= CR1_POS_Reset;
一周热门 更多>