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通用推挽输出

验证:

经实际验证,准确无误!

posted @ 2019-10-25 09:56  钓梦叟  阅读(896)  评论(0编辑  收藏  举报