STM32 HAL库定时器PWM功能详解笔记

​什么是PWM

脉宽调制(Pulse-Width Modulation,PWM)是利用微处理器的数字输出,来对模拟电路进行控制的一种非常有效的技术,通过对一系列脉冲的宽度进行调制,来等效的获得所需要的波形(含形状和幅值),即通过改变导通时间占总时间的比例,也就是占空比,达到调整电压和频率的目的。

广泛应用在从测量、通信到功率控制与变换的许多领域中,用于调压调频,最突出的是针对各种类型的电机应用。

PWM的相关参数

周期T  第一个上升沿到第二个上升沿所需要的时间

占空比 高电平持续时间/T  高电平时间越长,占空比越大。占空比可以实现对电机转速的调节、舵机的转向角度,还可以使LED呈现出呼吸灯的效果。

                

PWM在51单片机和32单片机的不同

对于单片机,51单片机内部没有PWM信号产生的硬件,所以我们只能通过定时器软件模拟PWM信号。而32单片机内部集成了PWM信号产生的硬件,所以我们可以直接通过定时器产生PWM信号。

舵机的原理

舵机的控制就是通过一个固定的频率,给其不同的占空比的,来控制舵机不同的转角

舵机的频率一般为频率为50HZ,也就是一个20ms左右的时基脉冲,而脉冲的高电平部分一般为0.5ms-2.5ms范围。来控制舵机不同的转角

500-2500us的PWM高电平部分对应控制180度舵机的0-180度

以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms————–0度;

1.0ms————45度;

1.5ms————90度;

2.0ms———–135度;

2.5ms———–180度;

呼吸灯加舵机实验

LED->PB5,舵机信号线->PB6。

配置过程

TIME3 这里把普通GPIO PB5映射为TIME3_CH2;

选择PWM Generation CH2;

预分频为7200-1;

向上计数;

计数周期为100-1  经过定时器定时时间计算 为0.0001s*100=0.01s;

自动重装载使能;

模式为:PWM1;

TIME 4配置 把普通GPIO复用为TIME4_CH1;

选择PWM Generation CH1;

预分频为7200-1;

向上计数;

计数周期为200-1  经过定时器定时时间计算 为0.0001s*200=0.02s=20ms;

自动重装载使能;

模式为:PWM1;

生成配置代码

TIM3

TIM4

相关GPIO设置

注意在配置PB5的代码中调用了 __HAL_AFIO_REMAP_TIM3_PARTIAL();这个宏,而PB6没有。这就是我什么在上面配置过程中说PB5映射、PB6复用。

__HAL_AFIO_REMAP_TIM3_PARTIAL();这个宏,通过注释可以知道,这个宏就是重映射的作用。

根据数据手册可知,PB5没有复用为TIM3_CH2的功能,但是可以映射为TIM3_CH2。

实验代码

声明变量

使能定时器

While(1)进行主要操作

代码分析

__HAL_TIM_SET_COMPARE()这个宏的使用,功能是将计数值与_COMPARE_进行比较,我们采用的是PWM1模式,这个模式是若计数值小于_COMPARE_时,被认为是高电平,高于_COMPARE_时,被认为低电平。PMW2模式与其相反,小于比较值时,被人为低电平,高于比较值时,被人为高电平。这样就形成了PWM方波。

PWM1模式:

        

__HAL_TIM_SET_COMPARE()宏的源码

刚开始没有优化代码,没有使用LED_Compare_Value,这个变量,结果是LED可以逐渐变暗,到亮灯的时候,直接就亮了,而且舵机是一直在左右小幅度摆动。经研究发现,当PWM_Compare_Value为100时,PWM_Compare_Value%100=0,那么PWM占空比为0,我的开发板的LED是低电平亮,所以灯直接亮,并不是逐渐亮的,所以我将PWM_Compare_Value%100修改为PWM_Compare_Value%200,在临界点我对PWM_Compare_Value进行分割处理,再使用一个变量LED_Compare_Value接住PWM_Compare_Value的值,这样就使临界点两边的电平升降形成对称。对于舵机摇摆问题,我发现是延时时间太短,定时器4处理太快的问题,那么可以再PWM_Compare_Value>30做一个临界点,使用定时器3,做一个延时,加上HAL_Delay(25),就延时了55ms,这样舵机就可以正常自动转动角度 0度、45度、90度、135度、180度。

作者:best_xo

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 HAL库定时器PWM功能详解笔记

发表回复