c - 在 STM32F4 PWM 上生成固定数量的脉冲
问题描述
我正在尝试控制伺服电机(链接)。它是一种无刷直流电机,接口类似于步进电机。
电机根据从PWM
. 速度是由脉冲频率决定的PWM
,就像步进电机一样。
为了控制这个电机,我使用了一个微控制器STM32F407ZET6
。我可以轻松更改 PWM 的频率和占空比,但我的疑问如下:
如何在 PWM 中生成固定数量的脉冲?例如,我希望 PWM 在某个时间发送 1000 个脉冲,频率为 20KHz,占空比为 50%。20KHz 和 50% 占空比很容易定义,但我无法确定如何生成 1000 个固定脉冲。
我尝试的解决方案之一是在计数器模式下将 PWM 连接回定时器,并在生成所需数量的脉冲时停止 PWM。但脉冲的数量并不总是固定的,有时范围从 998 到 1005(例如)。
是否可以在不需要反馈的情况下做到这一点?
解决方案
这可以通过将所谓的“单脉冲模式”(参考手册第 551 页)与重复计数器(第 529 页)相结合来轻松实现。您所要做的就是启用此模式(CR1 中的 OPM 位),设置重复计数器(RCR)并启动定时器。IIRC 您还必须强制更新事件才能加载 RCR。参考手册将提供更多信息。
推荐阅读
- flutter - Flutter web - ReordorableListView,在字段之间悬停时带有+按钮
- html - 媒体查询不起作用。我究竟做错了什么?
- python - pip 命令未找到,安装 django 时在 mac 上未找到 virtualenv 命令
- laravel - 如何在由 Laravel api 提供支持的移动应用程序中处理异地支付
- tomcat - javax.servlet.ServletException:类 [org.glassfish.jersey.servlet.ServletContainer] 不是 Servlet
- java - 如何在硒中并行运行多个类
- javascript - 如何在画布上的多点模式下使用单独的颜色为 D3-Geo 路径点着色
- javascript - 将“require”与 esm 一起使用 - ReferenceError:require 未定义
- java - 使 Hamcrest 匹配 Map 中的键或值
- java - 找不到元素的消息 findElement(By.xpath("//div[@data-index='1']