TIM—基本定時器

定時器分類函數

      STM32F1 系列中,除了互聯型的產品,共有 8 個定時器,分爲基本定時器,通用定時器和高級定時器學習

      基本定時器 TIM6 和 TIM7 是一個 16 位的只能向上計數的定時器,只能定時,沒有外部 IO。ui

      通用定時器 TIM2/3/4/5 是一個 16 位的能夠向上/下計數的定時器,能夠定時,能夠輸出比較,能夠輸入捕捉,每一個定時器有四個外部 IO。spa

      高級定時器 TIM1/8 是一個 16 位的能夠向上/下計數的定時器,能夠定時,能夠輸出比較,能夠輸入捕捉,還能夠有三相電機互補輸出信號,每一個定時器有 8 個外部 IO。更加具體的分類詳情見圖 。3d

1

基本定時器功能框圖講解code

     基本定時器的核心是時基,不只基本定時器有,通用定時器和高級定時器也有。學習定時器時,咱們先從簡單的基本定時器學起,到了後面的通用和高級定時器的學習中,咱們直接跳過期基部分的講解便可。基本定時器的功能框圖見圖 .blog

2

1. 時鐘源事件

      定時器時鐘 TIMxCLK,即內部時鐘 CK_INT,經 APB1 預分頻器後分頻提供,若是 APB1 預分頻係數等於 1,則頻率不變,不然頻率乘以 2,庫函數中 APB1 預分頻的係數是 2,即 PCLK1=36M,因此定時器時鐘 TIMxCLK=36*2=72M。get

2. 計數器時鐘產品

      定時器時鐘通過 PSC 預分頻器以後,即 CK_CNT,用來驅動計數器計數。PSC 是一個 16 位的預分頻器,能夠對定時器時鐘 TIMxCLK 進行 1~65536 之間的任何一個數進行分頻。具體計算方式爲:CK_CNT=TIMxCLK/(PSC+1)。

3. 計數器

     計數器 CNT 是一個 16 位的計數器,只能往上計數,最大計數值爲 65535。當計數達到自動重裝載寄存器的時候產生更新事件,並清零從頭開始計數。

4. 自動重裝載寄存器

      自動重裝載寄存器 ARR 是一個 16 位的寄存器,這裏面裝着計數器能計數的最大數值。當計數到這個值的時候,若是使能了中斷的話,定時器就產生溢出中斷。

5. 定時時間的計算

      定時器的定時時間等於計數器的中斷週期乘以中斷的次數。計數器在 CK_CNT 的驅動下,計一個數的時間則是 CK_CLK 的倒數,等於:1/(TIMxCLK/(PSC+1)),產生一次中斷的時間則等於:1/(CK_CLK * ARR)。若是在中斷服務程序裏面設置一個變量 time,用來 記 錄 中 斷的 次 數,那 麼 就 可 以計 算 出咱們 需 要 的 定時 時 間等於 : 1/CK_CLK * (ARR+1)*time。

定時器初始化結構體詳解

      在標準庫函數頭文件 stm32f4xx_tim.h 中對定時器外設創建了四個初始化結構體,基本定時器只用到其中一個即 TIM_TimeBaseInitTypeDef,具體的見代碼清單,其餘三個咱們在高級定時器章節講解。

 typedef struct {
 uint16_t TIM_Prescaler; // 預分頻器
 uint16_t TIM_CounterMode; // 計數模式
 uint32_t TIM_Period; // 定時器週期
 uint16_t TIM_ClockDivision; // 時鐘分頻
 uint8_t TIM_RepetitionCounter; // 重複計算器
 } TIM_TimeBaseInitTypeDef;

      (1) TIM_Prescaler:定時器預分頻器設置,時鐘源經該預分頻器纔是定時器時鐘,它設定 TIMx_PSC 寄存器的值。可設置範圍爲 0 至 65535,實現 1 至 65536 分頻。

      (2) TIM_CounterMode:定時器計數方式,但是在爲向上計數、向下計數以及三種中心對齊模式。基本定時器只能是向上計數,即 TIMx_CNT 只能從 0 開始遞增,而且無需初始化。

      (3) TIM_Period:定時器週期,實際就是設定自動重載寄存器的值,在事件生成時更新到影子寄存器。可設置範圍爲 0 至 65535。

       (4) TIM_ClockDivision:時鐘分頻,設置定時器時鐘 CK_INT 頻率與數字濾波器採樣時鐘頻率分頻比,基本定時器沒有此功能,不用設置。

      (5) TIM_RepetitionCounter:重複計數器,屬於高級控制寄存器專用寄存器位,利用它能夠很是容易控制輸出 PWM 的個數。這裏不用設置。雖然定時器基本初始化結構體有 5 個成員,但對於基本定時器只需設置其中兩個就能夠,想一想使用基本定時器就是簡單。

相關文章
相關標籤/搜索