在STM32F4 PWM上产生固定数量的脉冲。

问题描述 投票:1回答:2

我正试图控制一个伺服电机(联系). 它是一种无刷直流电机,其接口类似于步进电机。

电机根据它收到的脉冲数,在规定的距离内旋转。PWM. 速度是由脉冲频率决定的。PWM,像一个步进电机。

为了控制这个电机,我使用的是一个单片机。STM32F407ZET6. 我可以很容易地改变PWM的频率和占空比,但我的疑惑是,如何在PWM中产生固定数量的脉冲?

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

我试过的一个解决方案是将PWM以计数器模式连接回定时器,当产生所需的脉冲数时,停止PWM。但脉冲数并不总是固定的,有时从998到1005不等(例如)。

是否可以做到不需要反馈?

c timer stm32 pwm stm32f4
2个回答
0
投票

最简单的方法。

  1. UG中断=计数周期。n个周期后,禁用定时器。

  2. 在存储器中用定时器寄存器的值创建一个缓冲区,并使用定时器突发模式。

  3. 配置DMA mem-mem,n个周期的源地址和目的地址相同。在n个周期后,交易结束将产生中断--禁用定时器。

  4. 当PWM更新(溢出)时,使用从属定时器计数。设置溢出中断,禁用PWM定时器。

    • 许多其他方法。

0
投票

通过将所谓的 "单脉冲模式"(参考手册第551页)与重复计数器(第529页)结合起来,可以很容易地实现这一点。你要做的就是启用这个模式(CR1中的OPM位),设置重复计数器(RCR)并启动定时器。IIRC你还必须强制更新事件才能让RCR加载。参考手册会有更多的信息。

© www.soinside.com 2019 - 2024. All rights reserved.