打印
[AT32F435]

DMA配置问题

[复制链接]
137|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Embeding|  楼主 | 2025-3-24 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用雅特力AT32F435VGT7芯片,使用DMA1的通道通道1,使用定时器触发DMA传输。发现个问题:根据参考手册,要修改dcnt等参数需先失能通道,我调用dma_channel_enable(DMA1_CHANNEL1, FALSE);后更改DMA1_CHANNEL1->dtcnt,然后调用dma_channel_enable(DMA1_CHANNEL1, TRUE);使能通道,调试发现使能后就开始DMA传输了,我调试停在dma_channel_enable(DMA1_CHANNEL1, TRUE);代码后面,发现DMA1_CHANNEL1->dtcnt的数据开始倒数为0了,这是为什么?我是想启动定时器去触发DMA传输的,是因为配置不正确吗?  不调试的时候测试功能正常的,以为配置是正确的。

使用特权

评论回复
沙发
Embeding|  楼主 | 2025-3-25 09:59 | 只看该作者
查看官方文档FAQ0120找到了答案,需复位定时器再重新初始化定时器,问题得到解决。 还是有个疑问,这个重新初始化比较繁琐,有没有熟悉的朋友有更简单的方式?

使用特权

评论回复
板凳
呐咯密密| | 2025-3-25 10:11 | 只看该作者
dma_channel_enable(DMA1_CHANNEL1, TRUE)执行完之后DMA已经开始启动了,不受你的断点停止了CPU,但是DMA不需要CPU干预,肯定就跑完了

使用特权

评论回复
评论
Embeding 2025-3-25 10:21 回复TA
第一次初始化配置的时候没有这个现象,是定时器触发过一次后,再次更改dcnt的时候需要重新初始化定时器,没找打具体原因,目前只能重新初始化来解决了。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

粉丝