0%

STM32Timer和PWM驱动舵机

STM32中有10几个定时器,工作原理很好理解。就是Enable某个定时器,然后对他ARR(auto-reload register)赋值,定时就会根据CLK信号,对计数寄存器做加法,如果加到了ARR中指定的值,则发出中断,CPU就是中断响应处理。

这个定个闹钟,早上闹钟响了,我就开始起床刷牙洗脸,原理上差不多。

但是STM32的timer的计时不是人类的时间,而是对应的CLK时钟信号。大多数是对应APB1的clock时钟,具体需要到数据手册中查看。

如果单单是定时,其实就没必要设置这么多个Timer了。STM32利用GPIO端口结合定时器,可以实现输入捕获,和输出比较。输出比较就是产生PWM脉冲。

PWM可以实现DAC转换,可以驱动电机。电动机可以利用PWM来控制转速。

舵机会指定一个高电平的时间范围,对应着舵机的转动角度,这里通过简单计算就可以把角度和Timer的CCR寄存器的值对应起来。这样改变CCR,就能改变舵机角度。

这里需要制定Timer的channel,就是占用哪一个GPIO口,把这个口接出来就变成了舵机的信号线。

STM32还有很多定时器模式,参数可选,在CubeMX中配置一下即可,使用还是很方便的。