You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32G031中TIM1 CH1 PWM为何触发TIM3 CH1输入捕获

问题

我是嵌入式软件开发新手,目前基于STM32G031C6T6 MCU编写简单代码学习相关知识,遇到一个排查很久未找到根因的问题:

  • 配置TIM1通道1为PWM生成模式,输出到PA8引脚,单独测试功能运行正常
  • 配置TIM3通道1为输入捕获模式,设置为捕获PA6引脚的上升沿
  • 代码中通过以下两个接口启动对应定时器功能:
    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
    HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_1);
    
  • 程序运行后出现异常:每次TIM1生成的PWM信号输出上升沿时,TIM3的输入捕获都会被触发
  • 已完成排查验证:
    • 硬件上确认PA8与PA6之间无物理连接
    • 输入捕获通道已配置数字滤波,曾尝试将滤波参数设为最大值,可排除PWM通道噪声耦合触发的可能
    • 补充测试:该异常仅在使能TIM3通道1输入捕获时出现,TIM3其余3个通道工作完全正常
  • 附CubeMX配置截图:包含TIM3配置页、TIM1配置页

答案

这个问题的根因是TIM3通道1的捕获输入源被误配置为内部触发输入(TRC),未选择PA6引脚对应的直连TI1输入通道。

STM32通用定时器的每个输入捕获通道都支持三类输入源选择:

  • 对应引脚直连的TIx通道(TIM3_CH1对应PA6的直连输入为TI1,是正常输入捕获需要选的源)
  • 相邻通道的交叉输入(多用于单引脚测PWM周期、占空比的场景)
  • 内部触发输入TRC:走定时器之间的内部互连信号,仅用于主从定时器同步场景,不连接外部GPIO

你的现象完全匹配该配置错误的特征:

  1. STM32G031系列中,TIM3的ITR0内部触发源默认对应TIM1的比较匹配事件,TIM1_CH1输出PWM上升沿的时刻刚好是通道比较匹配触发的时刻,内部触发信号会直接通过片上互连线送到TIM3的TRC端,不需要经过外部引脚就能触发捕获
  2. 你配置的外部引脚数字滤波只对GPIO进来的外部信号生效,内部走的TRC触发信号根本不经过滤波电路,所以把滤波参数开到最大也无法屏蔽该误触发
  3. 仅TIM3_CH1出现异常、其余通道工作正常,也符合单通道输入源配置错误的特征

修复方法

  1. 打开CubeMX的TIM3配置界面,找到通道1的配置项,将Input Capture Source(捕获输入源)从Internal Trigger(TRC)修改为Direct from TI1(TI1直连输入)
  2. 如果不重新生成代码,也可以直接在初始化代码中手动修改寄存器配置,将TIM3->CCMR1寄存器的CC1S位域设置为0x01(即CH1配置为输入模式,映射到TI1直连通道),不要设置为0x03(即映射到TRC输入)
  3. 重新编译下载程序即可恢复正常,无需修改硬件连线

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:24:16