STM32定時器(TIM)之通用定時器

2021-08-06 01:16:36 字數 1484 閱讀 1034

stm32的通用定時器有四個,分別是tim2, tim3,tim4,tim5,有以下功能:

通用定時器的框圖如下:

從圖中可以看出,通用定時器timx的觸發源(計數器時鐘的時鐘源)有四個:

1、內部時鐘(clk_int)

2、外部時鐘模式1:外部輸入引腳(tix),分別經timx_chx通道傳入

3、外部時鐘模式2:外部觸發輸入(etr)

4、內部觸發輸入(itrx):定時器主從模式下由itrx定義從定時器和主定時器、

下面選取觸發源為內部時鐘時進行分析:

從上圖我們可以看到,基本定時器主要由下面三個暫存器組成。

1、計數器暫存器 (timx_cnt)

2、預分頻器暫存器 (timx_psc)

3、自動過載暫存器 (timx_arr)

計數器暫存器 (timx_cnt)儲存的是當前的計數值。預分頻器 (timx_psc)為多少個ck_psc脈衝計數一次,如圖192 預分頻器的值為1(預分頻暫存器預設為0,為不分頻),則為兩個脈衝計數一次。即為二分頻。如果要10000分頻,則預分頻器的值為1000-1。具體來說若ck_psc的頻率為10mhz,預分頻器值為(10-1),則是每隔1ms計數器計數一次。

自動過載暫存器的數值代表計數的次數,例如當值為59時,計數器若是向上計數模式,則從0計到59時,如圖會產生事件u或中斷ui,計數器也會被清零而重新計數。

那麼內部時鐘頻率如何確定呢?

通過查詢晶元的資料手冊可以發現

通用定時器的內部時鐘掛在了apb1時鐘線上,若內部時鐘不分頻(ckd=0)的話,則ck_psc的時鐘頻率等於apb1的時鐘頻率。

定時器有如下三種計數模式

遞增計數模式:計數器從 0 計數到自動過載值,然後重新從 0 開始計數並生成計數器上溢事件。

遞減計數模式:計數器從自動過載值開始遞減到 0,然後重新從自動過載值開始計數並生成計數器下溢事件。

中心對齊模式:計數器從 0 開始計數到自動過載值 – 1 ,生成計數器上溢事件;然後從自動過載值開始向下計數到 1 並生成計數器下溢事件。之後從0 開始重新計數。

stm32關定時器 STM32定時器TIM3程式

include led.h include delay.h include key.h include sys.h include usart.h include timer.h stm32開發板實驗8 定時器中斷實驗 int main void delay init 延時函式初始化 nvic co...

STM32 定時器 TIM 定時如何計算?

stm32定時器定時計算通過計數溢位計算,也就是說計數溢位就觸發中斷 計算公式 timeout prescaler 1 period 1 timeclockfren 解釋下公式引數意義 timeout 定時器溢位時間 單位為us 多少觸發 進入 一次tim中斷。prescaler 分頻tim時鐘的預...

stm32 定時器TIM時鐘步驟

1 tim3 時鐘使能 rcc apb1periphclockcmd rcc apb1periph timx,enable 時鐘使能 2 初始化定時器引數,設定自動重灌值,分頻係數,計數方式等。定時器的初始化函式tim timebaseinit voidtim timebaseinit tim ty...