[其他ST产品] TIM2_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;这里的映射不太明白?

[复制链接]
 楼主| 麻花油条 发表于 2025-2-28 11:42 | 显示全部楼层 |阅读模式

stm32进行输入捕获实验,使用TIM2的CH1

TIM2_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01         选择输入端 IC1映射到TI1上
TIM2_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;        //上升沿捕获
TIM2_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI1上
TIM2_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;         //配置输入分频,不分频
TIM2_ICInitStructure.TIM_ICFilter = 0x00;//IC1F=0000 配置输入滤波器 不滤波
TIM_ICInit(TIM2, &TIM2_ICInitStructure);


这里为什么TIM2_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 而不是配置到 TIM_ICSelection_IndirectTI上?
江河千里 发表于 2025-3-17 01:08 | 显示全部楼层
STM32的输入捕获实验中,TIM_ICSelection_DirectTI TIM_ICSelection_IndirectTI 的区别在于输入信号与捕获通道的映射关系。你提到的代码中使用了 TIM_ICSelection_DirectTI,而不是 TIM_ICSelection_IndirectTI,这是由具体的应用需求决定的。

别乱了阵脚 发表于 2025-3-17 02:32 | 显示全部楼层
STM32的定时器输入捕获功能用于测量外部信号的脉宽或频率。每个定时器有多个捕获通道(如TIM24个捕获通道:CH1CH2CH3CH4),每个通道可以映射到不同的输入信号(TI1TI2TI3TI4)。

暖了夏天蓝了海 发表于 2025-3-17 03:22 | 显示全部楼层
TIM_ICSelection_DirectTI功能是将捕获通道直接映射到对应的输入引脚。

淡漠安然 发表于 2025-3-17 04:34 | 显示全部楼层
一般来说,TIM_ICSelection_IndirectTI是将捕获通道映射到非对应的输入引脚

冰春彩落下 发表于 2025-3-17 05:54 | 显示全部楼层
在你的代码中,配置了 TIM_Channel_1TIM_ICSelection_DirectTI,这意味着 IC1 直接映射到 TI1。这是最常见的配置

远山寻你 发表于 2025-3-17 06:22 | 显示全部楼层
如果你的实验只需要捕获 TIM2_CH1 引脚的信号,那么 TIM_ICSelection_DirectTI 是最合适的选择。

一秒落纱 发表于 2025-3-17 07:46 | 显示全部楼层
我知道的是,TIM_ICSelection_IndirectTI 通常用于交叉捕获:例如,用 IC1 捕获 TI2 的信号,或用 IC2 捕获 TI1 的信号。

光辉梦境 发表于 2025-3-17 08:21 | 显示全部楼层
其实TIM_ICSelection_IndirectTI可以支持多信号处理,当需要同时捕获多个信号,且信号来源与捕获通道不一一对应时。

夜阑风雨 发表于 2025-3-17 09:36 | 显示全部楼层
可以支持某些编码器或 PWM 输入捕获场景中,可能需要交叉映射。这都可以使用TIM_ICSelection_IndirectTI

三生万物 发表于 2025-3-17 10:43 | 显示全部楼层
选择 TIM_ICSelection_DirectTI 是因为希望捕获的是 TIM2_CH1TI1)的信号,直接映射关系更符合应用需求。如果未来需要捕获其他引脚的信号(如用 IC1 捕获 TI2 的信号),则可以使用 TIM_ICSelection_IndirectTI

您需要登录后才可以回帖 登录 | 注册

本版积分规则

294

主题

1588

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部