Zen的小站

小舟从此逝,江海寄余生

0%

【HAL库】pwm波

文章概览

cubemx设置

image-20221223143505162

​ 左侧Timers里选择TIM设置输出PWM,中间选择channel点开选择PWM Generation CHx,右面对应引脚就会亮起。

​ 设置PWM输出频率通过下面的Prescaler(PSC)和Counter Period(ARR)

其中主频就是在Clock Configuration中设置的

image-20221223144411620

HAL库函数

1
2
3
4
// 开启
HAL_TIM_PWM_Start (&htim4,TIM_CHANNEL_4);
// 设置占空比
__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_4,10);

注意最后一项是脉宽的绝对时长,并不是占空比,一般都是用 5~25 对应 0.5~2.5ms 的脉宽来控制舵机的角度 0~180°。

控制舵机或电调

设置频率

若pwm波频率不匹配,相差过大,可能不被识别。

一般控制舵机或电调频率为 50Hz,主频为72MHz,用上述公式计算可取 PSC=7200-1,ARR=200-1

电调行程初始化

pwm 频率为 50Hz

先不上电,给脉冲时长 2ms,一段时间后上电,然后改变脉冲时长为 1ms,电调会长滴,之后即可用 1.1~2ms的脉冲控制电机

控制蜂鸣器

有源蜂鸣器只是用来警报的,即上电就叫;无源蜂鸣器才能控制音调

用周期控制音调,音调与占空比无关

音符对应频率(Hz)半周期时长(us)
1523956
2587851.5
3659758.5
4698716
5784637.5
6880568
7988506

对于这种频率不高的,用pwm改变频率就有另一种方法!——用延时手动控制

延时函数

1
2
3
4
5
6
7
8
9
void delay_us(uint16_t time)
{
uint16_t i=0;
while(time--)
{
i=10;
while(i--) ;
}
}

怎么用蜂鸣器模仿人声,或者演奏和弦?怎么调pwm频率?皆不知

多想多做,发篇一作

-------------本文结束感谢您的阅读-------------
// 在最后添加