一、通用定時器的功能
在基本定時器功能的基礎上新增功能:
通用定時器有4個獨立通道,且每個通道都可以用于下面功能。
(1)輸入捕獲:測量輸入信號的周期和占空比等。
(2)輸出比較:產生輸出特定的波形(根據自己需要設置)。
(3)輸出PWM。
(4)單脈沖模式.
(5)級聯。(一個定時器的溢出事件可以使能下一個定時器的計數器開始計數)
(6)可以觸發DAC、ADC。
(7)支持編碼器和霍爾傳感器電路。
如果不知道基本定時器的功能請看:STM32基本定時器。這里就不再過多詳細介紹。
以STM32F103系列為例,具體開發板請查看開發手冊。
類別 | 定時器 | 總線 | 位數 | 計數方向 | 預分頻系數 | 是否可以產生DMA | 捕獲/比較通道 | 互補輸出 |
---|---|---|---|---|---|---|---|---|
基本定時器 | TIM6 / TIM7 | APB1 | 16位 | 向上 | 1~65536 | 可以 | 0 | 無 |
通用定時器 | TIM2 /TIM3 /TIM4/ TIM5 | APB1 | 16位 | 向上/向下/中央對齊 | 1~65536 | 可以 | 4 | 無 |
高級定時器 | TIM1 /TIM8 | APB2 | 16位 | 向上/向下/中央對齊 | 1~65536 | 可以 | 4 | 有 |
二、通用定時器的框圖
三、通用定時器知識點匯總
在配置通用定時器前,需要了解一些關于通用定時器的知識點。
1. 時鐘源選擇
基本定時器的時鐘源來自于內部時鐘。而通用定時器的時鐘源有四類:
● 內部時鐘(CK_INT) :總線APB提供的時鐘。
● 外部時鐘模式1:外部輸入腳(TIx) ,來自定時器通道1或者通道2引腳的信號。
TI1F_ED 表示來自于 CH1,并且沒有經過邊沿檢測器過濾的信號,所以它是 CH1 的雙邊沿信號,即上升沿或者下降沿都是有效的。TI1FP1 表示來自 CH1 并經過邊沿檢測器后的信號,可以是上升沿或者下降沿。TI2FP2 表示來自 CH2 并經過邊沿檢測器后的信號,可以是上升沿或者下降沿。
● 外部時鐘模式2:外部觸發輸入(ETR) 。
定時器時鐘信號首先從 ETR 引腳進來。接著經過外部觸發極性選擇器,由 ETP 位來設置上升沿有效還是下降沿有效,選擇下降沿有效的話,信號會經過反相器。然后經過外部觸發預分頻器,由 ETPS[1:0]位來設置預分頻系數,系數范圍:1、2、4、8。緊接著經過濾波器器,由 ETF[3:0]位來設置濾波方式,也可以設置不使用濾波器。fDTS 由TIMx_CR1 寄存器的 CKD 位設置。
● 內部觸發輸入(ITRx):使用一個定時器作為另一個定時器的預分頻器,如可以配置一個定時器Timer1而作為另一個定時器Timer2的預分頻器。
內部觸發輸入是使用一個定時器作為另一個定時器的預分頻器,即實現定時器的級聯。上圖中表示的是TIM1作為TIM2的預分頻器。
設置需要完成以下配置:
(1) TIM1_CR2 寄存器的 MMS[2:0]位設置為 010,即 TIM1 的主模式選擇為更新(選擇更新事件作為觸發輸出 (TRGO))。
(2) TIM2_SMCR 寄存器的 TS[2:0]位設置為 000,即使用 ITR1 作為內部觸發。TS[2:0]位用于配置觸發選擇,除了 ITR1,還有其他的選擇。
(3) TIM2_SMCR 寄存器的 SMS[2:0]位設置為 111,即從模式控制器選擇外部時鐘模式 1。
(4) TIM1 和 TIM2 的 CEN 位都要置 1,即啟動計數器。
計數器時鐘源寄存器設置方法:
計數器時鐘選擇類型 | 設置方法 |
---|---|
內部時鐘(CK_INT) | 設置TIMx_SMCR的SMS=000 |
外部時鐘模式1 | 設置TIMx_SMCR的SMS=111 |
外部時鐘模式2 | 設置TIMx_SMCR的ECE=1 |
內部觸發輸入(ITRx) | 參考STM32F10xxx參考手冊_V10 |
2. 控制器
控制器包括:從模式控制器、編碼器接口和觸發控制器(TRGO)。從模式控制器可以控制計數器復位、啟動、遞增/遞減、計數。編碼器接口針對編碼器計數。觸發控制器用來提供觸發信號給別的外設,比如為其它定時器提供時鐘或者為 DAC/ADC 的觸發轉換提供信號。
3. 時基單元
時基單元包括:計數器寄存器(TIMx_CNT)、預分頻器寄存器(TIMx_PSC)、自動重載寄存器(TIMx_ARR)。這部分內容和基本定時器基本一樣的。
4.模式選擇
如果使用輸入捕獲模式,框圖中的第③部分和④是一起配置的。
如果使用輸出比較模式。框圖中的第④部分和⑤是一起配置的。
注意:如果設置輸入捕獲模式,就不能設置輸出比較模式。只能設置其中一種模式。
5. 框圖分析
<1> 設置輸入捕獲模式,即框圖中的③④。
TIM3_CH1(PA.6) ----> TI1(外部信號) -------> 輸入濾波器]以及邊沿檢測器(檢測上升沿還是下降沿) -----> IC1(濾波器輸出信號) -------> 輸入捕獲預分頻器IC1PSC[1:0] ----> 捕獲/比較1寄存器CCR1。
假設::我們需要捕獲上升沿,則當濾波器和邊沿檢測器捕獲到上升沿后,CNT計數器中的值會加1,同時捕獲/比較寄存器中會鎖存計數器的值。
TI1FP1 是來自于通道TI1,經過輸入濾波和邊沿檢測后送給捕獲比較通道IC1;
TI1FP2 是來自于通道TI1,經過輸入濾波和邊沿檢測后送給捕獲比較通道IC2;
TI1FP1和TI1FP2這兩個信號的特性是一模一樣的,都是通道1的信號經過濾波和邊沿檢測之后產生的信號,只是TI1FP1是送給捕獲比較通道IC1,TI1FP2是送給捕獲比較通道IC2。
其他定時器通道同理!