硬汉嵌入式论坛

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

[技术讨论] 怎么利用TIMx的单脉冲模式输出脉冲个数可控的PWM

[复制链接]

5

主题

23

回帖

38

积分

新手上路

积分
38
发表于 2019-9-5 15:44:08 | 显示全部楼层 |阅读模式
怎么利用TIMx的单脉冲模式输出脉冲个数可控的PWM???
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2019-9-5 15:47:23 | 显示全部楼层
单脉冲模式不方便,还不如定时器中断来的方便。

专业点就使用类似这种的方案:
借助STM32H7的DMAMUX的定时器触+DMA控制任意IO做PWM和脉冲数控制,爽歪歪
http://www.armbbs.cn/forum.php?m ... 1148&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2019-9-5 16:11:00 | 显示全部楼层
eric2013 发表于 2019-9-5 15:47
单脉冲模式不方便,还不如定时器中断来的方便。

专业点就使用类似这种的方案:

那岂不是要频繁进中断啊?
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2019-9-5 16:23:26 | 显示全部楼层
用重复计数器RCR,计数一定个数后进中断再次启动定时器,这样数量严格可控,且减少中断次数。
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2019-9-5 16:35:42 | 显示全部楼层
eric2013 发表于 2019-9-5 15:47
单脉冲模式不方便,还不如定时器中断来的方便。

专业点就使用类似这种的方案:

哥你的历程呢,你发的链接套了好几个链接也没看到你的历程啊?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2019-9-5 16:52:21 | 显示全部楼层
ZSR20181017 发表于 2019-9-5 16:35
哥你的历程呢,你发的链接套了好几个链接也没看到你的历程啊?

【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至63章(2019-08-18)
http://www.armbbs.cn/forum.php?m ... 6980&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2019-9-5 18:12:41 | 显示全部楼层
ghslfgkkl88 发表于 2019-9-5 16:23
用重复计数器RCR,计数一定个数后进中断再次启动定时器,这样数量严格可控,且减少中断次数。

大师 RCR有些限制啊,
  if ((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM15)|| (TIMx == TIM16) || (TIMx == TIM17))  
  {
    /* Set the Repetition Counter value */
    TIMx->RCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter;
  }
我用TIM4就没有RCR,如果不用RCR功能,还有其它的办法吗?
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2019-9-5 19:31:36 | 显示全部楼层
ZSR20181017 发表于 2019-9-5 18:12
大师 RCR有些限制啊,
  if ((TIMx == TIM1) || (TIMx == TIM8)|| (TIMx == TIM15)|| (TIMx == TIM16) | ...

你要做几路?T1和T8有RCR,如果是T4,可以用DMA当RCR,用DMA发送一定数量后进中断,多次中断累计控制脉冲数
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2019-9-6 08:58:11 | 显示全部楼层
eric2013 发表于 2019-9-5 16:52
【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至63章(2019- ...

给硬汉提点建议:昨天看你写的基于H7的定时器输出脉冲个数可控的pwm波程序,代码结构太复杂了,对于初学者有点难get到想要的关于程序结构和思路,能不能把历程做的循序渐进一些,就是代码结构一开始不要那么复杂,比如:一个外设怎么用起来,然后再慢慢深入。
当然这只是我个人的建议而已。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2019-9-6 09:03:04 | 显示全部楼层
ZSR20181017 发表于 2019-9-6 08:58
给硬汉提点建议:昨天看你写的基于H7的定时器输出脉冲个数可控的pwm波程序,代码结构太复杂了,对于初学 ...

不复杂,非常简单,这个是因为你不熟悉DMAMUX导致,所以你需要优先学习教程前面的DMAMUX,然后学习DMA,再学习TIM,就好了,所有这些都有独立的教程章节,非常适合你提的建议,这个循序渐进的过程还是要有的。

这个DMAMUX是H7上新增的。

QQ截图20190906091052.jpg


回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2019-9-6 09:18:09 | 显示全部楼层
eric2013 发表于 2019-9-6 09:03
不复杂,非常简单,这个是因为你不熟悉DMAMUX导致,所以你需要优先学习教程前面的DMAMUX,然后学习DMA, ...

可能我没说完整,因为我们都还在用F1系列的芯片,所以DMAMUX没有,所以只用TIM触发DMA就行了吗
回复

使用道具 举报

5

主题

23

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2019-9-6 09:21:34 | 显示全部楼层
ghslfgkkl88 发表于 2019-9-5 19:31
你要做几路?T1和T8有RCR,如果是T4,可以用DMA当RCR,用DMA发送一定数量后进中断,多次中断累计控制脉冲 ...

你是否有类似历程参考啊?谢谢。
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2019-9-6 12:46:54 | 显示全部楼层
ZSR20181017 发表于 2019-9-6 09:21
你是否有类似历程参考啊?谢谢。

百度就能搜索到啊
回复

使用道具 举报

9

主题

24

回帖

51

积分

初级会员

积分
51
发表于 2019-9-7 16:45:18 | 显示全部楼层
用DMA传输,比如传输32个,在DMA发送完成中断里处理,是否继续发送,发送几个,接着发。直到发送完成
回复

使用道具 举报

9

主题

24

回帖

51

积分

初级会员

积分
51
发表于 2019-9-7 17:00:55 | 显示全部楼层
eric2013 发表于 2019-9-6 09:03
不复杂,非常简单,这个是因为你不熟悉DMAMUX导致,所以你需要优先学习教程前面的DMAMUX,然后学习DMA, ...

审核通过能能不能就别发系统提醒了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2019-9-7 17:14:06 | 显示全部楼层
gaoxiaohu110 发表于 2019-9-7 17:00
审核通过能能不能就别发系统提醒了

改不了,这个是系统设置
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 20:02 , Processed in 0.212981 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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