配置時參考了這個哥們的方法:
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庫的套路了:模塊配置完並沒有立即生效,尤其是定時器,還需要另外一句話來開啟!
嗯就這~