打印

问一个子函数return问题...

[复制链接]
2953|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mimi2011|  楼主 | 2011-3-21 12:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主函数如下..
void main()
{

SD_Reset(); //复位SD卡
UART_Send_Str("SD卡复位完毕\r\n");
}


子函数如下:
unsigned char SD_Reset()//SD卡复位,进入SPI模式,使用CMD0(命令0)
{
unsigned char time,temp,i;
unsigned char pcmd[] = {0x40,0x00,0x00,0x00,0x00,0x95}; //命令0的字节序列
is_init=1; //将is_init置为1
SD_CS=1;  //关闭片选
for(i=0;i<0x0f;i++) //复位时,首先要发送最少74个时钟信号,这是必须的!!!
{
  SD_spi_write(0xff); //120个时钟
}
SD_CS=0; //打开片选
time=0;
do
{
  temp=SD_Write_Cmd(pcmd);//写入CMD0
  time++;
  if(time==TRY_TIME)
  {
   SD_CS=1; //关闭片选
   return(INIT_CMD0_ERROR);//CMD0写入失败
  }
}while(temp!=0x01);
SD_CS=1; //关闭片选
SD_spi_write(0xff); //按照SD卡的操作时序在这里补8个时钟
return 0;//返回0,说明复位操作成功
}


the  question:

子函数如果返回的是return 0;那在主函数中运行的就是接下来的 UART_Send_Str("SD卡复位完毕\r\n");

那如果子函数返回的是return(INIT_CMD0_ERROR); 主函数接下来怎么运行呢?

相关帖子

沙发
ayb_ice| | 2011-3-21 14:02 | 只看该作者
你都不判断返回值,那还有什么意义

使用特权

评论回复
板凳
liang7143| | 2011-3-21 15:02 | 只看该作者
返回值没有引用,没有什么意义

不管返回的是什么~~ 他都会去执行UART_Send_Str("SD卡复位完毕\r\n");

使用特权

评论回复
地板
Push_Pull| | 2011-3-21 15:06 | 只看该作者
LZ  Cyuyan muyou xuehao

使用特权

评论回复
5
bingye1086| | 2011-3-21 15:35 | 只看该作者
int i = SD_Reset();
if(i == 0)
{UART_Send_Str("SD卡复位完毕\r\n");}
else if(i == INIT_CMD0_ERROR)
{}//想干啥就干啥

使用特权

评论回复
6
mimi2011|  楼主 | 2011-3-21 15:37 | 只看该作者
3# liang7143

是不是要在main函数中 还要判断if(SD_Reset());

使用特权

评论回复
7
mimi2011|  楼主 | 2011-3-21 15:38 | 只看该作者
4# Push_Pull

学过,只是忘了,还模糊记得,不确定,进来问问

使用特权

评论回复
8
SHUJIEWS| | 2011-3-21 16:47 | 只看该作者
http://blog.sina.com.cn/521lah
欢迎单片机初学者上我的博客

使用特权

评论回复
9
dosculler| | 2011-3-21 19:47 | 只看该作者
既然要返回,那就肯定有用到返回值,
不过在你程序里都没有处理返回值,那不如定义个void函数,不要返回,省得浪费资源

使用特权

评论回复
10
ycz9999| | 2011-3-21 23:57 | 只看该作者
最后作个判断     如果初始化不成功     则来个跳转   不知道这样可以否?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

49

帖子

1

粉丝