求助关于stm32F407SD卡DMA传输问题

2019-07-20 17:38发布

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);        //&#197;&#228;&#214;&#195;Dèòaμ&#196;&#214;D&#182;&#207;
                 SDIO->DCTRL|=1<<3;                         //SDIO DMAê1&#196;ü
            SD_DMA_Config((u32*)buf,blksize,DMA_DIR_PeripheralToMemory);
                while(((DMA2->LISR&(1<<27))==RESET)&&(TransferEnd==0)&&(TransferError==SD_OK)&&timeout)timeout--;//μè′y′&#171;ê&#228;íê3é
                if(timeout==0)return SD_DATA_TIMEOUT;//3&#172;ê±
                if(TransferError!=SD_OK)errorstatus=TransferError;  
    }   
这是探索者的SD卡DMA的例程,请问一下用的DMA为什么还要
while(((DMA2->LISR&(1<<27))==RESET)&&(TransferEnd==0)&&(TransferError==SD_OK)&&timeout)timeout--;
有这句代码。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
正点原子
1楼-- · 2019-07-20 19:19
要等待传输完成啊。。
金玉良言
2楼-- · 2019-07-20 22:11
正点原子 发表于 2016-12-31 23:17
要等待传输完成啊。。

原子哥,DMA不是能够令CPU可以去干别的事情。如果在实际使用中是能够通过中断来将CPU解放出来吗?我理解
while(((DMA2->LISR&(1<<27))==RESET)&&(TransferEnd==0)&&(TransferError==SD_OK)&&timeout)timeout--;
这句代码类似于查询。

一周热门 更多>