cubexMX配置STM32的定时器级联输出特定数目的PWM驱动步进电机

一、手册中的说明

在《STM32中文参考手册V10.0.PDF》的280页有关于“使用一个定时器作为另一个的预分频器”的介绍,本篇即是以此为基础实现的。实现的原理是主定时器输出PWM波,并且在每次计数溢出时输出一个信号作为从定时器的计数时钟,从定时器的计数器就可以计满需要的PWM脉冲个数后产生中断,然后在中断程序里关闭主定时器和从定时器即可实现。

 

 

这里以定时器4和定时器5为例进行说明,定时器4为主,定时器5为从,其连接示意图如下:

二、cubexMX的配置

这里从PD13输出TIM4通道2的PWM,这里TIM5选择外部时钟模式,来源是ITR2,也就是TIM4的计数器更新事件输出的上升沿(后面还要配置TIM4输出更新事件)作为TIM5的计数时钟。

主定时器TIM4的配置如下,使能更新事件作为触发事件,同时注意PWM的极性要选择成Low,不然很容易导致多输出一个毛刺脉冲,后面会依个人所见分析原因。

当PWM输出极性配置成High时,20个脉冲实际出现的波形如下,可以看到输出的频率是正确的,如上面配置的1k,在脉冲测量里有21个脉冲,最后有一个小毛刺。

从定时器TIM5的配置如下,这里主要需要注意的是输出的脉冲个数必须减1,注意若要实时可修改脉冲数,须将自动重装载disable

同时注意需要使能TIM5的全局中断

最后输出的波形如下所示,漂亮的一逼

下面简要分析一下为什么PWM输出极性设置为high时会多一个毛刺,这里以输出4个脉冲为例,如下图所示,计数器从0到999逐一计数,当在499时发生匹配PWM的输出翻转,当配置为High时,到最后一个时,从定时器产生中断,进入中断处理程序由软件来关闭PWM输出,由于中断的延迟及指令执行需要时间,故不能立即关闭PWM,并且关闭PWM输出后不管什么极性IO都会回到低电平,从而产生一个毛刺输出。而当输出极性配置Low时,只要中断里关闭PWM的时间小于PWM的半个周期,基本可保证输出的PWM个数是正确的,但是从定时器中断的优先级要足够的高,最好的还是用逻辑分析仪或者示波器调试确认一下。

三、从模式内部触发连接

STM32F103定时器从模式内部触发连接
Slave TIMITR0(TS=000)ITR1(TS=001)ITR2(TS=010)ITR3(TS=011)
TIM1TIM5_TRGOTIM2_TRGOTIM3_TRGOTIM4_TRGO
TIM8TIM1_TRGOTIM2_TRGOTIM4_TRGOTIM5_TRGO
     
TIM2TIM1TIM8TIM3TIM4
TIM3TIM1TIM2TIM5TIM4
TIM4TIM1TIM2TIM3TIM8
TIM5TIM2TIM3TIM4TIM8
     
TIM8TIM2_TRGOTIM3_TRGOTIM10_OCTIM11_OC
TIM12TIM4_TRGOTIM5_TRGOTIM12_OCTIM14_OC

这个表的意思是表明哪些可以作为从定时器,以前它能接收哪些定时器的什么信号。如TIM1作为从定时器时,TIM5、TIM2、TIM3、TIM4可以做为TIM1的主定时器输出触发信号。

四、代码

https://download.csdn.net/download/nie15870449223/12229744

 

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值