OpenEdv-开源电子网

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

关于DMA的问题。

[复制链接]

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
发表于 2017-4-5 21:36:09 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 oyixi001 于 2017-4-6 21:39 编辑

做一个项目需要使用DMA从内部存储器往定时器的寄存器里送东西。比如我定义一个待送的数组,AA【10】={0,1,2,3,4,5,6,7,8,9}
设置DMA.buffersize=10。
如果依次送进去然后循环肯定是没问题,只要定时器更新事件时提交一个DMA申请就行。
问题在于,我并不是每一次都需要把这个10个数都依次送进去,在某些时候送到第8个或者第7个我就需要从头重新送了。
所以我想以下步骤是否可以,我还没试,想先问问。最近出差手头没板子试不了。。。


1、DMA->ccrx&=~(1<<0);     关闭DMA通道。
2、DMA->CNDTRx=10;   将要送的数的量写为10
3、DMA->ccrx|=1<<0;    重新打开DMA等待送入。


简单来说我想问的就是一句话,是不是把CMDTRx写入待送的总数量,DMA就会从定义的初始地址开始从头传送。
如果不行,有什么办法可以打断DMA的传送序列,让它中断现有的进度,从头开始。
@正点原子

原子哥求帮忙!

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

使用道具 举报

33

主题

159

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2017-1-21
在线时间
192 小时
 楼主| 发表于 2017-4-6 21:38:39 | 显示全部楼层
回复

使用道具 举报

3

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
318
金钱
318
注册时间
2017-1-27
在线时间
34 小时
发表于 2017-4-6 22:10:48 | 显示全部楼层
DMA一开始不是有设置传输的数据量的设置吗 就是传几个 你可以试试将DMA_BufferSize设置为自己想传的数据量  不知道这个方法行不行 我也没试
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-22 08:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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