关于 u8 *buff 和 u8 buff 问题

2019-10-16 07:14发布

//读扇区
//pdrv:磁盘编号0~9
//*buff:数据接收缓冲首地址
//sector:扇区地址
//count:需要读取的扇区数
DRESULT disk_read (
        BYTE pdrv,                /* Physical drive nmuber to identify the drive */
        BYTE *buff,                /* Data buffer to store read data */
        DWORD sector,        /* Sector address in LBA */
        UINT count                /* Number of sectors to read */
)
{
        u8 res=0;
    if (!count)return RES_PARERR;//count不能等于0,否则返回参数错误                          
        switch(pdrv)
        {
                case SD_CARD://SD卡
                        res=SD_ReadDisk(buff,sector,count);         
                        while(res)//读出错
                        {
                                SD_Init();        //重新初始化SD卡
                                res=SD_ReadDisk(buff,sector,count);       
                                //printf("sd rd error:%d ",res);
                        }
                        break;
                case EX_FLASH://外部flash
                        for(;count>0;count--)
                        {
                                W25QXX_Read(buff,sector*FLASH_SECTOR_SIZE,FLASH_SECTOR_SIZE);
                                sector++;
                                buff+=FLASH_SECTOR_SIZE;
                        }
                        res=0;
                        break;
                default:
                        res=1;
        }
   //处理返回值,将SPI_SD_driver.c的返回值转成ff.c的返回值
    if(res==0x00)return RES_OK;         
    else return RES_ERROR;          
}
//写扇区
//pdrv:磁盘编号0~9
//*buff:发送数据首地址
//sector:扇区地址
//count:需要写入的扇区数
#if _USE_WRITE
DRESULT disk_write (
        BYTE pdrv,                        /* Physical drive nmuber to identify the drive */
        const BYTE *buff,        /* Data to be written */
        DWORD sector,                /* Sector address in LBA */
        UINT count                        /* Number of sectors to write */
)
{
        u8 res=0;  
    if (!count)return RES_PARERR;//count不能等于0,否则返回参数错误                          
        switch(pdrv)
        {
                case SD_CARD://SD卡
                        res=SD_WriteDisk((u8*)buff,sector,count);
                        while(res)//写出错
                        {
                                SD_Init();        //重新初始化SD卡
                                res=SD_WriteDisk((u8*)buff,sector,count);       
                                //printf("sd wr error:%d ",res);
                        }
                        break;
                case EX_FLASH://外部flash
                        for(;count>0;count--)
                        {                                                                                    
                                W25QXX_Write((u8*)buff,sector*FLASH_SECTOR_SIZE,FLASH_SECTOR_SIZE);
                                sector++;
                                buff+=FLASH_SECTOR_SIZE;
                        }
                        res=0;
                        break;
                default:
                        res=1;
        }
    //处理返回值,将SPI_SD_driver.c的返回值转成ff.c的返回值
    if(res == 0x00)return RES_OK;         
    else return RES_ERROR;       
}
#endif


//读SD卡
//buf:读数据缓存区
//sector:扇区地址
//cnt:扇区个数       
//返回值:错误状态;0,正常;其他,错误代码;                                                                   
u8 SD_ReadDisk(u8*buf,u32 sector,u8 cnt)
{
        u8 sta=SD_OK;
        long long lsector=sector;
        u8 n;
        lsector<<=9;
        if((u32)buf%4!=0)
        {
                 for(n=0;n<cnt;n++)




//写SD卡
//buf:写数据缓存区
//sector:扇区地址
//cnt:扇区个数       
//返回值:错误状态;0,正常;其他,错误代码;       
u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt)
{
        u8 sta=SD_OK;
        u8 n;
        long long lsector=sector;
        lsector<<=9;
        if((u32)buf%4!=0)







问一下为什么 读的时候 是 u8 buff  写的时候是 u8*buff,这两个有什么区别么,而且被调用的写和读 里面都是 *buff 这个地址指针,有没有大神说下具体的区别在哪

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。