STM32 Cubemx 配置定時器定時1mS

  最近才發現原來我把定時器裏的配置參數表明的意義給搞混了,這裏記錄一下,防止之後本身忘記。函數

以創建一個定時1mS定時器爲例:spa

  一、先打開定時器3d

  

  二、配置好時鐘code

  

  三、配置定時器設置blog

  

    

    重點來了,之前在這裏我一直覺得這裏配置的就是時間,而後在調頻率的時候,一直不對勁,知道查閱了硬石的資料才發現,這裏配置的是進入定時器中斷的頻率,而後要定的時間要跟據這個頻率來定時的。回調函數

  

  由這個圖可見,這裏配置的是定時器產生中斷的頻率,而後再跟據頻率與時間的關係推出定時的時間。io

  因此定時器頻率爲 f = 72M / Prescaler / Period = 72000 000 / 72 /1000 = 1000Hz;class

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

  這樣就能夠定時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後的邏輯  }}
相關文章
相關標籤/搜索