GD32VF103之PWM输出配置

GD32VF103之PWM输出配置

pwm在嵌入式系统中扮演者非常重要的角色,它可以控制显示屏和led的亮度、可以控制电机的转速和舵机的角度,通过pwm将数字的电压输出信号转化成了模拟电压的输出,通过控制占空比就可以调节输出的平均电压。

PWM原理 PWM频率与占空比详解_Z小旋-CSDN博客_pwm占空比(简单易懂)

Micropython——关于使用PWM信号来对LED灯进行控制_Xa_L-CSDN博客

我们知道,电压是以一种连接1或断开0的重复脉冲序列被夹到模拟负载上去的(例如LED灯,直流电机等),连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值(即0~5V之间任意大小)的模拟电压

比方说 占空比为50% 那就是高电平时间一半,低电平时间一半,在一定的频率下,就可以得到模拟的2.5V输出电压,那么75%的占空比,得到的电压就是3.75V。
在这里插入图片描述

pwm的调节作用来源于对“占周期”的宽度控制,“占周期”变宽,输出的能量就会提高,通过阻容变换电路所得到的平均电压值也会上升,“占周期”变窄,输出的电压信号的电压平均值就会降低,通过阻容变换电路所得到的平均电压值也会下降

也就是,在一定的频率下,通过不同的占空比 即可得到不同的输出模拟电压

pwm就是通过这种原理实现D/A转换的。

总结:
PWM就是在合适的信号频率下,通过一个周期里改变占空比的方式来改变输出的有效电压

PWM频率越大,相应越快,
 

频率很高时,看不到闪烁,占空比越大,LED越亮;
频率很低时,可看到闪烁,占空比越大,LED越亮。

pwm输出是基于定时器的一个功能,使用它需要进行下面的配置(以定时器1为例,定时器0没有成功):
1、时钟使能;
2、定时器配置;
3、gpio配置;
4、通道配置;
5、打开定时器;
6、更新比较值,改变pwm输出。

1、时钟使能

首先我们要打开外设的时钟,包括GPIO的时钟和定时器的时钟。GPIOA在APB2使能寄存器中配置,定时器1在APB1使能寄存器中。这些在前面的文章中已经介绍过,这里就不细说了。

代码如下:

2、定时器配置

定时器的配置比较简单,设置一下预分频,设置计数方向、对齐模式、自动重载值就可以了。自动重载值决定了pwm的周期。

定时器108分频后是1Mhz,所以2000的重载值周期为2ms。

3、GPIO配置

我这里使用定时器1的通道1,对应的GPIO是A1,设置A1为AFIO 推挽输出,T1CH1为1。

4、通道配置

pwm是输出,所以要将通道配置为输出模式,寄存器是通道控制寄存器 0 ,bit[9:8]设为00,表示通道1是输出;bit[14:12]设置为110,表示输出比较模式配置为pwm0。

设置通道的极性并使能通道,寄存器是通道控制寄存器 2 ,bit[5:4]这里设置为11,通道低电平有效。

比较寄存器在输出模式下存放了即将与计数器进行比较的值,它决定了输出pwm的占空比。主程序中就是改变它的值来调整pwm的输出。

代码如下:

5、打开定时器

上面都设置好后打开定时器就可以了。

6、更新比较值,改变pwm输出

在主程序中设置比较寄存器为500

得到波形如下所示:

设置比较寄存器为1500

得到波形如下:

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值