else if(DeviceMode==SD_DMA_MODE)
{
TransferError=SD_OK;
StopCondition=0; //μ¥¿é¶á,2»Dèòa·¢Ëíí£Ö1′«êäÖ¸áî
TransferEnd=0; //′«êä½áêø±êÖÃ룬ÔúÖD¶Ï·tÎñÖÃ1
SDIO->MASK|=(1<<1)|(1<<3)|(1<<8)|(1<<5)|(1<<9); //ÅäÖÃDèòaμÄÖD¶Ï
SDIO->DCTRL|=1<<3; //SDIO DMAê1Äü
SD_DMA_Config((u32*)buf,blksize,DMA_DIR_PeripheralToMemory);
while(((DMA2->LISR&(1<<27))==RESET)&&(TransferEnd==0)&&(TransferError==SD_OK)&&timeout)timeout--;//μè′y′«êäíê3é
if(timeout==0)return SD_DATA_TIMEOUT;//3¬ê±
if(TransferError!=SD_OK)errorstatus=TransferError;
}
这是探索者的SD卡DMA的例程,请问一下用的DMA为什么还要
while(((DMA2->LISR&(1<<27))==RESET)&&(TransferEnd==0)&&(TransferError==SD_OK)&&timeout)timeout--;
有这句代码。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原子哥,DMA不是能够令CPU可以去干别的事情。如果在实际使用中是能够通过中断来将CPU解放出来吗?我理解
while(((DMA2->LISR&(1<<27))==RESET)&&(TransferEnd==0)&&(TransferError==SD_OK)&&timeout)timeout--;
这句代码类似于查询。
一周热门 更多>