[AT32F435] DMA配置问题

[复制链接]
 楼主| 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干预,肯定就跑完了

评论

第一次初始化配置的时候没有这个现象,是定时器触发过一次后,再次更改dcnt的时候需要重新初始化定时器,没找打具体原因,目前只能重新初始化来解决了。  发表于 2025-3-25 10:21
时光迷宫 发表于 2025-4-7 16:19 | 显示全部楼层
我觉得楼上是对,断点打断不了DMA的传输
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

29

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

10

主题

29

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部