主函数如下..
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); 主函数接下来怎么运行呢? |