微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 如果STM32F1的I2C无论发送或接收都返回HAL_BUSY同时你还使用HAL1.4.0库,请进来看看

如果STM32F1的I2C无论发送或接收都返回HAL_BUSY同时你还使用HAL1.4.0库,请进来看看

时间:10-02 整理:3721RD 点击:
在这个库的HAL_I2C_MspInit函数中有点配置顺序问题,如果你使用的是I2C1请在UserCode部分加入以下两句话:
                __HAL_RCC_I2C1_CLK_ENABLE();
                __HAL_RCC_GPIOB_CLK_ENABLE();

另外还应当屏蔽这个函数后面的
__HAL_RCC_I2C1_CLK_ENABLE();

事实上这两句话并不是没有由Cube生成,也并不是没有包含在项目里,其中__HAL_RCC_GPIOB_CLK_ENABLE();在GPIO_Init函数中,然而不写在MspInit里就是不能正常通讯。
最后,cndy的ST!


如果你发现这个函数是week的,不要担心不要心急。它写在stm32f1xx_hal_msp.c里。

十分感谢啊

感谢分享 如题 添加后ok!

你是怎么发现的? 如果什么都不改,把mcu频率设置到最低,i2c是能工作的。 你的改法也是能工作的。

非常感谢!

__HAL_RCC_I2C1_FORCE_RESET();
__HAL_RCC_I2C1_RELEASE_RESET();

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top