首先非常感謝秉火和正點原子兩個團隊為我們提供學習stm32的豐富資料及詳細教程。為加深記憶,也方便同行新手們一同學習進步,略作整理,以備檢視,如有錯誤,歡迎指正,如有侵權,聯絡刪帖!
定時器分類
stm32f1 系列微控制器中,除了互聯型的產品,都有 8 個定時器,分為2個基本定時器,4個通用定時器和2個高階定時器。
基本定時器 tim6 和 tim7 是乙個 16 位的只能向上計數的定時器,只能定時,沒有外部 io。
通用定時器 tim2/3/4/5 是乙個 16 位的可以向上/下計數的定時器,可以定時,可以輸出比較,可以輸入捕捉,每個定時器有四個外部 io。
高階定時器 tim1/8是乙個 16 位的可以向上/下計數的定時器,可以定時,可以輸出比較,可以輸入捕捉,還可以有三相電機互補輸出訊號,每個定時器有 8 個外部 io。
型別定時器
計數解析度
計數型別
預分頻係數
產生dma
捕獲/比較通道
互補輸出
基本定時器
tim6
16位向上
1~65535可以0
沒有基本定時器
tim7
16位向上
1~65535可以0
沒有通用定時器
tim2
16位向上/向下
1~65535可以4
沒有通用定時器
tim3
16位向上/向下
1~65535可以4
沒有通用定時器
tim4
16位向上/向下
1~65535可以4
沒有通用定時器
tim5
16位向上/向下
1~65535可以4
沒有高階定時器
tim1
16位向上/向下
1~65535可以4
有高階定時器
tim8
16位向上/向下
1~65535可以4
有基本定時器功能框圖
基本定時器的核心是時基,不僅基本定時器有,通用定時器和高階定時器也有。學習定時器時,我們先從簡單的基本定時器學起,到了後面的通用和高階定時器的學習中,我們直接跳過時基部分的講解即可。
時鐘源
定時器時鐘 timxclk,即內部時鐘 ck_int,經 apb1 預分頻器後分頻提供,如果apb1 預分頻係數等於 1,則頻率不變,否則頻率乘以 2,庫函式中 apb1 預分頻的係數是2,即 pclk1=36m,所以定時器時鐘 timxclk=36*2=72m。
計數時鐘
定時器時鐘經過 psc 預分頻器之後,即 ck_cnt,用來驅動計數器計數。psc 是乙個16 位的預分頻器,可以對定時器時鐘 timxclk 進行 1~65536 之間的任何乙個數進行分頻。具體計算方式為:ck_cnt=timxclk/(psc+1)。
自動重裝載暫存器
自動重裝載暫存器 arr也 是乙個 16 位的暫存器,這裡面裝著計數器的計數值最範圍1~65536。當計數到這個值的時候,如果使能了中斷的話,定時器就產生溢位中斷。
定時時間的計算
定時器的定時時間等於計數器的中斷週期乘以中斷的次數。
計數器在 ck_cnt 的驅動下,計乙個數的時間則是 ck_clk 的倒數,等於:1/(timxclk/(psc+1)),產生一次中斷的時間則等於:1/(ck_clk *arr)。如果在中斷服務程式裡面設定乙個變數 time,用來記錄中斷的次數, 那麼就可以計算出我們需要的定時時間等於: 1/ck_clk *(arr+1)*time。
STM32F103定時器配置
一 什麼是定時器 定時器,顧名思義,就是用於定時或計數,它其實就是乙個加1計數器。二 了解stm32f103定時器 stm32通用暫存器有tim2 tim3 tim4 tim5。功能包括 1 16位向上 向下 向上 向下自動裝載計數器 timx cnt 2 16位可程式設計預分頻器 timx psc...
STM32F103內部定時器TIM
1 stm32f103內部定時器有哪些?stm32一共有8個通用16位timer,其中timer1和timer8是高階定時器,其它的timer2 timer7是普通定時器。此外還有乙個systick 系統滴答定時器 這個定時器通常在作業系統中作為系統的任務切換週期。還有乙個rtc,是乙個毫秒定時器,...
STM32F103 滴答定時器定時不准
緣由 做了五片同樣的板子,功能是使用板子上的感測器採集資料後,利用stm32f103串列埠將資料傳輸出去,就其中一片板子資料傳輸比其他的慢,原本正常使用串列埠115200波特率傳輸一幀資料只需要1s多,而那塊板子傳輸資料得十幾秒。一開始用示波器對時鐘測量都是ok的,外部晶振也是8mhz起振。在看程式...