发现使用STM32F103C8 i2c是可以工作了,要是cpu选STM32F103C6Tx发现生成代码i2c不工作,多次尝试和比较发现,STM32F103C6Tx生成的i2c的msp初始化gpio的时候少了一个速度的配置:
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
加上这行就正常工作了。汗。如下,加到 USER CODE BEGIN 和 USER CODE END中间,这样再生成代码就不怕冲走了。
void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(i2cHandle->Instance==I2C1)
{
/* USER CODE BEGIN I2C1_MspInit 0 */
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
/* USER CODE END I2C1_MspInit 0 */
__HAL_RCC_GPIOB_CLK_ENABLE();
/**I2C1 GPIO Configuration
PB6 ------> I2C1_SCL
PB7 ------> I2C1_SDA
*/
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* I2C1 clock enable */
__HAL_RCC_I2C1_CLK_ENABLE();
/* USER CODE BEGIN I2C1_MspInit 1 */
/* USER CODE END I2C1_MspInit 1 */
}
}
本文解决了一个特定型号STM32F103C6Tx在使用I2C时遇到的问题,通过增加GPIO速度配置使得I2C能够正常工作。文中详细介绍了修改的代码部分。
1523

被折叠的 条评论
为什么被折叠?



