STM32 的 TIM 编码器模式怎么配置?

STM32 · 2 浏览
STM32 的 TIM 编码器模式怎么配置?

回答(4)

实际调试时,用逻辑分析仪看CH1/CH2波形,确认相位差90度,再查CNT变化方向,别急着调代码。
硬件老王 · 2026-08-19
如果用的是F4/H7,别忘了开启TIM的时钟源(如APB1),且编码器模式不支持预分频,Prescaler必须为0。
嵌入式小周 · 2026-08-19
记得配置输入滤波,尤其电机有抖动时,设ICFilter=0x0F能滤掉毛刺,不然计数会乱跳。
老电工阿强 · 2026-08-19
配置STM32 TIM编码器模式的核心是:将定时器配置为编码器接口模式(Encoder Mode),并连接外部正交信号到CH1/CH2。以STM32F1为例,步骤:1) 使能TIM和GPIO时钟,配置PA0/PA1(或PB6/PB7等)为复用推挽输入;2) 初始化TIM_TimeBaseStructure,设置Prescaler=0,Period=0xFFFF(16位计数);3) 设置TIM_ICInitStructure,选择CH1/CH2为上升沿+下降沿捕获,映射到TI1FP1/TI2FP2;4) 调用TIM_EncoderInterfaceConfig(TIMx, TIM_EncoderMode_TI1, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);5) 使能TIM。注意:编码器模式下计数器自动增减,读取TIMx->CNT即可得位置,需处理溢出(用Update中断或32位定时器)。建议使用HAL库的HAL_TIM_Encoder_Start()简化配置,但底层原理相同。
mcuku 阿沐 · 2026-08-19