u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN(); //SDA设置为输入
IIC_SDA=1;delay_us(1);
IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;//时钟输出0
return 0;
}
IIC_Wait_Ack()函数中为什么把sda设成输入以后还执行IIC_SDA=1,这个时候sda端口相当于一个输入口,把sda设成1没用把
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
提供一个上拉。
---------------------------------
我也有这个疑问,IIC_SDA=1等于是PAout()=1,但是这个时候寄存器被设置为输入状态,这个PAout()还起作用吗,具体是怎么个机理……
---------------------------------
学会STM32的IO先。
好好看看我们的教程,按键输入实验。就知道在输入模式下,ODR可能有什么用!
---------------------------------
看了一下stm32的中文参考手册,里面的端口位配置表里面又讲到上拉下拉输入模式中ODR寄存器为0代表下拉输入,ODR寄存器为1代表上拉输入,这里在等待ACK的时候确实需要把odr寄存器置1.这样的画如果从器件有发送ack的话mcu就会收到
一周热门 更多>