OpenEdv-开源电子网

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

DMA实验 卡住了 求大神们打救!

[复制链接]

44

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2012-9-28
在线时间
0 小时
发表于 2012-11-19 22:19:20 | 显示全部楼层 |阅读模式

            
问题一:

//开启一次DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
 DMA_CHx->CCR&=~(1<<0);       //关闭DMA传输
 DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,传输数据量
 DMA_CHx->CCR|=1<<0;          //开启DMA传输
}

上面红色部分我知道是结构体,但放在这里有什么用?
例如:

MYDMA_Enable(DMA1_Channel4);//开始一次DMA传输!
这个DMA1_Channel4怎么代进这个函数里啊?这函数里面没有对应的变量对应它啊!

 

问题二:

MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,5200);//DMA1通道4,外设为串口1,存储器为SendBuff,长度5200.

红色部分有,绿色部分没有&,为什么?可是书上说若用数组SendBuf做储存器,则要&SendBuf


问题三:

DMA_CHx->CCR|=1<<4;  //从存储器读
若我选择了从储存器读的话,是不是CPAR是目标地址,CMAR是源地址?外设要非增量,储存器要增量?

DMA_CHx->CCR|=0<<4; //从外设读

若我选择了从外设读的话,是不是CPAR是源地址,CMAR是目标地址?若有几个外设,则是不是外设要增量模式,储存器非增量?

跪求答案!!!

 

 


 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-11-19 23:12:16 | 显示全部楼层
1,搞懂函数参数的使用方法就知道了。
2,因为USART1->DR是个具体的值。而SendBuf是一个数组的首地址,他与&SendBuff是等价的,可以要也可以不要。
3,是的。但是增量要不要用,得看需要了。不一定非要不可。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

44

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2012-9-28
在线时间
0 小时
 楼主| 发表于 2012-11-19 23:23:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子大哥
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-3-1 08:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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