一、思維導(dǎo)圖

三、定時器基本簡介
(一)定時器分類
STM32F103微控制器的定時器分為 系統(tǒng)定時器(SysTick) 、 “看門狗”定時器(WatchDog) 、 基本定時器 、 通用定時器 、高級定時器和 實時時鐘(RTC) 等。
- 系統(tǒng)定時器(SysTick) :是一個集成在Cortex-M3內(nèi)核當(dāng)中的定時器,Cortex-M3內(nèi)核附帶SysTick的主要目的是 給實時操作系統(tǒng)(RTOS)提供時間基準(時鐘節(jié)拍 ),SysTick是不允許被用戶直接使用的。
- “看門狗”定時器(WatchDog) :“看門狗”定時器連接到STM32微控制器芯片的復(fù)位電路, 在定時器溢出時會觸發(fā)復(fù)位操作 。
- 實時時鐘RTC :是一個帶獨立電源供電引腳和獨立時鐘源的定時器,可以實現(xiàn)在芯片主電源斷電情況下的連續(xù)供電,以 確保RTC定時器計數(shù)的連續(xù)性 。
- 基本定時器 :包括TIM6和TIM7,可以 實現(xiàn)基本的定時/計數(shù)功能 。
- 通用定時器 :包括TIM2、TIM3、TIM4和TIM5,在基本定時器功能的基礎(chǔ)上,可以 實現(xiàn)比較輸出、輸入捕獲、PWM輸出等功能 。
- 高級定時器 :包括TIM1和TIM8,在通用定時器功能的基礎(chǔ)上, 可以實現(xiàn)PWM輸出的死區(qū)控制 ,這一功能在全控橋逆變電路的控制中是十分關(guān)鍵的。

(二)通用定時器的主要功能
1. 位于低速的APB1總線上 (注意:高級定時器是在高速的APB2總線上);
2. 16位向上、向下、向上/向下自動裝載計數(shù)器(TIMx_CNT) ;
3. 16位可編程(可以實時修改)預(yù)分頻器(TIMx_PSC), 計數(shù)器時鐘頻率的分頻系數(shù)為1~65536之間的任意數(shù)值 ;
4. 4個獨立通道(TIMx_CH1~4) ,這些通道可以用來作為: 輸入捕獲、輸出比較、PWM生成 (邊緣或中間對齊模式)、 單脈沖模式輸出 ;
5. 使用外部信號控制定時器和定時器互連的同步電路 ;
6. 如下事件發(fā)生時產(chǎn)生中斷/DMA :更新(計數(shù)器向上溢出/向下溢出,計數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā)))、觸發(fā)事件(計數(shù)器啟動、停止、初始化或者由內(nèi)部/外部觸發(fā)計數(shù))、輸入捕獲、輸出比較; 支持針對定位的增量(正交)編碼器和霍爾傳感器電路 ; 觸發(fā)輸入作為外部時鐘或者按周期的電流管理 ;
7.STM32的通用定時器可以被用于:測量輸入信號的脈沖長度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和PWM)等。(使用定時器預(yù)分頻器和RCC時鐘控制器預(yù)分頻器,脈沖長度和波形周期可以在幾個微秒到幾個毫秒間調(diào)整。)
8. 每個通用定時器都是完全獨立的,沒有互相共享的任何資源 。
(三)通用定時器的計數(shù)器模式
- 通用定時器可以向上計數(shù)、向下計數(shù)、向上向下雙向計數(shù)模式。
- 向上計數(shù)模式 :計數(shù)器從0計數(shù)到自動加載值(TIMx_ARR),然后重新從0開始計數(shù)并且產(chǎn)生一個計數(shù)器溢出事件。
- 向下計數(shù)模式 :計數(shù)器從自動裝入的值(TIMx_ARR)開始向下計數(shù)到0,然后從自動裝入的值重新開始,并產(chǎn)生一個計數(shù)器向下溢出事件。
- 中央對齊模式(向上/向下計數(shù)) :計數(shù)器從0開始計數(shù)到自動裝入的值-1,產(chǎn)生一個計數(shù)器溢出事件,然后向下計數(shù)到1并且產(chǎn)生一個計數(shù)器溢出事件;然后再從0開始重新計數(shù)。
(四)通用定時器的PWM
利用STM32通用定時器的比較輸出功能,可以很方便地輸出PWM信號。脈沖寬度調(diào)制(Pulse Width Modulation,PWM)是廣泛用于燈光亮度、電機調(diào)速的一種數(shù)字控制方法。
脈沖寬度與周期的比值稱為占空比 ,脈沖寬度越大,則占空比越大。占空比越大的信號對應(yīng)的LED亮度也越高。

如圖(a)所示,首先將定時器設(shè)置為增加/減少計數(shù)模式,則主計數(shù)器由0開始加計數(shù)到自動重裝載值Np,然后減計數(shù)到0,如此循環(huán)往復(fù)。圖中的三角形表示計數(shù)值的變化曲線,三角形曲線的周期為T。
如果開啟PWM輸出模式,并將比較輸出值設(shè)為Nc,則在定時器的PWM輸出端會產(chǎn)生電平變化,當(dāng)比較值Nc大于計數(shù)值n時,輸出高電平;當(dāng)比較值Nc小于計數(shù)值n時,輸出低電平,如此循環(huán)往復(fù)可以產(chǎn)生一個周期為T的方波。
如圖(b)所示,增加比較輸出值Nc,按照以上規(guī)則會產(chǎn)生一個周期同樣為T的方波,只是此時脈沖寬度ΔT增加,也就是占空比增加。
(五)通用定時器結(jié)構(gòu)框圖
通用定時器TIMx(TIM2~TIM5)的核心為可編程預(yù)分頻器驅(qū)動的16位自動重裝載計數(shù)器,主要由時鐘源、時鐘單元、捕獲/比較通道等組成。

1. 時鐘源的選擇
通用定時器的時鐘可由多種時鐘輸入源構(gòu)成,除了內(nèi)部時鐘源,其他三種時鐘源均通過TRGI(觸發(fā))輸入。通用定時器的計數(shù)器時鐘可由下列時鐘源提供:
(1) 內(nèi)部時鐘(TIMx_CLK) 。
(2) 外部時鐘模式1:外部捕捉比較引腳(TIx) ,外部輸入引腳(TIx)包括外部比較/捕獲引腳TIIF_ED、TI1FP1和TI2FP2,計數(shù)器在選定引腳的上升沿或下降沿開始計數(shù)。
(3) 外部時鐘模式2:外部引腳輸入(TIMx_ETR) ,外部觸發(fā)輸入引腳(ETR),計數(shù)器在ETR引腳的上升沿或下降沿開始計數(shù)。
(4) 內(nèi)部觸發(fā)輸入(ITRx,x=0, 1, 2, 3) ,一個定時器作為另一個定時器的預(yù)分頻器,如可以配置定時器TIM1作為定時器TIM2的預(yù)分頻器。
這里定時器的內(nèi)部時鐘源并不是直接來自APB1或APB2,而是 來源于輸入為APB1或APB2的一個倍頻器 。當(dāng)APB1的預(yù)分頻系數(shù)為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率。當(dāng)APB1的預(yù)分頻系數(shù)為其他數(shù)值(預(yù)分頻系數(shù)為2、4、8或16)時,這個倍頻器才能夠發(fā)揮作用,定時器的時鐘頻率等于APB1頻率的2倍。(例:當(dāng)AHB為72MHz時,APB1的預(yù)分頻系數(shù)必須大于2,因為APB1的最大輸出頻率只能為36MHz。如果APB1的預(yù)分頻系數(shù)為2,則由于這個倍頻器2倍的作用,使得TIM2~TIM5仍然能夠得到72MHz的時鐘頻率。若APB1的輸出為72MHz,則直接取APB1的預(yù)分頻系數(shù)為1就可以保證TIM2~TIM5的時鐘頻率為72MHz,但是這樣就無法為其他外設(shè)提供低頻時鐘。當(dāng)設(shè)置內(nèi)部的倍頻器時,可以在保證其他外設(shè)能夠使用較低時鐘頻率的同時,使TIM2~TIM5仍能得到較高的時鐘頻率。)
外部時鐘源作為通用定時器的時鐘時,包括外部時鐘模式1和外部時鐘模式2兩種** 。當(dāng)從模式控制寄存器TIMx_SMCR的SMS=1時,外部時鐘源模式1被選定,計數(shù)器可以在選定輸入引腳的每個上升沿或下降沿計數(shù)。
當(dāng)從模式控制寄存器TIMx_SMCR的ECE=1時,外部時鐘源模式2被選定,計數(shù)器在ETR引腳的上升沿或下降沿開始計數(shù)。
2. 定時器的時基單元
STM32微控制器的定時器的時基單元,從時鐘源送來的時鐘信號,經(jīng)過預(yù)分頻器的分頻,降低頻率后輸出信號CK_CNT,送入計數(shù)器計數(shù)。預(yù)分頻器的分頻取值可以是1~65536之間的任意數(shù)值,一個72MHz的輸入信號經(jīng)過分頻后,最小可以產(chǎn)生接近100Hz的信號。
可編程通用定時器的 主要部分是一個16位計數(shù)器和與其相關(guān)的自動重裝載寄存器 。該計數(shù)器可以在時鐘控制單元的控制下,進行遞增計數(shù)、遞減計數(shù)或中央對齊計數(shù)(先遞增計數(shù),達到自動重裝載寄存器的數(shù)值后再遞減計數(shù))。通過對時鐘控制單元的控制,可以實現(xiàn)直接被清零或在計數(shù)值達到自動重裝載寄存器的數(shù)值后被清零,也可以直接被停止或在計數(shù)值達到自動重裝載寄存器的數(shù)值時被停止,還能夠?qū)崿F(xiàn)暫停一段時間計數(shù)后在時鐘控制單元的控制下恢復(fù)計數(shù)等操作。
計數(shù)器計滿溢出后,自動重裝載寄存器TIMx_ARR將所保存的初值重新賦給計數(shù)器,以實現(xiàn)繼續(xù)計數(shù)。
3. 捕獲/比較通道
通用定時器上的每一個TIMx的捕獲/比較通道都有一個捕獲/比較寄存器(包含影子寄存器),包括捕獲的輸入部分(數(shù)字濾波、多路復(fù)用和預(yù)分頻器)和輸出部分(比較器和輸出控制)。當(dāng)一個通道工作在捕獲模式時,該通道的輸出部分會自動停止工作;反之,當(dāng)一個通道工作在比較模式時,該通道的輸入部分也會自動停止工作。
(1)捕獲通道。當(dāng)一個通道工作于捕獲模式時,輸入信號會從引腳經(jīng)輸入濾波、邊沿檢測和預(yù)分頻電路后,控制捕獲寄存器的操作。
(2)比較通道。當(dāng)一個通道工作于比較模式時,程序?qū)⒈容^數(shù)值寫入比較寄存器,定時器會不停地將該寄存器的內(nèi)容與計數(shù)器的內(nèi)容進行比較,一旦比較條件成立,就會產(chǎn)生相應(yīng)的輸出。
4. 定時時間的計算
Tout= ((arr+1)*(psc+1))/Tclk; Tclk :TIM3的輸入時鐘頻率(單位為MHz)。 Tout :TIM3溢出時間(單位為us)。
例:計時1s,輸入時鐘頻率為72MHz。
arr = 9999,psc = 7199。
Tout = ((arr+1)*(psc+1))/Tclk = ((9999+1) *(7199+1))/72=1M(us)=1(s)

(六)編寫定時器中斷
- 使能定時器時鐘 。調(diào)用函數(shù):RCC_APB1PeriphClockCmd();
- 初始化定時器,配置ARR、PSC 。調(diào)用函數(shù):TIM_TimeBaseInit();
- 開啟定時器中斷,配置NVIC 。調(diào)用函數(shù):void TIM_ITConfig();NVIC_Init();
- 使能定時器 。調(diào)用函數(shù):TIM_Cmd();
- 編寫中斷服務(wù)函數(shù) 。調(diào)用函數(shù):TIMx_IRQHandler()。
-
微控制器
+關(guān)注
關(guān)注
49文章
8813瀏覽量
165562 -
看門狗
+關(guān)注
關(guān)注
10文章
611瀏覽量
73175 -
定時器
+關(guān)注
關(guān)注
23文章
3370瀏覽量
124426 -
電源供電
+關(guān)注
關(guān)注
0文章
217瀏覽量
23010 -
STM32F103
+關(guān)注
關(guān)注
34文章
497瀏覽量
68156
發(fā)布評論請先 登錄
電機控制基礎(chǔ)知識1—定時器基礎(chǔ)知識與PWM輸出原理
STM32F03自帶的ADC功能
Systick定時器基礎(chǔ)知識講解
STM32H7的TIM定時器基礎(chǔ)知識和HAL庫
淺析STM32f03的系統(tǒng)時鐘和配置時鐘
定時器基礎(chǔ)知識與PWM輸出原理是什么
淺談定時器基礎(chǔ)知識與PWM輸出原理
STM32F03學(xué)習(xí)筆記之ADC配置(含DMA配置)
電機控制基礎(chǔ)——定時器基礎(chǔ)知識與PWM輸出原理
STM32---定時器知多少
STM32F03寄存器方式點亮LED流水燈
STM32F03定時器基礎(chǔ)知識基本簡介
評論