You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

STM32多通道PWM输出异常:仅通道1有输出,通道2无输出求助

解决STM32 TIM3通道2无PWM输出的问题

你遇到的情况很常见——明明启动了两个PWM通道,却只有一个正常工作。下面是几个优先级从高到低的排查方向,你可以一步步验证:

1. 先补全通道2的CCR寄存器赋值

你只给TIM3->CCR1设置了25000,但通道2对应的是TIM3->CCR2寄存器。如果没给CCR2赋值,它的默认值是0,这意味着占空比为0,示波器自然看不到波形。赶紧加上这行代码:

TIM3->CCR2 = 25000;

这是最容易忽略的点,先把这个补上,大概率能解决问题。

2. 验证CubeMX的初始化配置是否正确

如果是用CubeMX生成的初始化代码,得确认通道2的配置没出错:

  • 打开TIM3的配置页面,检查Channel 2的Mode是否设为PWM Generation CH2(别不小心设成了输入捕获或者其他模式)
  • 查看通道2对应的GPIO引脚,必须配置为Alternate Function Push Pull(复用推挽输出),并且Alternate Function映射正确(比如TIM3在多数STM32型号里对应AF2)
  • 确认TIM3的外设时钟已经在CubeMX里开启,没开时钟的话整个定时器都不会工作

3. 检查通道2的PWM模式与极性设置

启动通道只是第一步,还要确保模式配置正确:

  • 查看TIM3->CCMR1寄存器,通道2的模式位(OC2M)需要设置为PWM模式(比如PWM模式1是011,模式2是111),如果是其他模式,就不会输出正常的PWM
  • 检查极性位(OC2P),如果设置为低电平有效,可能你的示波器默认测高电平触发,会误以为没有输出,默认一般设为高电平有效更直观

4. 排查硬件连接问题

软件配置没问题的话,就得看硬件了:

  • 确认你用的引脚确实是TIM3_CH2的对应引脚(不同STM32型号引脚映射不同,比如STM32F103C8T6的TIM3_CH2是PA7,STM32F407的是PB5)
  • 检查引脚有没有虚焊、短路,或者被其他电路占用了
  • 可以用万用表先测一下引脚的静态电平,再结合示波器看动态变化,排除硬件故障

5. 确认TIM的ARR寄存器值是否合理

PWM的周期由TIM3->ARR(自动重装载寄存器)决定,你的CCR值是25000,必须保证ARR的值≥25000,否则CCR会被截断,导致占空比异常。比如如果ARR是20000,那25000会被当成0处理,自然没有输出。你可以查看TIM3->ARR的实际值是否符合预期。

先从第一个方向开始排查,补全CCR2的赋值,这是最常见的疏漏。如果还是不行,再依次检查后面的点。

内容的提问来源于stack exchange,提问作者Nick Sun

火山引擎 最新活动