STM32通用定时器PWM输出

脉冲宽度调制(Pulse Width Modulation),是利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术。

PWM(脉冲宽度调制)是一种对模拟信号电平进行数字编码的方法,我们手头的单片机只能输出0或5V的数字信号而不能输出模拟信号,那么如果想使用单片机来获得一个模拟电压信号,则需通过使用单片机配合程序改变IO口输出的方波的占空比从而获得使用数字信号来模拟的模拟电压信号。这里涉及到了PWM脉宽调制的重要指标:占空比

占空比通常用字母q来表示,是指电路被接通的时间(t高电平)占整个电路工作周期T的百分比。用公式来描述就是:

占空比=t高电平/T

举个栗子,假设一个电路在它一个工作周期中有一半时间被接通了,那么它的占空比就是50%。如果加在该工作元件上的信号电压为5V,则实际的工作电压平均值或电压有效值就是2.5V。那么我们回到单片机上来看一看,单片机的IO口依然输出的是数字信号,因为满幅值的直流供电只有5V(1)和0V(0)两种。电压是以一种连接(1)或断开(0)的重复脉冲序列被夹到模拟负载上去的(例如LED灯,直流电机等),连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值(即0~5V之间任意大小)的模拟电压。例如下图:

图片3.png

经过上文中对占空比的讲解,相信同学们应该能够理解这个有效电压是如何产生的了吧~当然,如果上图中这种信号加在LED灯上,我们应该能够看到LED灯发生什么现象呢?下面有两个选项:

A. 连续发光,并发出稍微暗一点的光

B. 一会亮,一会灭,闪烁发光

如果你选择的是A,那么恭喜你,非常正确!如果你选择的是B,那么恭喜你,你也答对了。这是怎么回事儿呢?因为这里面还涉及到PWM一个比较重要的描述指标,叫做信号频率

怎么解释这个频率呢?我们都写过过点亮LED灯的程序,可以想象一下,如果我假设上图中占空比为50%的波形信号频率为1Hz,也就是高电平持续0.5s,低电平持续0.5s,信号周期为1s,那么我们看到的灯是什么样的状态呢?没错,就是在闪烁,因此选B,没毛病。但是试想一下,如果我让这个信号的频率变大,让它变为1KHz,也就是说每个周期时长仅有1ms,那么高电平在每个周期内持续0.5ms,低电平也持续0.5ms,这样一来,你还能看得见LED灯在闪烁嘛?看不出来了吧?为什么呢?因为人眼反应不过来啦!不用说1KHz了,就是我们日常教室头顶上的日光灯管,以50Hz的频率闪烁,我们就看不出来它有闪烁的感觉了呦喂。因此呢,当频率加上来的时候,我们看不出来它在闪烁,那么这个LED灯会一直亮,但是它的亮度和完全加高电平的时候一样亮吗?当然不是啦,这个亮度,就完全由刚才所讲到的占空比q来控制啦~当然控制直流电机的转速,也是如此

 

STM32的8个定时中,除了基本定时器TIM6与TIM7之外,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生高达7路的PWM输出。通用定时器TIM2~TIM5可以同时产生多达4路PWM输出。

1.脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、TIMx_CCRx寄存器确定占空比的信号,在TIMx_CCMRx寄存器中的OCxM位写入‘110’(PWM模式1)或‘111’(PWM模式2),能够独立设置每个OCx输出通道产生一路PWM,下图以通道1为例。设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或者中心对称模式中)使能自动重装载的预装载寄存器。OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP位设置,置0为高电平有效。TIMx_CCER寄存器中的CCxE位控制OCx输出使能,置0时关闭。

2.向上计数的配置

3.相关寄存器描述    

    1.通过对OC1M[2:0]的配置来设置PWM的模式,最终作用于输出模式控制器。

    2.捕获/比较使能寄存器

    3.捕获/比较寄存器TIMx_CCR1~4

    该寄存器共有4个,以TIMx_CCR1为例。在输出模式下,该寄存器的值与CNT的值比较,根据比较结果产生相应动作。利用这一点,我们通过修改这个寄存器的值,就可以控制PWM的输出脉宽。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值