模拟IIC通信的时候为什么先把SCL拉低再配置SDA的输出而反过来就不行

2019-07-20 22:37发布

[mw_shl_code=c,true]//产生ACK应答
void CT_IIC_Ack(void)
{
        CT_IIC_SCL=0;
        CT_SDA_OUT();
        CT_Delay();
        CT_IIC_SDA=0;
        CT_Delay();
        CT_IIC_SCL=1;
        CT_Delay();
        CT_IIC_SCL=0;
}
//不产生ACK应答                    
void CT_IIC_NAck(void)
{
        CT_IIC_SCL=0;
        CT_SDA_OUT();
        CT_Delay();
        CT_IIC_SDA=1;
        CT_Delay();
        CT_IIC_SCL=1;
        CT_Delay();
        CT_IIC_SCL=0;
}                                        [/mw_shl_code]
源于正点原子的触摸屏实验当把代码改成下面这样。
[mw_shl_code=applescript,true]
//产生ACK应答
void CT_IIC_Ack(void)
{
        //CT_IIC_SCL=0;
        CT_SDA_OUT();
        CT_IIC_SCL=0;
        CT_Delay();
        CT_IIC_SDA=0;
        CT_Delay();
        CT_IIC_SCL=1;
        CT_Delay();
        CT_IIC_SCL=0;
}[/mw_shl_code]
。照理说我这个CT_SDA_OUT只是配置GPIOF 的MODER把IO方向设置为输出,对IO口并无影响。但是为什么我像下面这样写就不行呢? 照理说和上面写是一样的效果啊,求大神指教!

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