STM32学习笔记通用定时器PWM输出.pdf
《STM32学习笔记通用定时器PWM输出.pdf》由会员分享,可在线阅读,更多相关《STM32学习笔记通用定时器PWM输出.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、STM32 学习笔记(5):通用定时器 PWM 输出 2011年3月30日 TIMER 输出 PWM 1.TIMER 输出 PWM 基本概念 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进 行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。STM32 的定时器除了 TIM6 和 TIM7 之外,其他的定时器都可以用来产生 PWM 输出,其中高级定时器 TIM1 和 TIM8 可以同时 产生 7 路的 PWM 输出,而通用定时器也能同时产生 4 路的 PWM 输出
2、。1.1PWM 输出模式 STM32 的 PWM 输出有两种模式,模式 1 和模式 2,由 TIMx_CCMRx 寄存器中的 OCxM 位确定的(“110”为模式 1,“111”为模式 2)。模式 1 和模式 2 的区别如下:110:PWM 模式 1在向上计数时,一旦 TIMx_CNTTIMx_CCR1 时通道 1 为无效电平(OC1REF=0),否则为有效电平(0C1REF=1)。111:PWM 模式 2在向上计数时,一旦 TIMx_CNTTIMx_CCR1 时通道 1 为有效电平,否则为无效电平。由此看来,模式 1 和模式 2 正好互补,互为相反,所以在运用起来差别也并不太大。而从计数模式
3、上来看,PWM 也和 TIMx 在作定时器时一样,也有向上计数模式、向下计数模式和中心对齐模式,关于 3 种模式 的具体资料,可以查看 STM32 参考手册的“14.3.9 PWM 模式”一节,在此就不详细赘述了。1.2PWM 输出管脚 PWM 的输出管脚是确定好的,具体的引脚功能可以查看 STM32 参考手册的“8.3.7 定时器复用功能重映射”一节。在此需 要强调的是,不同的 TIMx 有分配不同的引脚,但是考虑到管脚复用功能,STM32 提出了一个重映像的概念,就是说通过设置 某一些相关的寄存器,来使得在其他非原始指定的管脚上也能输出 PWM。但是这些重映像的管脚也是由参考手册给出的。比
4、如 说 TIM3 的第 2 个通道,在没有重映像的时候,指定的管脚是 PA.7,如果设置部分重映像之后,TIM3_CH2 的输出就被映射到 PB.5 上了,如果设置了完全重映像的话,TIM3_CH2 的输出就被映射到 PC.7 上了。1.3 PWM 输出信号 PWM 输出的是一个方波信号,信号的频率是由 TIMx 的时钟频率和 TIMx_ARR 预分频器所决定的,具体设置方法在前面一个学 习笔记中有详细的交代。而输出信号的占空比则是由 TIMx_CRRx 寄存器确定的。其公式为“占空比=(TIMx_CRRx/TIMx_ARR)*100%”,因此,可以通过向 CRR 中填入适当的数来输出自己所需
5、的频率和占空比的方波信号。2.TIMER 输出 PWM 实现步骤 1.设置 RCC 时钟;2.设置 GPIO 时钟;3.设置 TIMx 定时器的相关寄存器;4.设置 TIMx 定时器的 PWM 相关寄存器。第 1 步设置 RCC 时钟已经在前文中给出了详细的代码,在此就不再多说了。需要注意的是通用定时器 TIMx 是由 APB1 提供时钟,而 GPIO 则是由 APB2 提供时钟。注意,如果需要对 PWM 的输出进行重映像的话,还需要开启引脚复用时钟 AFIO。第 2 步设置 GPIO 时钟时,GPIO 模式应该设置为复用推挽输出 GPIO_Mode_AF_PP,如果需要引脚重映像的话,则需要
6、 用 GPIO_PinRemapConfig()函数进行设置。第 3 步设置 TIMx 定时器的相关寄存器时,和前一篇学习笔记一样,设置好相关的 TIMx 的时钟和技术模式等等。具体设 置参看“TIMER 基本定时功能”的学习笔记。第 4 步设置 PWM 相关寄存器,首先要设置 PWM 模式(默认情况下 PWM 是冻结的),然后设置占空比(根据前面所述 公式进行计算),再设置输出比较极性:当设置为 High 时,输出信号不反相,当设置为 Low 时,输出信号反相之后再输出。最 重要是是要使能 TIMx 的输出状态和使能 TIMx 的 PWM 输出使能。相关设置完成之后,就可以通过 TIM_Cm
7、d()来打开 TIMx 定时器,从而得到 PWM 输出了 3.TIMER 输出 PWM 源代码 由于我现在手上的奋斗开发板是将 PB.5 接到 LED 上,因此需要使用 TIM3 的 CH2 通道,并且要进行引脚重映像。打开 TIM3 之后,PWM 输出,使得 LED 点亮,通过改变 PWM_cfg()中的占空比可以调节 LED 的亮度。#include stm32f10 x_lib.h void RCC_cfg();void GPIO_cfg();void TIMER_cfg();void PWM_cfg();/占空比,取值范围为 0-100 int dutyfactor=50;int ma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 学习 笔记 通用 定时器 PWM 输出
限制150内