【STM32】通用定时器的PWM输出(实例:PWM输出) 您所在的位置:网站首页 比较参数 【STM32】通用定时器的PWM输出(实例:PWM输出)

【STM32】通用定时器的PWM输出(实例:PWM输出)

#【STM32】通用定时器的PWM输出(实例:PWM输出)| 来源: 网络整理| 查看: 265

STM32F1xx官方资料:

《STM32中文参考手册V10》-第14章  通用定时器

 

通用定时器PWM概述 STM32定时器输出通道引脚

这里以TIM3为例来讲解。STM32的通用定时器分为TIM2、TIM3、TIM4、TIM5,而每个定时器都有独立的4个通道可以用来作为:输入捕获、输出比较、PWM输出、单脉冲模式输出等。

STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生PWM输出。其中,高级定时器TIM1、TIM8可以同时产生7路PWM输出,而通用定时器可以同时产生4路PWM输出,这样STM32最多可以同时产生30路PWM输出!

从图中的内容可以看出,TIM3的4个通道相对应的各个引脚以及重映射情况下的各个引脚的位置。

PWM的工作原理

在通用定时器框图中,主要涉及到最顶上的一部分(计数时钟的选择)、中间部分(时基单元)、右下部分(PWM输出)这三个部分。这里主要讲解一下右下部分(PWM输出),其他两个部分可以参考文章:【STM32】通用定时器的基本原理(实例:定时器中断)。

下面以向上计数为例,简单地讲述一下PWM的工作原理:

在PWM输出模式下,除了CNT(计数器当前值)、ARR(自动重装载值)之外,还多了一个值CCRx(捕获/比较寄存器值)。当CNT小于CCRx时,TIMx_CHx通道输出低电平;当CNT等于或大于CCRx时,TIMx_CHx通道输出高电平。

这个时候就可以对其下一个准确的定义了:所谓脉冲宽度调制模式(PWM模式),就是可以产生一个由TIMx_ARR寄存器确定频率,由TIMx_CCRx寄存器确定占空比的信号。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

PWM的通道概览

每一个捕获/比较通道都是围绕着一个捕获/比较寄存器(包含影子寄存器),包括捕获的输入部分(数字滤波、多路复用和预分频器),和输出部分(比较器和输出控制)。

捕获/比较模块由一个预装载寄存器和一个影子寄存器组成。读写过程仅操作预装载寄存器。

在捕获模式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。 在比较模式下,预装载寄存器的内容被复制到影子寄存器中,然后影子寄存器的内容和计数器进行比较。

CCR1寄存器:捕获/比较值寄存器:设置比较值;CCMR1寄存器:OC1M[2:0]位:对于PWM方式下,用于设置PWM模式1或者PWM模式2;CCER寄存器:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。CCER寄存器:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。 PWM输出的模式区别

通过设置寄存器TIMx_CCMR1的OC1M[2:0]位来确定PWM的输出模式:

PWM模式1:在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。PWM模式2:在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。

注意:PWM的模式只是区别什么时候是有效电平,但并没有确定是高电平有效还是低电平有效。这需要结合CCER寄存器的CCxP位的值来确定。

例如:若PWM模式1,且CCER寄存器的CCxP位为0,则当TIMx_CNT300)dir=0; if(led0pwmval==0)dir=1; TIM_SetCompare2(TIM3,led0pwmval); } }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有