请教各位大神,我刚刚开始学习STM32,使用的是STM32G474RE的测试板环境,I2C初始化还搞不太清楚。我使用LL的测试例子I2C_OneBoard_Communication_IT,I2C3初始化后可以正常使用。我把代码改成I2C4之后发现对应的PC6和PC7脚好像都没有初始化成功,现象是初始化后,PC6和PC7都一直是低(我已经配置了内部上拉),而同样的配置用在I2C3上,对应的PC8和PC9是能拉高的。请帮忙看看我是不是哪个地方的初始化不对? /* (1) Enables GPIO clock and configures the I2C4 pins **********************/ /* (SCL on PC.6, SDA on PC.7) **********************/ /* Enable the peripheral clock of GPIOC */ LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOC); /* Configure SCL Pin as : Alternate function, High Speed, Open drain, Pull up */ LL_GPIO_SetPinMode(GPIOC, LL_GPIO_PIN_6, LL_GPIO_MODE_ALTERNATE); LL_GPIO_SetAFPin_8_15(GPIOC, LL_GPIO_PIN_6, LL_GPIO_AF_8); LL_GPIO_SetPinSpeed(GPIOC, LL_GPIO_PIN_6, LL_GPIO_SPEED_FREQ_HIGH); LL_GPIO_SetPinOutputType(GPIOC, LL_GPIO_PIN_6, LL_GPIO_OUTPUT_OPENDRAIN); #if (EXTERNAL_PULL_UP_AVAILABLE == 0) LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_6, LL_GPIO_PULL_UP); #else LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_6, LL_GPIO_PULL_NO); #endif /* Configure SDA Pin as : Alternate function, High Speed, Open drain, Pull up */ LL_GPIO_SetPinMode(GPIOC, LL_GPIO_PIN_7, LL_GPIO_MODE_ALTERNATE); LL_GPIO_SetAFPin_8_15(GPIOC, LL_GPIO_PIN_7, LL_GPIO_AF_8); LL_GPIO_SetPinSpeed(GPIOC, LL_GPIO_PIN_7, LL_GPIO_SPEED_FREQ_HIGH); LL_GPIO_SetPinOutputType(GPIOC, LL_GPIO_PIN_7, LL_GPIO_OUTPUT_OPENDRAIN); #if (EXTERNAL_PULL_UP_AVAILABLE == 0) LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_7, LL_GPIO_PULL_UP); #else LL_GPIO_SetPinPull(GPIOC, LL_GPIO_PIN_7, LL_GPIO_PULL_NO); #endif /* (2) Enable the I2C4 peripheral clock *************************************/ /* Enable the peripheral clock for I2C4 */ LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_I2C4); /* Set I2C4 clock source as SYSCLK */ LL_RCC_SetI2CClockSource(LL_RCC_I2C4_CLKSOURCE_SYSCLK); /* (3) Configure NVIC for I2C4 **********************************************/ 。。。 |
多谢!这个地方没注意到