【STM32Cube】定时器产生固定数量的PWM

有这个需求主要是用来对步进电机进行控制,步进电机根据输入的脉冲数量移动对应的步数。

如果利用IO口进行模式PWM,这种方法输出PWM频率误差大,并且对系统实时性有影响。

如果利用一个定时器配合中断进行处理呢?在PWM中断中计数,当累加到设定数值之后停止PWM输出。但是当PWM频率高时,频繁的中断会影响程序运行的效率。为了解决这个问题,引入主从定时器来实现。即利用主定时器作为触发源,通过主定时器触发从定时器来工作。

主从定时器产生固定PWM脉冲数配置步骤

主控芯片为STM32H743IIT6,项目中需要对步进电机进行较为精准的控制。经过查找资料,可以通过对STM32的定时器采用主从定时器的模式。由主定时器输出方波信号从定时器TIM8对主定时器TIM1输出的脉冲进行计数溢出时触发从定时器的中断服务函数。以此达到控制步进电机转动的圈数的目的。

主定时器产生PWM

主定时器为TIM1,通道3配置为PWM输出,使能主从模式,触发事件选择为更新事件,不需要开启中断。

主定时器为TIM1,其中通道3配置为PWM输出,主模式的更新事件选为触发输入

 TRGO 选择 Compare Pulse,也就是 OC1 的比较匹配事件(CNT==CCR1)作为触发输出源;

设置Pulse为50,该值和计数器周期共同控制PWM的占空比,此处为50%。使能主从模式,触发事件选择Update Event。禁用输出比较预加载。输出极性Low。

从定时器TIM8

同时我们开启第二个定时器。 TIM8。触发源的选择需要查看数据手册中进行选择,TIM8为从定时器、TIM1为主定时器时选择ITR0。

触发源选择ITR0(根据自己使用的定时器选择),时钟源选择内部时钟。

参数设置基本是保持默认。 

使能从定时器的中断。此处我使用的是高级定时器作为Slave,如果是通用定时器,只需使能定时器全局中断即可。

基于STM32F429+HAL库编写的定时器主从门控模式级联输出固定个数PWM脉冲的程序 - 走看看 (zoukankan.com)

基于HAL库的STM32F103定时器主从模式输出固定数量的PWM脉冲 - 简书 (jianshu.com)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米杰的声音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值