STM32读IO口状态会影响硬件IIC?
时间:10-02
整理:3721RD
点击:
请教各位大侠,我直接调用STM32的库来写的程序,
在定时中断里读MPU6050,来做速度积分的,用硬件IIC操作(PB6,PB7),
读操作里有下面这些函数,只是截了一段,其他都差不多的。
意思是IIC读写操作,长时间没正常返回则把Error_IIC=1;
//-------------------------------------------------------------------------------------
/* 发送器件地址(写)*/
I2C_Send7bitAddress(I2C1, SlaveAddress, I2C_Direction_Transmitter);
error_count = 0;
while((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))&&(Error_IIC == 0))
{
error_count++;
if(error_count>TIME_IIC_ERR)
{
Error_IIC = 1;
}
}
//------------------------------------------------------------------------------------
单独的读写操作是正常的。直到有一次我在main()函数里想读PB5端口的状态
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)
//------------------------------------------------------------------------------------
Error_IIC 就一直被置高了,说明IIC读写出了问题。
//------------------------------------------------------------------------------------
读IO为什么会对硬件IIC有影响?
在定时中断里读MPU6050,来做速度积分的,用硬件IIC操作(PB6,PB7),
读操作里有下面这些函数,只是截了一段,其他都差不多的。
意思是IIC读写操作,长时间没正常返回则把Error_IIC=1;
//-------------------------------------------------------------------------------------
/* 发送器件地址(写)*/
I2C_Send7bitAddress(I2C1, SlaveAddress, I2C_Direction_Transmitter);
error_count = 0;
while((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))&&(Error_IIC == 0))
{
error_count++;
if(error_count>TIME_IIC_ERR)
{
Error_IIC = 1;
}
}
//------------------------------------------------------------------------------------
单独的读写操作是正常的。直到有一次我在main()函数里想读PB5端口的状态
GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)
//------------------------------------------------------------------------------------
Error_IIC 就一直被置高了,说明IIC读写出了问题。
//------------------------------------------------------------------------------------
读IO为什么会对硬件IIC有影响?
三等奖覅偶尔我会
