Bootstrap

STM32 HAL库-PWM控制舵机

好记性不如烂笔头,最近项目用到了stm32h5芯片,也是边做边学。

舵机控制原理,一个周期20ms,前高电平表示舵机转动角度,0.5ms到2.5ms,代表转动角度0-180或者360度,后半段为低电平

stm32CUBEMX里配置时钟然后再配置外设。

舵机频率 1/0.02=50hz

STM32产生PWM步骤:

1:使用TIMER来钟输出比较来做

2:首先知道定时器X,连接到哪个时钟上的,然后可以通过TIMx_PSC预分频系数,

定时器频率=时钟/PSC;

计数器:TIMx_CNT ,每隔一个周期变化一次

重装载值:TIMx_ARR,主要是用来和CNT比较,如果不在这个值内,就重新设置CNT

Fpwm = 主频 / ((ARR+1)*(PSC+1))(单位:Hz)

占空比

duty circle = TIM3->CCR2 / ARR(单位:%)

 

例子:控制舵机 1度为0.5+1/90=0.51ms,计数器周期<=1/90,现在频率设置为250/2那么周期为2/250,那么他这个周期小于1/90,到达20ms时候ARR为2500也不大于65535,所以可以用,那么

ARR=2500,

psc=1000-1;

CRR=

psc=1000-1;

那么1份就是20/2500=2/250=1/125ms

那么一度就是0.5ms+1/90ms->63+2,约等于

所以CRR的值为默认为63,x度为63+2*x

代码讲究一个思路,芯片不一样都无所谓,主要是搞清原理,然后学习芯片相关部分。边学边用,不一定要新芯片从头学起。奥里给

;