关于STM32 ADC \ I2C 库函数编程的问题
我在用库函数编程的时候发现以下问题,高手可以帮我解答:
ADC 校准的时候如下配置
ADC_ResetCalibration(ADC1); //校验配置
while (ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while (ADC_GetCalibrationStatus(ADC1));
以上程序可以正常运行,但是写成下面就不可以运行了:
ADC_ResetCalibration(ADC1); //校验配置
while (ADC_GetResetCalibrationStatus(ADC1)==RESET);
ADC_StartCalibration(ADC1);
while (ADC_GetCalibrationStatus(ADC1)==RESET);
这是为什么呢 ??
关于IIC 的库函数配置如下:
I2C_AcknowledgeConfig(I2C2,ENABLE); //使能应答
I2C_GenerateSTART(I2C2,ENABLE); // 发送起始信号
while (!I2C_CheckEvent(I2C2,I2C_EVENT_MASTER_MODE_SELECT));//等待5
I2C_Send7bitAddress(I2C2,0XA0,I2C_Direction_Transmitter);//发送设备地址
while (!I2C_CheckEvent(I2C2,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))//等待6
{}
I2C_SendData (I2C2,address);// 发送数据地址
while (!I2C_CheckEvent(I2C2,I2C_EVENT_MASTER_BYTE_TRANSMITTED ) )// 等待8
{}
I2C_SendData (I2C2,data); // 发送数据
while (!I2C_CheckEvent(I2C2,I2C_EVENT_MASTER_BYTE_TRANSMITTED ) );// 等待8
I2C_GenerateSTOP(I2C2,ENABLE);// 发送结束信号
}
为什么上面的配置不能运行呢? 必须改为while (I2C_CheckEvent(I2C2,I2C_EVENT_MASTER_BYTE_TRANSMITTED ) );就是把”!“去掉才可以单步运行通过,否则就卡死在这一条程序。 我看书上面的配置都有”!“
请朋友帮我分析一下,谢谢啦
|