RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | \
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD,\
ENABLE);
//Æô¶¯AFIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
RCC_APB2PeriphClockCmd(TP_I2C_SCL_GPIO_CLK | TP_I2C_SDA_GPIO_CLK , ENABLE);
GPIO_InitStructure.GPIO_Pin = TP_I2C_SCL_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(TP_I2C_SCL_GPIO_PORT, &GPIO_InitStructure);
/*!< Configure TP_I2C pins: SDA */
GPIO_InitStructure.GPIO_Pin = TP_I2C_SDA_PIN;
GPIO_Init(TP_I2C_SDA_GPIO_PORT, &GPIO_InitStructure);
最近调试stm32的i2c,按照演示例程设置管脚定义如上(外部已接上拉电阻)。但检测发现SCL和SDA脚一直为低电平。
将管脚输出模式改为GPIO_Mode_Out_OD(开漏输出)后输出高低电平正常。是我哪个地方忘设置了吗? |