OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3773|回复: 2

求助关于stm32F407SD卡DMA传输问题

[复制链接]

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2016-12-27
在线时间
34 小时
发表于 2016-12-31 23:17:15 | 显示全部楼层 |阅读模式
1金钱
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#楼]

要等待传输完成啊。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-12-31 23:17:16 | 显示全部楼层
要等待传输完成啊。。
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2016-12-27
在线时间
34 小时
 楼主| 发表于 2017-1-3 09:37:20 | 显示全部楼层
正点原子 发表于 2016-12-31 23:17
要等待传输完成啊。。

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 06:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表