首页 > 解决方案 > 在 STM32F4 PWM 上生成固定数量的脉冲

问题描述

我正在尝试控制伺服电机(链接)。它是一种无刷直流电机,接口类似于步进电机。

电机根据从PWM. 速度是由脉冲频率决定的PWM,就像步进电机一样。

为了控制这个电机,我使用了一个微控制器STM32F407ZET6。我可以轻松更改 PWM 的频率和占空比,但我的疑问如下:

如何在 PWM 中生成固定数量的脉冲?例如,我希望 PWM 在某个时间发送 1000 个脉冲,频率为 20KHz,占空比为 50%。20KHz 和 50% 占空比很容易定义,但我无法确定如何生成 1000 个固定脉冲。

我尝试的解决方案之一是在计数器模式下将 PWM 连接回定时器,并在生成所需数量的脉冲时停止 PWM。但脉冲的数量并不总是固定的,有时范围从 998 到 1005(例如)。

是否可以在不需要反馈的情况下做到这一点?

标签: ctimerstm32pwmstm32f4

解决方案


这可以通过将所谓的“单脉冲模式”(参考手册第 551 页)与重复计数器(第 529 页)相结合来轻松实现。您所要做的就是启用此模式(CR1 中的 OPM 位),设置重复计数器(RCR)并启动定时器。IIRC 您还必须强制更新事件才能加载 RCR。参考手册将提供更多信息。


推荐阅读