📂 分类:嵌入式单片机📊 经验级别:初级⭐ 难度:★★☆☆☆📝 题型:基础操作题
本文概述
STM32定时器PWM输出配置的核心是设置定时器时基、选择PWM模式、配置占空比和输出通道。关键步骤包括:开启定时器和GPIO时钟、配置GPIO为复用推挽输出、设置定时器预分频和自动重装载值决定PWM频率、设置比较寄存器值决定占空比、选择PWM模式1或模式2、最后使能输出和定时器。高级定时器还要配置主输出使能位。
核心要点速览
PWM频率 = 定时器时钟 / (预分频+1) / (自动重装载值+1)
占空比由比较寄存器CCR的值决定,占空比 = CCR / ARR
PWM模式1是向上计数时CNT
高级定时器TIM1/TIM8要额外设置MOE主输出使能位
互补输出和死区设置用于电机驱动等需要桥臂控制的场景

面试官考察点
考察候选人对STM32定时器PWM配置流程的熟悉程度,判断是否理解各个寄存器的作用,还是只会用CubeMX生成代码而不懂原理。
回答思路
第一,开启时钟和GPIO配置
首先开启对应定时器的时钟和GPIO端口时钟。然后把PWM输出对应的GPIO引脚配置为复用推挽输出模式,速度选合适的等级。要查数据手册确认引脚对应的定时器通道和复用功能编号。
第二,设置定时器时基
PWM的频率由定时器时钟、预分频系数PSC和自动重装载值ARR共同决定。公式是PWM频率等于定时器时钟除以PSC加1,再除以ARR加1。PSC和ARR都是16位寄存器,取值范围0到65535。根据需要的频率来计算合适的PSC和ARR组合。
第三,配置PWM模式和占空比
每个通道都有对应的捕获比较寄存器CCR,CCR的值决定占空比。PWM模式有两种:模式1是向上计数时CNT小于CCR输出有效电平,模式2相反。常用的是模式1。占空比等于CCR值除以ARR值,要修改占空比直接改CCR就行。
第四,使能输出和启动定时器
设置CCER寄存器的对应位来使能通道输出。注意高级定时器TIM1和TIM8还要设置BDTR寄存器的MOE位,也就是主输出使能,否则通道不会输出波形。最后设置CR1寄存器的CEN位启动定时器。
第五,高级功能补充
高级定时器还有互补输出和死区时间设置,用在电机驱动、开关电源等需要上下桥臂控制的场景。死区时间由BDTR寄存器的DTG位配置,要根据外部功率管的开关延迟来设置合适的死区,防止上下桥臂直通。
面试官追问
PWM模式1和模式2有什么区别?
参考回答:模式1是向上计数时,计数器CNT小于CCR值时输出有效电平,大于时输出无效电平;模式2正好相反,CNT小于CCR时输出无效电平,大于时输出有效电平。两者波形正好反相,根据需要选择即可。
怎么实现PWM频率动态调整?
参考回答:动态修改ARR寄存器的值就可以改变PWM频率。但要注意修改ARR时如果不使用预装载功能,可能会在当前周期就生效,导致波形异常。建议设置ARPE位启用自动重装载预装载,让ARR的更新在下一个更新事件时生效。
高级定时器为什么输出没波形?
参考回答:最常见的原因是忘了设置BDTR寄存器的MOE位,也就是主输出使能位。通用定时器TIM2到TIM5没有这个限制,直接使能CCxE就有输出。另外还要检查GPIO复用功能是否配置正确、定时器时钟有没有开启。
怎么用PWM实现DAC功能?
参考回答:用PWM加RC低通滤波就可以实现简易的数模转换。PWM频率越高、滤波级数越多,输出纹波越小,但响应速度也越慢。一般PWM频率选在几十千赫兹,RC时间常数选PWM周期的10倍以上,可以得到比较平滑的直流输出。
失分表达
所有STM32定时器的PWM配置都一样
占空比可以超过100%
高级定时器和通用定时器配置没区别
修改PWM参数随时改就行,不用考虑时机
准备动作
熟悉STM32定时器的基本结构:时基单元、捕获比较通道、死区生成
能手动计算给定频率和占空比下PSC、ARR、CCR的取值
理解PWM模式1和模式2的区别及适用场景
了解高级定时器MOE位、互补输出、死区时间的概念
核心关键词:STM32定时器,PWM输出配置,占空比,高级定时器,电机驱动,嵌入式单片机面试,CubeMX,定时器时基

扫码关注





























