现象
STM32CubeMX提供了串口的HAL库,I2C有时候会卡死
原因
固件bug,网上搜到有很多,ST官方也承认的
解决方法
发送接收设置超时,并在之前检测状态
在函数调用
1 | HAL_I2C_Mem_Write() |
时设置超时参数
并在每次执行前尝试复位
1 | if ((__HAL_I2C_GET_FLAG(&hi2c2, I2C_FLAG_BUSY) ? SET : RESET) == SET) { |
不需要其它操作了
STM32CubeMX提供了串口的HAL库,I2C有时候会卡死
固件bug,网上搜到有很多,ST官方也承认的
发送接收设置超时,并在之前检测状态
在函数调用
1 | HAL_I2C_Mem_Write() |
时设置超时参数
并在每次执行前尝试复位
1 | if ((__HAL_I2C_GET_FLAG(&hi2c2, I2C_FLAG_BUSY) ? SET : RESET) == SET) { |
不需要其它操作了
Update your browser to view this website correctly. Update my browser now