学前班
最后登录1970-1-1
在线时间 小时
注册时间2016-3-1
|
今天在移植SD卡Fatfs文件系统时发现这个编译问题:在编译时报错..\..\Libraries\FATFS\diskio.c(99): error: #167: argument of type "void *" is incompatible with parameter of type "BYTE *" res = disk_read(TA,(void *)scratch, sector++, 1);
应该是空指针的问题。
DRESULT disk_read (
BYTE pdrv, /* é豸Îïàí±àoÅ(0..) */
BYTE *buff, /* êy¾Y»o′æÇø */
DWORD sector, /* éèÇøê×μØÖ· */
UINT count /* éèÇø¸öêy(1..128) */
)
{
DRESULT status = RES_PARERR;
SD_Error SD_state = SD_OK;
switch (pdrv) {
case ATA: /* SD CARD */
if((DWORD)buff&3)
{
DRESULT res = RES_OK;
DWORD scratch[SD_BLOCKSIZE / 4];
while (count--)
{
res = disk_read(ATA,(void *)scratch, sector++, 1); //问题出在递归函数这里
if (res != RES_OK)
{
break;
}
memcpy(buff, scratch, SD_BLOCKSIZE);
buff += SD_BLOCKSIZE;
}
return res;
}
SD_state=SD_ReadMultiBlocks(buff,sector*SD_BLOCKSIZE,SD_BLOCKSIZE,count);
if(SD_state==SD_OK)
{
/* Check if the Transfer is finished */
SD_state=SD_WaitReadOperation();
while(SD_GetStatus() != SD_TRANSFER_OK);
}
if(SD_state!=SD_OK)
status = RES_PARERR;
else
status = RES_OK;
break;
case SPI_FLASH:
break;
default:
status = RES_PARERR;
}
return status;
}
采用的是--c99 --cpp 进行编译。下面贴上编译设置图以及编译结果图,如果将(void*)改为(BYTE*)编译通过但是无法正常读取SD卡。写函数同样问题。
|
-
编译设置
-
编译结果
|