硬汉嵌入式论坛

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

[有问必答] 关于STM32F4精密控制PWM脉冲数的问题

[复制链接]

3

主题

5

回帖

14

积分

新手上路

积分
14
发表于 2021-5-10 22:14:05 | 显示全部楼层 |阅读模式
请教一个问题,兄弟最近在尝试用STM32F4的主从定时器模式实现可控PWM输出。因期望输出的PWM脉冲个数在定时刷新,故需要监视已输出的脉冲个数。尝试用中断来计数,后来担心占用过的的CPU资源遂作罢。故特来请教各位大侠是否有更妥当的方法实现,谢谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2021-5-11 07:41:30 | 显示全部楼层
同样的问题。

如何用一个定时器产生多路相位可调,占空比可调的一组PWM
https://forum.anfulai.cn/forum.php?m ... d=106401&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2021-5-11 21:03:28 | 显示全部楼层
多使用一个定时器,配置成主定时器的从定时器。主定时器A每输出一个脉冲产生一次TRGO信号,这个信号作为从定时器B的计数信号。
我是把 主定时器A的CR2寄存器 MMS(主模式选择)配置成 010 更新,根据你的需求也可以配置成比较触发输出,即每输出一个脉冲产生一次TRGO信号。
从定时器B的SMCR寄存器 根据TIMx内部触发连接表,设置TS(触发选择); SMS(从模式选择)设置111 外部时钟模式。
ARR寄存器设置输出的个数,并开启从定时器B的更新中断。
回复

使用道具 举报

3

主题

5

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2021-5-11 22:18:25 | 显示全部楼层
eric2013 发表于 2021-5-11 07:41
同样的问题。

如何用一个定时器产生多路相位可调,占空比可调的一组PWM

这个例程也适用F4芯片吗?
回复

使用道具 举报

3

主题

5

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2021-5-11 22:26:09 | 显示全部楼层
xdj0818 发表于 2021-5-11 21:03
多使用一个定时器,配置成主定时器的从定时器。主定时器A每输出一个脉冲产生一次TRGO信号,这个信号作为从 ...

可以在未进入从定时器更新中断前改变ARR寄存器的值吗,从定时器的更新中断当作停止发送脉冲的信号?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2021-5-12 08:47:18 | 显示全部楼层
1641451670 发表于 2021-5-11 22:18
这个例程也适用F4芯片吗?

可以相同方案。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2021-5-12 08:48:10 | 显示全部楼层
1641451670 发表于 2021-5-11 22:26
可以在未进入从定时器更新中断前改变ARR寄存器的值吗,从定时器的更新中断当作停止发送脉冲的信号?

如果你开了定时器中断,那就直接定时器中断发脉冲就行,任意IO都可以发,无需这么大费周章了。
回复

使用道具 举报

43

主题

1054

回帖

1188

积分

至尊会员

积分
1188
发表于 2021-5-12 11:22:18 来自手机 | 显示全部楼层
可以设置为1ms中断,比如频率是1M,要输出10000个脉冲,那定时器设置为每1000个停止并进一次中断,在中断中判断剩余多少,剩余超过一千从一千重新启动频率输出,不足一千就按实际的来,可有效减少cpu占用率。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-16 15:35 , Processed in 0.039070 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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