模擬IIC時,需要從IIC總線讀取和寫入電平,于是寫了兩個函式

已經使能時鐘,SCL配置為輸出.所以這兩個函式只負責SDA線轉變模式.
但是比較懵逼的事情發生了,讀出來是亂的或者說不符合預期.
查了一早上,后來在轉變寫函式加了重新配置SCL就好了.
嘗試修改過很多地方,唯一有用的修改就只有重新在寫模式函式配置SCL.
這理論上來說不可能發生的吧?
或者說是我有我不了解的特性?
求做過的大佬能幫忙答疑解惑.
uj5u.com熱心網友回復:
#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自己分析一下
uj5u.com熱心網友回復:
管中窺豹??轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/246677.html
標籤:單片機/工控
