关于stm32 hal 库 iic 一直是 busy 问题
最近在用st hal iic 發(fā)現(xiàn)?MX_I2C1_Init(); 后 iic 就處于BUSY狀態(tài)
代碼跟蹤后發(fā)現(xiàn) 具體到?HAL_I2C_MspInit 中?__HAL_RCC_I2C1_CLK_ENABLE(); 后 IIC模塊就處到busy狀態(tài)。
具體問題找到 ,修改如下,輕松解決問題!!
原來代碼:
void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{
? ? GPIO_InitTypeDef GPIO_InitStruct;
? ? if(i2cHandle->Instance == I2C1)
? ? {
? ? ? ? /* USER CODE BEGIN I2C1_MspInit 0 */
? ? ? ? /* USER CODE END I2C1_MspInit 0 */
? ? ? ? /**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.Speed = GPIO_SPEED_FREQ_HIGH;
? ? ? ? HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
?? ??? ??? ?
? ? ? ? /* Peripheral clock enable */
? ? ? ? __HAL_RCC_I2C1_CLK_ENABLE();
? ? ? ? /* USER CODE BEGIN I2C1_MspInit 1 */
? ? ? ? ? ?
? ? ? ? /* USER CODE END I2C1_MspInit 1 */
? ? }
}
修改后代碼:
void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{
? ? GPIO_InitTypeDef GPIO_InitStruct;
? ? if(i2cHandle->Instance == I2C1)
? ? {
? ? ? ? /* USER CODE BEGIN I2C1_MspInit 0 */
? ? ? ? /* USER CODE END I2C1_MspInit 0 */
? ? ? ? /**I2C1 GPIO Configuration
? ? ? ? PB6 ? ? ------> I2C1_SCL
? ? ? ? PB7 ? ? ------> I2C1_SDA
? ? ? ? */
?? ??? ??? ??? ?
? ? ? ? /* Peripheral clock enable */
? ? ? ? __HAL_RCC_I2C1_CLK_ENABLE();
? ? ? ? /* USER CODE BEGIN I2C1_MspInit 1 */
?? ??? ??? ?
?? ??? ??? ??? ?GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
? ? ? ? GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
? ? ? ? GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
? ? ? ? HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
? ? ? ? /* USER CODE END I2C1_MspInit 1 */
? ? }
}
?
總結(jié)
以上是生活随笔為你收集整理的关于stm32 hal 库 iic 一直是 busy 问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32 标准库一些比较容易犯的错误
- 下一篇: stm32f103 低功耗调试笔记 低功