解决STM32 I2C接口死锁在BUSY状态的另一种原因和方法
图片1:STM32CubeMX生成的HAL库IIC具体出错代码【1】
参考了【1】中和其他博主的方法,在初始化IIC之前提前拉高引脚/提前Enable时钟都不能解决我的问题,【1】中博主提到了要在报错的代码段【图片1】中执行DeInit,也只是让函数返回在0(Ready)和2(Busy)中切换,甚至HAL_I2C_Master_Receive_IT中断和HAL_I2C_MasterRxCpltCallback中断都进不去,最后请教了大佬,发现是由于循环执行太快,数据堵塞导致的问题,在函数下加一个对应ROTS的Delay(1)即可,我用的是RTX CMSIS-RTOS2,所以是osDelay(1),FreeRTOS时vsTaskDelay(1),完美解决问题。
【1】 解决STM32 I2C接口死锁在BUSY状态的方法讨论
https://blog.csdn.net/dldw8816/article/details/51579781?depth_1-utm_source=distr