PWM呼吸灯
前言
在上一章《STM32CubeMX实战教程(四)——基本定时器(还是点灯)》中,已经介绍过基本定时器的功能及用法,在这一章中,我讲主要介绍一下通用定时器的相关功能以及配置方法,废话不多,直接进入主题。
通用定时器
在STM32F4中,TIM2到TIM5为通用定时器,主要特性如下:
- 16 位(TIM3 和 TIM4)或 32 位(TIM2 和 TIM5)递增、递减和递增/递减自动重载计数器
- 16 位可编程预分频器,用于对计数器时钟频率进行分频 (即运行时修改),分频系数介于 1 到 65536 之间
- 多达 4 个独立通道,可用于:
- 输入捕获
- 输出比较
- PWM 生成(边沿和中心对齐模式)
- 单脉冲模式输出
- 使用外部信号控制定时器且可实现多个定时器互连的同步电路
- 发生如下事件时生成中断/DMA 请求:
- 更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
- 触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
- 输入捕获
- 输出比较
- 支持定位用增量(正交)编码器和霍尔传感器电路
- 外部时钟触发输入或逐周期电流管理
TIM9到TIM14也属于通用定时器,但这几个定时器的具体功能每一个都有些许不同,可以在STM32CubeMX中查看,这里不多解释。
材料
- 正点原子探索者开发板,芯片为STM32F407GZT6
- 开发板的原理图
- STM32F4系列HAL库开发手册
- STM32CubeMX
- keil5
PWM
PWM简介
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调试。是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。

例如上图中,图b)是微处理输出的数字信号,实际上他接到电机等功率设备上时,效果相当于图a)。这就是PWM调制。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相当于输出一个1.65V的高电平。脉冲调制有两个重要的参数,第一个就是输出频率,频率越高,则模拟的效果越好。第二个就是占空比。占空比就是改变输出模拟效果的电压大小。占空比越大则模拟出的电压越大。
PWM输出主要HAL库函数
看到我们HAL库开发手册定时器章节的PWM这一块,可以看到已经给我们提供了很多的API接口,下面我将对每个函数稍加介绍。

前四个函数是对PWM的初始化和禁用,这几个函数STM32CubeMX会自动帮我们配置并调用的,基本不需理会。
后面六个函数是开启或关闭PWM,有 IT 后缀的函数在开启或关闭的同时使能或关闭PWM中断,有DMA后缀的函数在开启或关闭PWM的同时使能或关闭DMA
工程配置
根据原理图,板子上只有一个可配置成定时器输出的灯,并且为TIM14,那么接下来我就以TIM14为例进行PWM输出的配置,其他定时器道理大同小异


RCC时钟源选择外部晶振

然后依旧是将主频配置为

本文深入解析STM32通用定时器TIM2-TIM5及TIM9-TIM14的PWM输出功能,包括计数器参数、PWM参数配置、代码实现呼吸灯效果,适合初学者理解PWM原理及应用。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



