IIC的SDA_IN SDA_OUT
#define SDA_IN() {GPIOB->CRL&=0XF0FFFFFF;GPIOB->CRL|=8<<24;}
#define SDA_OUT() {GPIOB->CRL&=0XF0FFFFFF;GPIOB->CRL|=3<<24;}
//IO操作函数
#define IIC_SCL PBout(7) //SCL
#define IIC_SDA PBout(6) //SDA
#define READ_SDA PBin(6) //输入SDA
GPIOB->CRL:PB端口的低位寄存器,
0XF0FFFFFF,由上图8.2.1可知对应的是CF6[1:0]和MODE6[1:0]
8<<24:0X08000000 即 0000 1000 0000 0000 0000 0000 0000 0000
10 00
在输入模式MODE[1:0]=00
10:上拉/下拉输入模式
3<<24:0X03000000 即 0000 0011 0000 0000 0000 0000 0000 0000
00 11
在输出模式MODE[1:0]>00
00:通用推挽输出
总结:SDA_IN PB6上拉/下拉输入
SDA_OUT PB6通用推挽输出
验证:
经实际验证,准确无误!