关于stm32f4通用定时器编码器接口模式总结:

这里以两相AB 输出方波为例,编码器四倍频,因为f4有硬件的编码器模式,设置时,

关键这个函数进行解释:

TIM_EncoderInterfaceConfig(TIM4,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising ,TIM_ICPolarity_Rising);

TIM4-选择定时器4

TIM_EncoderMode_TI12-TI1和T2边沿处均计数,至于是向上还是向下取决于正转还是反转

后面两个设置比较坑爹,后面两项都设置为TIM_ICPolarity_Rising,其操作的是寄存器CCER,看下CC1P有这句话TIxFP1 未反相 (在门控模式或编码器模式下执行触发操作)。这就是说他是用来设置是否反相的不是设置上升沿的在编码器模式下

 

这个TIM_ICPolarity_Rising从英文翻译看是上升沿的意思,这是最坑爹的地方,他本身是有上升沿的用途,但是如我画红线处所说,在编码器模式下他的意思是不进行反相不是什么上升沿。所以CNT就会是四倍频了,如手册中的下图:

 

而如果配置为了TIM_ICPolarity_Falling,就会反相,

 

而这里还有一个配置是TIM_ICPolarity_BothEdge,其实这样配置不能用的,所以这里一定要注意。图片不能上传自己看下stm32f4中文手册

 

Logo

鸿蒙生态一站式服务平台。

更多推荐