c
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
if(wcl_ic_download_fw) { //是否开启wcl烧录
return;
}
你在 HAL_I2C_Mem_Read 里直接 return;,这等价于 return 0;,即返回值为 0。
但该函数声明返回类型为 HAL_StatusTypeDef,其常用取值如下:
- HAL_OK(0)
- HAL_ERROR(1)
- HAL_BUSY(2)
- HAL_TIMEOUT(3)
所以你直接 return;,实际返回 HAL_OK(即 0),但没有真正执行任何 I2C 读操作。
建议:如果你想让外部判断"未执行",应返回 HAL_ERROR 或自定义错误码,而不是 return;。
例如:
c
if(wcl_ic_download_fw) {
return HAL_ERROR;
}
这样调用者能正确判断操作未完成。