STM32定时器——定时器输出PWM的呼吸灯应用

前言

定时器除了有定时功能,还有输出PWM方波的功能等等。二者本质上是相同的,都是用到了定时器的计数功能。PWM方波的频率由预分频器提供。PWM的脉宽由捕获比较寄存器决定。

三种定时器的区别(看应用场景)

三种定时器有细微的区别,根据自己的需求选择合适的定时器使用。
定时器

捕获/比较通道

捕获比较通道对应着32的许多应用至关重要,捕获比较通道有捕获与比较两个功能,两个功能可以分别单独使用。输入时用捕获功能,输出时用比较功能,本篇PWM自然是使用输出比较功能。下面是捕获比较通道相关寄存器的设置:

捕获/比较模块由一个预装载寄存器和一个影子寄存器组成。读写过程仅操作预装载寄存器。
在捕获模式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。
在比较模式下,预装载寄存器的内容被复制到影子寄存器中,然后影子寄存器的内容和计数器进行比较。
CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。
CCMR1: OC1M[2:0]位:对于PWM方式下,用于设置PWM模式1【110】或者PWM模式2【111】
CCER:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。
CCER:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。

输出部分

PWM 输出模式配置

  • 使能定时器和相关IO口时钟
  • 初始化IO口为复用功能输出
  • 配置TIMx_ARR寄存器确定频率
  • 配置TIMx_CCRx寄存器确定占空比
  • 配置TIMx_CCMRx寄存器中的OCxM位确定(PWM模式1)或(PWM模式2)
  • 配置TIMx_CCMRx寄存器中的OCxPE位使能相应的预装载寄存器
  • 配置TIMx_CR1寄存器的ARPE位使能自动重装载的预装载寄存器
    PWM

自动装载寄存器TIMx_ARR是预先装载的,也就是说自动装载寄存器的值是从预装载寄存器读取到的。当你需要写或读自动装载寄存器时,你将访问的是预装载寄存器而并非自动装载寄存器。根据控制寄存器TIMx_CR1中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。

要输出一个PWM信号到某个引脚,就需要设置一些相关的寄存器。相关寄存器设置如下:

OCPE
buh
ARPE
106105

简单的说,ARPE=1,ARR立即生效。ARPE=0,ARR下个比较周期生效。

STM32 定时器3输出通道引脚

IO复用功能是使用定时器前必须要掌握的,相应的IO复用重映像查看参考手册的表格,如下:
映射

实验:呼吸灯

改变PWM的占空比实现呼吸灯的效果,即改变CCR寄存器的值

TIM_OCInitStructure.TIM_OutputState
使能计数器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值