STM32配置PWM完成呼吸灯

一、PWM介绍

01 简介

  • 脉冲宽度调制(英语:Pulse-width modulation,缩写:PWM),简称脉宽调制,是将模拟信号转换为脉波的一种技术,一般转换后脉波的周期固定,但脉波的工作周期会依模拟信号的大小而改变。
  • 在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效的获得所需要的的模拟参量,常应用于电机控速等领域
  • 参数:频率、分辨率=占空比变化步距、占空比=Ton / Ts在这里插入图片描述

02 呼吸灯工作原理

呼吸灯:顾名思义,灯光的亮度在控制下不断的在亮和灭之间逐渐变化,感觉好像是人在呼吸。控制LED的亮度总体有两种方法,一种是给LED灯上施加模拟信号(可以串接可调电阻或DAC输出模拟信号),通过改变流经LED上的电流控制LED灯的亮度;另一种是使用PWM,给LED灯上施加数字信号,通过调整数字信号的占空比(调整占空比 = 调整有效值)来控制LED灯的亮度。这里我们的呼吸灯就是采用第二种PWM的方法实现。

PWM脉冲宽度调制,是利用数字输出对模拟电路进行控制的一种非常有效的技术。通过改变PWM的占空比从而改变输出电平的有效值,在LED的亮度上反应出来,如果占空比能够由小变大再变小,在LED上反应出的效果就是呼吸灯的效果。
在这里插入图片描述
如上图所示,脉冲信号的周期为T,高电平脉冲宽度为t,占空比为t/T。为了实现PWM脉宽调制,我们需要保持周期T不变,调整高电平脉宽t的时间,从而改变占空比。

  • 当t = 0时,占空比为0%,因为我们的LED硬件为低电平点亮,所以为最亮的状态。
  • 当t = T时,占空比为100%,LED灯为最暗(熄灭)的状态。

03 PWM模式

脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。 在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。 仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIMx_EGR寄存器中的UG位来初始化所有的寄存器。 OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP位设置,它可以设置为高电平有效或低电平有效。TIMx_CCER寄存器中的CCxE位控制OCx输出使能。详见TIMx_CCERx寄存器的描述。 在PWM模式(模式1或模式2)下,TIMx_CNT和TIMx_CCRx始终在进行比较,(依据计数器的计数方向)以确定是否符合TIMx_CCRx≤TIMx_CNT或者TIMx_CNT≤TIMx_CCRx

模式 描述
冻结 CNT=CCR时,REF保持为原状态
匹配时置有效电平 CNT=CCR时,REF置有效电平
匹配时置无效电平 CNT=CCR时,REF置无效电平
匹配时电平翻转 CNT=CCR时,REF电平翻转
强制为无效电平 CNT与CCR无效,REF强制为无效电平
强制为有效电平 CNT与CCR无效,REF强制为有效电平
PWM模式1 向上计数:CNT<CCR时,REF置有效电平,CNT≥CCR时,REF置无效电平
向下计数:CNT>CCR时,REF置无效电平,CNT≤CCR时,REF置有效电平
PWM模式2 向上计数:CNT<CCR时,REF置无效电平,CNT≥CCR时,REF置有效电平
向上计数:CNT<CCR时,REF置无效电平,CNT≥CCR时,REF置有效电平

04 PWM基本结构

在这里插入图片描述

05 参数计算

在这里插入图片描述

06 STM32F103C8T6的PWM引脚

并不是每个引脚都可以输出PWM的波形,每个引脚都有不同的复用功能,下图可以清晰看出每个引脚的功能服用,容量越大的STM32芯片,引脚越多,可以用来配置的TIM定时器越多,可以输出的PWM引脚也就更多一点。
请添加图片描述

二、HAL库呼吸灯小练习

01 题目要求

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值