STM32Cube学习(5)——PWM

本文介绍如何使用STM32CubeIDE配置STM32F407ZGT6单片机的TIM14通道,通过设置PWM来实现呼吸灯效果。详细阐述了计数器配置、PWM频率计算以及占空比调整,提供了相关代码参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、引言

单片机:STM32F407ZGT6;
仿真器:ST Link V2;
开发环境:STM32CubeIDE 1.10.1;
功能说明:使用单片机定时器产生PWM实现呼吸灯效果。

前情提要:
STM32Cube学习(1)——点灯&配置
STM32Cube学习(2)——定时器中断
STM32Cube学习(3)——ADC
STM32Cube学习(4)——UART串口

参考资料:
【STM32】HAL库 STM32CubeMX教程七—PWM输出(呼吸灯)
STM32F4数据手册

2、STM32CubeIDE配置

选择TIM14通道,使能Channel1为PWM(因为开发板LED管脚是这个)
在这里插入图片描述

在参数设置中,配置如下
Counter Settings计数器配置:
Prescaler(分频器)——71
Counter Mode(计数器模式)——Up
Counter Period(计数器周期)——499
auto-reload preload(自动重载初值)——使能
PWM Generation Channel 1:
Pulse(初始脉冲)——0
Output compare preload(输出比较预加载)——使

### 如何在STM32CubeIDE中设置和使用PWM输出 #### 定时器基础配置 对于STM32单片机而言,PWM输出基于定时器外设实现。为了使能并正确配置用于生成PWM信号的定时器,在STM32CubeMX图形界面工具内需先选定目标定时器(例如TIM1),随后调整其模式至PWM输出,并设定预分频系数(Prescaler)以及自动重载极限(Auto-reload Register)[^1]。 #### 高级特性——带死区控制的互补PWM 某些型号如STM32F103系列中的TIM1与TIM8属于高级定时器单元,能够支持更复杂的波形生成功能,比如带有可调死区时间的互补型PWM输出。当应用需求涉及到此类特殊形式的PWM脉冲序列时,则可在STM32CubeIDE环境下通过特定选项来激活这些增强属性[^2]。 #### 参数计算实例 假设系统主频为80MHz的情况下欲得到周期性的方波信号,此时可通过如下方式确定参数值:首先决定所需频率f=36kHz;其次依据公式`ARR=(SYSCLK/(Prescaler+1))/f-1`推算出合适的预分配比例PSC及自加载上限ARR数值。具体到本案例中,如果选取PSC等于79(即除以80),那么ARR应被指定成216-1[^3]。 ```c // 假定已初始化好相应硬件资源 __HAL_TIM_SET_AUTORELOAD(&htim3, 215); // ARR赋值操作 __HAL_TIM_SET_PRESCALER(&htim3, 79); // PSC赋值操作 ``` #### 调整比较寄存器(CCR) 最后一步涉及修改CCR寄存器内的数据以定义具体的占空比大小。此过程同样借助于宏指令完成,只需传入期望的比例因子即可改变最终输出电平高低的时间占比关系[^4]。 ```c __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 108); ``` 上述代码片段展示了如何针对通道2将CCRx寄存器更新为对应数值的过程,这里取半数作为例子表示实现了50%的占空度效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值