配置时参考了这个哥们的方法:
http://www.eemaker.com/stm32cubemx-encoder.html
然后我的配置是这样的
配置是没有问题。
调用时出现了问题。
由于配置完了,我担心它立即生效,怕影响运动,然后我就想配置完先把TIM3的时钟关闭:
__HAL_RCC_TIM3_CLK_DISABLE();
这样先不让它使能。
谁知这样是不对的,即使后面我用了MX_TIM3_Init();对定时器进行再次彻底初始化,也是没有用,读到定时器值一直为0.
后来细看了一下那哥们的文章:发现后面倒数2句
HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
没有用上!!
于是去掉第一句__HAL_RCC_TIM3_CLK_DISABLE();加上HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
OK!
整个过程有点懵。
后来细想,好像有明白HAL库的套路了:模块配置完并没有立即生效,尤其是定时器,还需要另外一句话来开启!
嗯就这~