关于DMA的问题。

2019-08-22 15:55发布

本帖最后由 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的传送序列,让它中断现有的进度,从头开始。
@正点原子

原子哥求帮忙!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。