您的位置:首页 > 其它

stm32 pwm实现过程

2017-10-19 10:58 169 查看
如果要从某IO端口输出PWM脉冲,相应的工作如下:

1.需要一个定时器实现周期循环计数

2.设置每个循环周期的比较值,从而实现占空比

3.配置某个IO口味定时器的PWM复用功能

例如:实现STM32 的 GPIOB_5 管脚输出PWM脉冲:

(stm32的定时器都有4个通道,PWM有4种模式,主要区别在于高低电平变化的时刻不同)

1.查询芯片手册,GPIOB_5 的复用功能对应定时器3的通道二

2.设置GPIOB_5 端口为复用推挽输出功能

3.设置定时器3的对应的GPIO复用重映射,即可以将定时器的4个通道,通过映射方式设置到不同的io管脚,这里选择部分映射后,通道二就映射到了GPIOB_5 管脚

4.设置定时器3工作在重载向上计数功能,可以设置一个重载预装值

5.设置PWM的工作模式和极性

6.然后将定时器3的通道2初始化设置的PWM模式

7.启动定时器3

8.PWM脉冲高低电平的输出取决于TIMx_ARR和TIMx_CCRx

TIMx_ARR就是定时器3的重装值,定时器3会从0开始计数到重装值后,又从0开始计数,如此反复。而这个计数周期是作为PWM脉冲的频率周期。

也就是在此计数周期内实现一个PWM脉冲周期。例如定时器3重装值=8,即8个定时器脉冲实现从0计数到8.而这8个定时器周期详单与1个pwm脉冲周期,如4个定时器周期是高电平,4个定时器周期为低电平。其中的4由TIMx_CCRx决定。



9.PWM脉冲周期计算

比如:定时器3的时钟频率 为 72MHZ, 重装值为:8, 则PWM的脉冲频率为 72/8 = 9MHZ

TIMx_CCRx决定占空比,可以在PWM脉冲输出的过程中随时改变,从而可以用来控制电机的速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: