我也碰到了这个BUG,经过网上一个大神的提示,这样修改初始化后修复了...
/* USER CODE BEGIN I2C1_MspInit 0 */
//For STM32 IIC BUG
// __HAL_AFIO_REMAP_I2C1_ENABLE();
__HAL_RCC_I2C1_CLK_ENABLE();
GPIO_InitStruct.Pin = SCL_Pin|SDA_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_WritePin( GPIOB, SCL_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin( GPIOB, SDA_Pin, GPIO_PIN_SET);
hi2c->Instance->CR1 = I2C_CR1_SWRST_Msk;
hi2c->Instance->CR1 = 0;
/* USER CODE END I2C1_MspInit 0 */
/**I2C1 GPIO Configuration
PB8 ------> I2C1_SCL
PB9 ------> I2C1_SDA
*/
GPIO_InitStruct.Pin = SCL_Pin|SDA_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
__HAL_AFIO_REMAP_I2C1_ENABLE();
/* Peripheral clock enable */
__HAL_RCC_I2C1_CLK_ENABLE(); |