打印

求教stm32定时器一次dma连续修改寄存器问题

[复制链接]
2481|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cxf_222|  楼主 | 2010-7-15 08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学stm32想实现定时器一次dma连续修改CCR1,CCR2,CCR3,CCR4的值,这样可以节省dma通道,但是不知道怎么配置TIMX_DCR?是DBL设置为4,DBA设置为TIM_DMABase_CCR1,然后DMA外设地址配置为TIMX_DMAR的地址(比如TIM2_DMAR  0x4000004c)吗?还有什么其他的需要设置吗?我只设置了前面几个,没有实现,希望的到高手的指教:)
沙发
cxf_222|  楼主 | 2010-7-15 13:16 | 只看该作者
顶起来希望有人帮忙!

使用特权

评论回复
板凳
lut1lut| | 2010-7-15 15:03 | 只看该作者
这个DBL=4, DBA=13(对应CCR1)。四次访问DMAR这个寄存器,实际就是访问从CCR1到CCR4的四个寄存器。

我是用MCU访问DMAR,没有问题。

没有用DMA来访问DMAR,我试一下哈。

使用特权

评论回复
地板
lut1lut| | 2010-7-22 16:28 | 只看该作者
哇哇哇。

我刚才试了一下DMA访问DMAR,把DBL设置为4, BASE设置成CCR1,一次DMA访问,确实可以达到同时更新CCR1,CCR2,CCR3,CCR4的效果。即类似DMA的"burst"模式。

你要注意的是这个DMA的配置:
1)使能DMA时钟,别忘了:RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
2)DMA的配置
DMA_InitStructure.DMA_BufferSize = 4; 这里不是1,是4

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝