STM32
直播中

廖靖华

7年用户 161经验值
私信 关注
[问答]

为什么我的ii2实验myiic头文件定义SDA I/O方向设置有误?

原为
       #define SDA_IN() {GPIOC->CRH&=0xFFFF0FFF; GPIOC->CRH|=8<<12;}
       #define SDA_OUT() {GPIOC->CRH&=0xFFFF0FFF; GPIOC->CRH|=3<<12;}
应该为
       #define SDA_IN()  {GPIOC->CRH&=0xFFFF0FFF; GPIOC->CRH|=8<<11;}
       #define SDA_OUT() {GPIOC->CRH&=0xFFFF0FFF; GPIOC->CRH|=3<<11;}
明明设置错误了 不过不改 也能正常运行 不知道为什么???

回帖(4)

汤赫禧

2019-7-23 08:24:44
说明原来没错!
举报

李诗晴

2019-7-23 08:30:03
可是改了也能正常运行啊 这是怎么回事呢?
举报

张艳

2019-7-23 08:41:52
钻了设置的空子.
8<<11位,你会把SDAIN设置为0X4,也就是浮空输入模式.
3<<11为,你回吧SDAOUT设置为0X1,也就是10M的推挽输出.
刚好我的24C02外部有上拉电阻,所以你的浮空输入模式也是正确的.这样,看起来好像能用.
但是你其实还把另外两个邻近的IO口配置给改动了!!!
如果PC10做了其他用,可能就被你修改了.
举报

洪禹

2019-7-23 08:59:56
是我位运算弄错了  刚刚又看了下 i/o口位配置表 如您所说 明白了 谢谢 
举报

更多回帖

发帖
×
20
完善资料,
赚取积分