硬汉嵌入式论坛

 找回密码
 立即注册
查看: 956|回复: 12
收起左侧

[TIMER] TIM触发DMA前两个脉冲异常

[复制链接]

5

主题

162

回帖

177

积分

初级会员

积分
177
发表于 2024-12-3 00:03:13 | 显示全部楼层 |阅读模式
问一下大佬们,今天尝试了一下,使用定时器触发GPIO的功能,但是我发现第一个第二个脉冲是异常的触发是通过定时器PWM通道触发。非常疑惑这个问题
d068ae54-b926-4d22-97f6-21566b702050.png
ca6fc85b-7f95-40f5-b373-12b3f48163b2.png
41d372ca-d6f9-469d-af70-b0dfad4aa4b6.png
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
 楼主| 发表于 2024-12-3 00:14:27 | 显示全部楼层
这是我测试的代码
d00b766e-4e08-4481-b47f-27f8bf54d616.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-3 09:57:09 | 显示全部楼层
没太看懂你的用法,为什么配置了个PWM。

推荐使用DMAMUX触发模式,此贴这个是这种方式

https://forum.anfulai.cn/forum.p ... &extra=page%3D1

12.png
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
 楼主| 发表于 2024-12-3 10:26:25 | 显示全部楼层
eric2013 发表于 2024-12-3 09:57
没太看懂你的用法,为什么配置了个PWM。

推荐使用DMAMUX触发模式,此贴这个是这种方式

我配置的是PWM通过触发DMA,不是通过配置DMAMUX触发DMA,因为通过DMAMUX触发的话,只能改变一组GPIO,如果我需要其他引脚在不同的GPIO组上,这个TIM12触发就不适合了,毕竟只能同时触发一个DMA,我需要四组DMA同时触发不同的GPIO
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-4 08:32:08 | 显示全部楼层
2859932063 发表于 2024-12-3 10:26
我配置的是PWM通过触发DMA,不是通过配置DMAMUX触发DMA,因为通过DMAMUX触发的话,只能改变一组GPIO,如 ...

不同分组的上的GPIO也没问题,DMA缓冲设置不同的GPIO地址就行。
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
 楼主| 发表于 2024-12-4 09:24:37 | 显示全部楼层
eric2013 发表于 2024-12-4 08:32
不同分组的上的GPIO也没问题,DMA缓冲设置不同的GPIO地址就行。

这个怎么操作?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-5 08:44:54 | 显示全部楼层

DMA的缓冲里面写不同的GPIO地址就行。比如你可以PA1,PB1,PC1依次缓冲,3个为一组。
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
 楼主| 发表于 2024-12-5 22:01:25 | 显示全部楼层
eric2013 发表于 2024-12-5 08:44
DMA的缓冲里面写不同的GPIO地址就行。比如你可以PA1,PB1,PC1依次缓冲,3个为一组。

坛主能具体讲一下吗?定时器的CCR通道我倒是知道可以使用FIFO直接操作
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-6 08:33:16 | 显示全部楼层
2859932063 发表于 2024-12-5 22:01
坛主能具体讲一下吗?定时器的CCR通道我倒是知道可以使用FIFO直接操作

三楼回复例子的基础上,修改DMA缓冲。目的缓冲里面各种GPIO地址都加上即可,地址自增。我们之前是固定的一个GPIO,这次不固定了。
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
 楼主| 发表于 2024-12-6 20:42:23 | 显示全部楼层
eric2013 发表于 2024-12-6 08:33
三楼回复例子的基础上,修改DMA缓冲。目的缓冲里面各种GPIO地址都加上即可,地址自增。我们之前是固定的 ...

坛主没有看到啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-12-7 08:41:22 | 显示全部楼层

没贴代码,你把目的地址也设置为缓冲,地址自增即可。
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
 楼主| 发表于 2024-12-7 14:59:13 | 显示全部楼层
eric2013 发表于 2024-12-7 08:41
没贴代码,你把目的地址也设置为缓冲,地址自增即可。

坛主这个我确实不知道怎么操作,如果GPIOA跟GPIOB的地址是靠在一起的才可以的吧
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
 楼主| 发表于 2024-12-9 21:55:00 | 显示全部楼层
已解决,把定时器的通道标志清掉即可
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 01:16 , Processed in 0.050270 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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