OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2600|回复: 1

关于return返回的值的问题

[复制链接]

5

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-8-16
在线时间
4 小时
发表于 2016-11-26 16:35:39 | 显示全部楼层 |阅读模式
10金钱
SD_Error CmdResp2Error(void)
{
        SD_Error errorstatus=SD_OK;
        u32 status;
        u32 timeout=SDIO_CMD0TIMEOUT;
        while(timeout--)
        {
                status=SDIO->STA;
                if(status&((1<<0)|(1<<2)|(1<<6)))break;//CRC错误/命令响应超时/已经收到响应(CRC校验成功)       
        }
          if((timeout==0)||(status&(1<<2)))        //响应超时
        {                                                                                                                                                                    
                errorstatus=SD_CMD_RSP_TIMEOUT;
                SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);                 //清除命令响应超时标志
                return errorstatus;
        }         
        if(SDIO_GetFlagStatus(SDIO_FLAG_CCRCFAIL) != RESET)                                                //CRC错误
        {                                                                  
                errorstatus=SD_CMD_CRC_FAIL;
                SDIO_ClearFlag(SDIO_FLAG_CCRCFAIL);                //清除响应标志
        }
        SDIO_ClearFlag(SDIO_STATIC_FLAGS);//清除所有标记
        return errorstatus;                                                                                     
}




这段函数里面的return errorstatus,比如
          if((timeout==0)||(status&(1<<2)))        //响应超时
        {                                                                                                                                                                    
                errorstatus=SD_CMD_RSP_TIMEOUT;
                SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);                 //清除命令响应超时标志
                return errorstatus;
        }       

响应超时了(ture),这时候return errorstatus;  是直接跳出SD_Error CmdResp2Error(void)函数了,还是继续执行          if(SDIO_GetFlagStatus(SDIO_FLAG_CCRCFAIL) != RESET)                                                //CRC错误

最佳答案

查看完整内容[请看2#楼]

跳出SD_Error CmdResp2Error(void)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2015-4-15
在线时间
73 小时
发表于 2016-11-26 16:35:40 | 显示全部楼层

跳出SD_Error CmdResp2Error(void)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 15:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表