stm32 iic读取一个字节,为什么左移,还有最后为什么要应答,不要应该没问题吧,高手解释一下

2019-07-14 20:47发布

//I2C读取一个字节

u8 I2C_Read_Byte(u8 ack)
{
   u8 i=0,receive=0;

   I2C_SDA_IN();
   for(i=0;i<8;i++)
   {
                   I2C_SCL_L;
                delay_us(2);
                I2C_SCL_H;
                receive<<=1;
                if(GPIO_ReadInputDataBit(GPIO_I2C,I2C_SDA))
                   receive++;
                delay_us(1);       
   }

           if(ack==0)
                   I2C_NAck();
        else
                I2C_Ack();

        return receive;
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。