STM32 Cubemx 配置定時器定時1mS


  最近才發現原來我把定時器里的配置參數代表的意義給搞混了,這里記錄一下,防止以后自己忘記。

以建立一個定時1mS定時器為例:

  1、先打開定時器

  

  2、配置好時鍾

  

  3、配置定時器設置

  

    

    重點來了,以前在這里我一直以為這里配置的就是時間,然后在調頻率的時候,一直不對勁,知道查閱了硬石的資料才發現,這里配置的是進入定時器中斷的頻率,然后要定的時間要跟據這個頻率來定時的。

  

  由這個圖可見,這里配置的是定時器產生中斷的頻率,然后再跟據頻率與時間的關系推出定時的時間。

  所以定時器頻率為 f = 72M / Prescaler / Period = 72000 000 / 72 /1000 = 1000Hz;

  定時時間T = 1 / f 則: 1s / 1000Hz = 1000 000us / 1000Hz = 1000us =1ms。

  這樣就可以定時1ms了啦,如果要做PWM頻率調頻,就直接改 pre 與 per 算出 f 就可以了。

具體公式如下圖(上面的計算我是為了方便理解把公式逆運算了一次):

  

   最后使用定時器中斷跟關閉定時器中斷以及回調函數即可, 使用中斷的時候注意要先開啟中斷

HAL_TIM_Base_Start_IT(&htim1); //使用定時器的時候調用這個函數啟動

HAL_TIM_Base_Stop_IT(&htim1); //停止定時器的時候調用這個函數關閉

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM1)
  {
    //編寫回調邏輯,即定時器1定時1MS后的邏輯
  }
}

 補充:最后記得生成STM32Cubemx文件時打開定時器中斷,不然進不了回調函數,一般的話習慣用TIM3做定時器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM