硬汉嵌入式论坛

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

[TIMER] 定时器触发dma问题

[复制链接]

5

主题

23

回帖

38

积分

新手上路

积分
38
发表于 2024-10-17 08:32:26 | 显示全部楼层 |阅读模式
本帖最后由 sofia 于 2024-10-17 08:40 编辑

大佬们请教下,一个定时器的两个通道如何设置在上升延触发两个DMA,谢谢。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-10-17 09:43:21 | 显示全部楼层
定时器的通道触发,不支持边沿设置。不过可以触发。
DMA_REQUEST_TIM1_CH1
DMA_REQUEST_TIM1_CH2
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2024-10-17 16:15:08 | 显示全部楼层
eric2013 发表于 2024-10-17 09:43
定时器的通道触发,不支持边沿设置。不过可以触发。
DMA_REQUEST_TIM1_CH1
DMA_REQUEST_TIM1_CH2

谢谢 两个dma设置为DMA_REQUEST_TIM1_CH1和DMA_REQUEST_TIM1_CH2,定时器1两个通道设置的DMA请求类型都为TIM_DMA_UPDATE时,但只有一个dma得到响应,不知道为什么
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-10-18 09:39:17 | 显示全部楼层
sofia 发表于 2024-10-17 16:15
谢谢 两个dma设置为DMA_REQUEST_TIM1_CH1和DMA_REQUEST_TIM1_CH2,定时器1两个通道设置的DMA请求类型都为T ...

使用CubeMX配置分配下试试。
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2024-10-18 21:02:09 | 显示全部楼层
eric2013 发表于 2024-10-18 09:39
使用CubeMX配置分配下试试。

谢谢 硬汉哥  问下定时器的两个通道都使能了TIM_DMA_UPDATE  但对应的DMA1和DMA2不能被触发  这是啥问题呢 是不支持吗。部分代码如下:
TIM1_CH1:
__HAL_TIM_ENABLE_DMA(&TimHandle1, TIM_DMA_UPDATE);
TIMDMA.Init.Request             = DMA_REQUEST_TIM1_CH1;

TIM1_CH2:
__HAL_TIM_ENABLE_DMA(&TimHandle2, TIM_DMA_UPDATE);
TIMDMA2.Init.Request             = DMA_REQUEST_TIM1_CH2;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-10-19 09:35:28 | 显示全部楼层
sofia 发表于 2024-10-18 21:02
谢谢 硬汉哥  问下定时器的两个通道都使能了TIM_DMA_UPDATE  但对应的DMA1和DMA2不能被触发  这是啥问题 ...

__HAL_TIM_ENABLE_DMA(&TimHandle1, TIM_DMA_UPDATE);
__HAL_TIM_ENABLE_DMA(&TimHandle2, TIM_DMA_UPDATE);

这个写法不合理,应该是配置同一个定时器的句柄,不同的定时器通道和不同DMA流
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2024-10-19 23:35:00 | 显示全部楼层
eric2013 发表于 2024-10-19 09:35
__HAL_TIM_ENABLE_DMA(&TimHandle1, TIM_DMA_UPDATE);
__HAL_TIM_ENABLE_DMA(&TimHandle2, TIM_DMA_UPDA ...

谢谢回答  我改了  但发现都触发不了 不知道哪里出问题了.改成如下

__HAL_TIM_ENABLE_DMA(&TimHandle, TIM_DMA_UPDATE);
HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_1)
HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_2)
HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_1)
HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_2)

TIMDMA1.Init.Request             = DMA_REQUEST_TIM1_CH1;
TIMDMA2.Init.Request             = DMA_REQUEST_TIM1_CH2;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-10-20 10:41:54 | 显示全部楼层
sofia 发表于 2024-10-19 23:35
谢谢回答  我改了  但发现都触发不了 不知道哪里出问题了.改成如下

__HAL_TIM_ENABLE_DMA(&TimHand ...

HAL_TIM_PWM_Start 改成用OC输出,另外帖下你的完整代码看下
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2024-10-21 13:28:44 | 显示全部楼层
eric2013 发表于 2024-10-20 10:41
HAL_TIM_PWM_Start 改成用OC输出,另外帖下你的完整代码看下

好的  谢谢 大佬
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-11-29 17:38:05 | 显示全部楼层
老哥定时器触发DMA传输的问题解决了吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2024-11-30 07:01:42 | 显示全部楼层
tyh19820234964 发表于 2024-11-29 17:38
老哥定时器触发DMA传输的问题解决了吗

这个就可以,你可以设置到同一个定时器的两个通道

STM32H743/H723 三ADC交替触发采样,理论速度可达14MSPS+
https://forum.anfulai.cn/forum.p ... 4871&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 04:49 , Processed in 0.045287 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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