[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口并无影响。但是为什么我像下面这样写就不行呢? 照理说和上面写是一样的效果啊,求大神指教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原子哥你好,协议我都懂。可是这两种写法本质上是没有区别才对啊。以前用51写的IIC通信过的。STM32就搞不懂了。明明CT_SDA_OUT只是设定一下IO方向而已又没有操作IO口但是把
CT_IIC_SCL=0写在它的下面却不行。这个不科学啊!
首先并非乱猜,可能我有点乱。你没明白我在说什么!
这么解释吧。
PBout(0)=0;
CT_SDA_OUT; //把PF13配置为输出
……
和
先配置输出CT_SDA_OUT;
PBout(0)=0;
这两者反应在硬件上有没有区别。是这个意思。 硬件和IIC协议我都明白。但是这两种写法效果却不一样那一定是原因的。
一周热门 更多>