uint16_t encoderDirection = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);
uint16_t encoderValue = __HAL_TIM_GET_COUNTER(&htim3);
主要就這兩句程式碼
一個獲取方向,正轉0 反轉1(編碼器接反了的話,這個值相應的也就比反過來)
另一個時獲取捕獲值
但是如果我只想用編碼器做使用者輸入
那一會是0 2 4 6一會是65535 65533 65531方便呢還是從32767開始正轉 32769 32771反轉32765 32763方便呢?
顯然是後者
不需要考慮方向了這樣就可以節約一些程式碼空間
如果晶片FLASH大還好說,但目前這個情況,32kb的f031大概3元,64的就要十幾塊,所以肯定選小的
flash不夠了,能少寫幾行算幾行啊
所以,我選擇初始化後,給定時器CNT一個初始值
翻了翻HAL好像沒有直接操作定時器CNT的函式,所以自己操作暫存器吧
htim3.Instance->CNT |= ecnInitValue;