有没有人用过拿51编写的I2C程序翻译成STMF4的代码

2019-07-20 17:24发布

就用STMF4的库函数实现的,我看过探索者给的I2C源程序,用来和什么通信的我不认识,但是好像时序和我那个对不上,我就自己把以前51的程序重新翻译了份,挪用了源程序的
#define SDA_IN()  {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;} //PB9输入模式
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;} //PB9输出模式
我的SDA是PA2。。不知道怎么改,主要切换输入输出模式嘛。。现在还没做出来忙了一天。。有谁做过这东西的告诉我怎么改,要注意点什么。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
lvehe
2019-07-22 00:45
我要学习嵌入式 发表于 2017-1-11 12:47
大神 再问个问题 再接受SLAVE的数据时 为什么函数里开始要拉高SDA。是跟上拉输入有关吗?我记得前几天有 ...

如果你理解了开漏模式就知道为什么要拉高了,实际上,这里的拉高有的时候用更容易理解的“释放”来表示,也就是主机释放对SDA的控制权。释放之后,因为上拉电阻的缘故,所以就表现为高电平。因为此时要读取从机的数据,所以SDA由从机来拉高或拉低,主机就读取SDA的电平。用开漏模式就可以使SCL和SDA表现为双向口。而不必像原子做的那样,一会儿设置为输出,一会儿设置为输入,太麻烦了。

一周热门 更多>