好记性不如烂笔头,最近项目用到了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
代码讲究一个思路,芯片不一样都无所谓,主要是搞清原理,然后学习芯片相关部分。边学边用,不一定要新芯片从头学起。奥里给