【 在有返回值的函数里直接 return;到底返回值是多少?】

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;
}

这样调用者能正确判断操作未完成。

相关推荐
番茄灭世神44 分钟前
MCU开发常见软件BUG总结(持续更新)
c语言·stm32·单片机·嵌入式·gd32
Ar-Sr-Na1 小时前
STM32现代化AI开发指南-VSCode环境配置(macOS)
c语言·人工智能·vscode·stm32·嵌入式硬件·硬件工程
世微 如初3 小时前
AP5125 宽压大功率 LED 恒流驱动器:技术参数与应用设计指南
stm32·单片机·嵌入式硬件
弄曲幽篁4 小时前
stm32 USB虚拟串口
stm32·单片机·嵌入式硬件
学嵌入式的小杨同学4 小时前
STM32 进阶封神之路(四十一)FreeRTOS 中断管理、软件定时器、内存管理与低功耗模式|工业级实战完整版
vscode·stm32·单片机·嵌入式硬件·mcu·智能硬件·嵌入式实时数据库
yu85939585 小时前
基于MSP430 LaunchPad的蔬菜基地分布式无线低功耗温湿度监测系统
分布式·stm32·嵌入式硬件
学嵌入式的小杨同学5 小时前
STM32 进阶封神之路(四十)FreeRTOS 队列、信号量、互斥锁精讲|任务通信、同步、资源保护(超详细图文版)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
爱分享的阿Q1 天前
STM32现代化AI开发环境搭建:从Keil到VSCode+AI的范式转移
人工智能·vscode·stm32
bubiyoushang8881 天前
利用STM32实现Modbus通信(RTU从机方案)
stm32·单片机·嵌入式硬件
杰杰桀桀桀1 天前
4*4无时延矩阵键盘(非阻塞)--附代码链接
stm32·单片机·嵌入式硬件·矩阵·计算机外设·无时延矩阵键盘