u8 SD_RecvData(u8*buf,u16 len)
{
if(SD_GetResponse(0xFE))return 1;//µÈ´ýSD¿¨·¢»ØÊý¾ÝÆðʼÁîÅÆ0xFE
while(len--)//¿ªÊ¼½ÓÊÕÊý¾Ý
{
*buf=SPI1_ReadWriteByte(0xFF);
buf++; //使用指针存数据,将SPI1_ReadWriteByte(0xFF);将读取的数据赋值给指针,并且使指针的地址,每次读取都加1,比使用数组存取更加的方便实用。
}
//ÏÂÃæÊÇ2¸öαCRC£¨dummy CRC£©
SD_SPI_ReadWriteByte(0xFF);
SD_SPI_ReadWriteByte(0xFF);
return 0;//¶ÁÈ¡³É¹¦
}
///////////////////////////////////////////////////////////
函数的调用
u8 *buf;
r1=SD_RecvData(buf,512);//函数定义以及使用使用指针,在函数调用的时候只需将函数的首地址,传进去即可。
////////////////////////////////////////////////////////////////////////
void SD_Read_Sectorx(u32 sec)
{
u8 *buf;
u16 i;
buf=mymalloc(512); //ÉêÇëÄÚ´æ
if(SD_ReadDisk(buf,sec,1)==0) //¶ÁÈ¡0ÉÈÇøµÄÄÚÈÝ
{
LCD_ShowString(60,190,200,16,16,"USART1 Sending Data...");
printf("SECTOR 0 DATA:rn");
for(i=0;i<512;i++)printf("%x ",buf
);//把指针中的数据按照地址一个一个的打印出来
printf("rnDATA ENDEDrn");
LCD_ShowString(60,190,200,16,16,"USART1 Send Data Over!");
}
myfree(buf);//ÊÍ·ÅÄÚ´æ
}
//完整的函数调用