原子大哥,请问开发板上原来用的PC11(SCL)和PC12(SDA)脚的,现在我想改用PB6和PB7,下面这个是我的设置,你能帮我看看哪里错了?现在它check不到24c02
原来设置
void IIC_Init(void)
{
RCC->APB2ENR|=1<<4;//先使能外设IO PORTC时钟
GPIOC->CRH&=0XFFF00FFF;//PC11/12 推挽输出
GPIOC->CRH|=0X00033000;
GPIOC->ODR|=3<<11; //PC11,12 输出高
}
//IO方向设置
#define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
#define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}
//IO操作函数
#define IIC_SCL PCout(12) //SCL
#define IIC_SDA PCout(11) //SDA
#define READ_SDA PCin(11) //输入SDA
我的设置
RCC->APB2ENR|=1<<3;//先使能外设IO PORTB时钟
GPIOB->CRL&=0X00FFFFFF;//PB6/PB7 推挽输出
GPIOB->CRL|=0X33000000;
GPIOB->ODR|=1<<6; //PB6/PB7 输出高
GPIOB->ODR|=1<<7; //PB6/PB7 输出高
//IO方向设置
#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=8<<6;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=3<<6;}
//IO操作函数
#define IIC_SCL PBout(6) //SCL
#define IIC_SDA PBout(7) //SDA
#define READ_SDA PBin(7) //输入SDA
还有PB6和PB7它原来就有IIC第二功能的请问能用它来驱动现在的iic芯片吗?具体又怎么实现,谢谢! |