TIM定时器中的编码器模式,配置成功后的疑惑

2019-07-21 01:40发布

我是测量编码器的脉冲数,程序执行成功了,但是有些疑惑未能解决。
这是我配置的一段关键步骤,
[mw_shl_code=c,true]TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_BothEdge,TIM_ICPolarity_BothEdge); //配置TIM3为编码器模式,CI C2直接映射到TI1 TI2 ,上升沿 下降沿 同时检测 TIM_ICInitStructure.TIM_Channel = TIM_Channel_1|TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频 TIM_ICInitStructure.TIM_ICFilter = 0x06;//配置输入滤波器为6 TIM_ICInit(TIM3, &TIM_ICInitStructure);[/mw_shl_code] 问题1:配置完第一句后,下面这几句
[mw_shl_code=c,true]TIM_ICInitStructure.TIM_Channel = TIM_Channel_1|TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //配置输入分频,不分频 [/mw_shl_code] 还有必要加吗,为什么?
问题2:程序配置完后,运行10ms后我的脉冲数是354个。我尝试去掉问题1中的这几句后,检测数变成了-354,就是计数器向下计数345,原因是什么?
问题3:最初的程序
是TI1和TI2上升沿,下降沿同时检测的结果,但是当我把第一句的两个极性 [mw_shl_code=c,true]TIM_ICPolarity_BothEdge,TIM_ICPolarity_BothEdge[/mw_shl_code] 改为 [mw_shl_code=c,true]TIM_ICPolarity_Rising,TIM_ICPolarity_Rising[/mw_shl_code] 后,按说应该变成只在TI1和TI2的上升沿检测,同样时间的计数值应该减半的,但是最后数值变为-354,就是计数器向下计数354,这是为什么?
问题4:问题3出现后,我有吧 [mw_shl_code=c,true]TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge; [/mw_shl_code] 改成了 [mw_shl_code=c,true]TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; [/mw_shl_code] 以确保跟第一句保持一致,但计数值有变成354,依然没有减半,
很是迷茫,望大神能请教一二。。。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。