if(num==0)
return 1;
while(I2C_GetFlagStatus(I2Cx,I2C_FLAG_BUSY));
I2C_AcknowledgeConfig(I2Cx,ENABLE);
I2C_GenerateSTART(I2Cx,ENABLE);
while(!I2C_CheckEvent(I2Cx,I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2Cx,I2C_Addr,I2C_Direction_Transmitter);
while(!I2C_CheckEvent(I2Cx,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_SendData(I2Cx,addr);
while(!I2C_CheckEvent(I2Cx,I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_GenerateSTART(I2Cx,ENABLE);
while(!I2C_CheckEvent(I2Cx,I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2Cx,I2C_Addr,I2C_Direction_Receiver);
while(!I2C_CheckEvent(I2Cx,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
while(num)
{
if(num==1)
{
I2C_AcknowledgeConfig(I2Cx,DISABLE);
I2C_GenerateSTOP(I2Cx,ENABLE);
}
while(!I2C_CheckEvent(I2Cx,I2C_EVENT_MASTER_BYTE_RECEIVED));
*buf = I2C_ReceiveData(I2Cx);
buf++;
num--;
}
I2C_AcknowledgeConfig(I2Cx,ENABLE);
请问为什么总是停在第三个while循环里
I2C_Read(I2C1,0x2F,0x23,bufad,2); 这是调用程序
0x2F是AMC7812地址,0x23是ADC0通道的数据地址,通信方式选择I2C,参考电压是用外部提供的2.5V