单片机输出PWM的常见方法和注意事项

💡 原文中文,约3900字,阅读约需10分钟。
📝

内容提要

PWM技术是一种广泛应用于电机速度控制、灯光调节和通信调制等领域的技术。本文介绍了PWM的概念、常见输出方式和使用定时器和硬件控制输出PWM的方法。文章以STM32F1为例演示了硬件定时器输出PWM波形的配置和注意事项。

🔎

延伸解读

四种PWM输出方式的CPU占用与精度差异

文章将PWM输出分为四个级别:阻塞延时、非阻塞延时、定时器中断和硬件PWM。前两种方式不仅占用CPU,误差也较大;定时器中断方式在频率较高时CPU消耗严重,适合没有硬件PWM的单片机;硬件PWM则无需CPU干预,可自动输出波形。选择时需权衡CPU资源和精度要求。

硬件PWM配置中的引脚映射与参数越界风险

以STM32F1为例,若使用需要重映射的引脚(如PB11),必须使能AFIO时钟并调用GPIO_PinRemapConfig进行映射配置。此外,计算频率和占空比时,16位定时器的tim_period和tim_pulse不能超过65535,实际代码应增加参数判断以防越界。

频率与占空比精度的硬件限制

文章指出,使用32位定时器可获得更宽的频率范围和更高精度(如0.01Hz、0.01%占空比),而16位定时器受限于65535的最大值。精度还取决于PWM计数时钟和预分频值的配置,需根据应用需求调整。

不同STM32系列PWM配置的差异性

虽然STM32普遍具有硬件PWM功能,但不同系列的配置可能存在差异。文章建议参考官方例程和手册进行适配,避免直接套用其他系列的代码导致配置错误。

❓

Q&A

PWM是什么?它主要应用在哪些领域?

PWM是脉冲宽度调制(Pulse Width Modulation),由高低电平组成的脉冲信号构成。通过改变频率和占空比,可应用于电机速度控制、灯光亮度调节和通信调制等领域。

单片机输出PWM有哪几种常见方式?

常见方式有四种:1. 阻塞延时控制IO高低电平;2. 非阻塞延时控制IO高低电平;3. 定时器中断控制IO高低电平;4. 硬件PWM控制输出。

硬件PWM输出相比其他方式有什么优势?

硬件PWM输出无需CPU干预,可自动输出PWM波形,适合高频率应用,能减少CPU资源占用。而阻塞延时、非阻塞延时和定时器中断方式都需要CPU参与,占用CPU资源且可能误差较大。

以STM32F1为例,如何配置硬件定时器输出PWM?

配置步骤包括:使能GPIO和定时器时钟,配置引脚为复用推挽输出,设置时基结构(预分频值、计数模式、周期等),配置PWM模式(如PWM1模式、使能输出、脉宽、极性),然后通过函数设置频率和占空比并启动定时器。

配置STM32的PWM时需要注意哪些问题?

需要注意:1. 引脚映射,若使用需要重映射的引脚,要配置AFIO和重映射寄存器;2. 频率和占空比精度,16位定时器参数不能超过65535,32位定时器可达到更高精度;3. 不同系列STM32配置可能有差异,建议参考官方例程和手册。

如果没有硬件PWM输出功能,可以用什么方式实现PWM?

可以使用定时器中断的方式控制IO口输出高低电平,但这种方式在频率较高时CPU消耗较大,适合没有硬件PWM输出的单片机。

🏷️

标签

➡️

继续阅读