高级会员 
  
	- 积分
 - 582
 
        - 金钱
 - 582 
 
       - 注册时间
 - 2019-8-4
 
      - 在线时间
 - 187 小时
 
 
 
 | 
 
 
发表于 2020-3-28 14:40:02
|
显示全部楼层
 
 
 
u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt) 
{ 
        u8 sta=SD_OK; 
        u8 n; 
        long long lsector=sector; 
        //扇区地址变为字节地址。<<9位,相当于*512 
        lsector<<=9; 
        //确保缓存地址字节对齐,否则走御用通道 
        if((u32)buf%4!=0) 
        { 
                 for(n=0;n<cnt;n++) 
                { 
                        memcpy(SDIO_DATA_BUFFER,buf,512); 
                         sta=SD_WriteBlock(SDIO_DATA_BUFFER,lsector+512*n,512);//单个sector的写操作 
                        buf+=512; 
                }  
        }else 
        { 
                if(cnt==1)sta=SD_WriteBlock(buf,lsector,512);            //单个sector的写操作 
                else sta=SD_WriteMultiBlocks(buf,lsector,512,cnt);        //多个sector   
        } 
        return sta; 
} 
 
 
 
lsector<<=9; 
这里lsector定义的是long long类型,下面传入的add却是u32类型,这样可以吗 
SDIO_CmdInitStructure.SDIO_Argument = addr;//发送CMD24,写单块指令,短响应          
SDIO_CmdInitStructure.SDIO_CmdIndex = 24; 
 
 
 
if(CardType==SDIO_HIGH_CAPACITY_SD_CARD)        //大容量卡 
{ 
                blksize=512; 
                addr>>=9; 
}     |   
 
 
 
 |