[标准库]STM32F4模拟IIC时IO引脚的配置为什么会互相影响

Ares_Xiao_Hui 2021-01-09 10:38:29
模拟IIC时,需要从IIC总线读取和写入电平,于是写了两个函数

已经使能时钟,SCL配置为输出.所以这两个函数只负责SDA线转变模式.
但是比较懵逼的事情发生了,读出来是乱的或者说不符合预期.
查了一早上,后来在转变写函数加了重新配置SCL就好了.

尝试修改过很多地方,唯一有用的修改就只有重新在写模式函数配置SCL.
这理论上来说不可能发生的吧?
或者说是我有我不了解的特性?
求做过的大佬能帮忙答疑解惑.
...全文
674 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2021-01-09
  • 打赏
  • 举报
回复
#define SDA_OUT() \ {\ LL_GPIO_InitTypeDef GPIO_InitStruct; \ GPIO_InitStruct.Pin = I2C_SDA_Pin; \ GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; \ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_MEDIUM;\ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN;\ GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;\ LL_GPIO_Init(I2C_SDA_GPIO_Port, &GPIO_InitStruct);\ } #define SDA_IN() \ {\ LL_GPIO_InitTypeDef GPIO_InitStruct; \ GPIO_InitStruct.Pin = I2C_SDA_Pin; \ GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT; \ GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; \ LL_GPIO_Init(GPIOA, &GPIO_InitStruct);\ } 此代码一切正常,LZ自己分析一下
forget345 2021-01-09
  • 打赏
  • 举报
回复
管中窥豹??

27,431

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧