hal 編碼器做使用者輸入時捕獲初值的設定

不打魚光曬網發表於2022-01-08
        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;

 

 

相關文章