訪問網(wǎng)站有音樂背景怎么做網(wǎng)站推廣計劃
目錄
通用定時器(TIM2~5)框圖
1、?輸入時鐘源選擇
2、 時基單元
3 、輸入捕獲:(IC—Input Capture)
3.1 輸入捕獲通道框圖(TI1為例)
3.1.1 濾波器:
3.1.2 邊沿檢測器:
3.1.3 捕獲通道:
3.2 PWM輸入模式
4、 輸出比較:(OC—Output Compare)
4.1 PWM
4.2 PWM模式
4.3 PWM參數(shù)計算
4.4 相關(guān)寄存器
5、 GPIO配置
在前一章節(jié),我們介紹了STM32的基本定時器STM之四:TIM定時器(1-基本定時器),本節(jié)介紹通用定時器,通用定時器包含基本定時器的所有功能,除此之外,其還能有輸入捕獲、輸出比較、編碼器接口、主從觸發(fā)模式等功能。
通用定時器(TIM2~5)框圖
可以將通用定時器框圖分為4部分,其中第一部分為輸入時鐘源選擇;第二部分為時基單元;第三部分為輸入捕獲;第四部分為輸出比較。
1、?輸入時鐘源選擇
有4種選擇方式:
- 內(nèi)部時鐘(CK_INT):時鐘信號來自于芯片內(nèi)部,等于72M,一般情況下都是使用內(nèi)部時鐘。
- 外部時鐘模式1:時鐘信號來自于定時器的輸入通道,即TI1/2/3/4。
- 外部時鐘模式2:時鐘信號來自于定時器的特定輸入通道TIMx_ETR。
- 內(nèi)部觸發(fā)輸入(ITRx):使用一個定時器作為另一個定時器的預分頻器,用來實現(xiàn)定時器同步或級聯(lián),主模式的定時器可以對從模式定時器執(zhí)行復位、啟動、停止或提供時鐘。
2、 時基單元
這部分可參考STM之四:TIM定時器(1-基本定時器)2.2.3章節(jié)部分。此處講解與基本定時器不同的部分?;径〞r器的計數(shù)器只能向上計數(shù),但是通用定時器的計數(shù)器有三種模式,分別是:向上計數(shù),向下計數(shù),中心對齊模式。
- 向上計數(shù):計數(shù)器從0開始計數(shù),CK_CNT每來一個脈沖,計數(shù)器就+1,直到計數(shù)器的值與自動重裝載寄存器ARR的值相等。此時計數(shù)器從0開始重新計數(shù)并生成計數(shù)器上溢事件。
- 向下計數(shù):計數(shù)器初始值=自動重裝載寄存器ARR的值,CK_CNT每來一個脈沖,計數(shù)器CNT的值就減1,直到計數(shù)器的值為0。此時計數(shù)器從ARR的值開始重新計數(shù)并生成計數(shù)器下溢事件。
- 中心對齊模式:計數(shù)器從0開始向上計數(shù),直到CNT的值等于(ARR-1)時生成計數(shù)器上溢事件,然后從ARR的值開始向下計數(shù),直到CNT的值等于1時生成計數(shù)器下溢事件。
3 、輸入捕獲:(IC—Input Capture)
輸入捕獲可以用來測量脈沖寬度或者測量頻率。在輸入捕獲模式下,當檢測到TIMx_CHx上的邊沿信號發(fā)生跳變的時候,將當前定時器的值(TIMx_CNT)存放到對應的通道的捕獲/比較寄存器(TIMx_CCRx)里面,完成一次捕獲。
例如通過輸入捕獲來捕獲高電平脈寬。常用的做法可以先設置TIMx_CHx為上升沿檢測,記錄發(fā)生上升沿的時候TIMx_CNT的值。然后配置捕獲信號為下降沿捕獲,當下降沿到來時,發(fā)生捕獲,并記錄此時的TIMx_CNT的值。這樣前后兩次TIMx_CNT之差,就是高電平的脈寬。
3.1 輸入捕獲通道框圖(TI1為例)
觀看框圖,我們可以發(fā)現(xiàn),輸入通道TI1首先進入到濾波器輸出為TI1F,濾波器還有另外兩個輸入項:fDTS和ICF[3:0],之后TI1F經(jīng)過邊沿檢測器后輸出為TI1FP1,之后將輸入通道的信號(TI1FP1/TI2FP2)映射到捕獲通道IC1上,經(jīng)分頻器后輸入IC1PS中,接入到輸入/捕獲寄存器。TI1FP1另外還有一個輸出至從模式控制器,從模式控制器可以在捕獲之后自動完成CNT的清零工作,一般常用于PWM模式下(下文4.1章節(jié)有介紹PWM)。下面我們分別介紹這幾個階段。
3.1.1 濾波器:
? ? ? ? 濾波器的作用是對高頻信號進行濾波,重新采樣。根據(jù)采樣定律,采樣的頻率必須大于等于兩倍的輸入信號。濾波器的配置由CR1寄存器的CKD位和CCMR寄存器的ICxF位來控制。
這個看的時候很難理解,看到正點原子這里解釋的易懂,可參考下。
輸入捕獲1濾波器IC1F[3:0]用來設置輸入采樣頻率和數(shù)字濾波器長度,見下圖。其中
是定時器的輸入頻率(TIMxCLK,這個不了解可以看前面基本定時器章節(jié)的框圖),一般是72MHz,而
則是根據(jù)TIMxCR1寄存器的CKD[1:0]位來設置的,如果CKD[1:0]=00,則
=
,N值是濾波長度。
舉個例子:假設IC1F[3:0]=0011,并設置IC1映射到通道1上,且為上升沿觸發(fā),那么在捕獲到上升沿的時候,再以
的頻率連續(xù)采樣到8次通道1的電平,如果都是高電平,則說明是一個有效的觸發(fā),就會觸發(fā)輸入捕獲中斷(如果開啟了的話)。這樣可以濾掉那些高電平脈寬低于8個采樣周期的脈沖信號,從而達到濾波的效果。
CKD[1:0]是時鐘分頻因子,決定,
是
經(jīng)過分頻后得到的頻率,其關(guān)系見下圖CKD位描述。?
3.1.2 邊沿檢測器:
? ? ? ? 邊沿檢測器用來設置捕獲什么邊沿的信號,可以是上升沿、下降沿、或者是雙邊沿,可通過配置捕獲/比較使能寄存器TIMx_CCER的CCxP位決定,CCxP=0是上升沿捕獲。
3.1.3 捕獲通道:
? ? ? ? 共有4個捕獲通道,即IC1/2/3/4,每個捕獲通道都有相對應的捕獲寄存器CCR1/2/3/4,當發(fā)生捕獲的時候,計數(shù)器CNT的值就會被鎖存到捕獲寄存器CCR中。
? ? ? ? 這里要搞清楚輸入通道和捕獲通道,4個輸入通道分別為TI1/2/3/4,是為了輸入信號的,而捕獲通道是用來捕獲輸入通道的信號的。輸入通道并不是一一對應捕獲通道的,一個輸入通道的信號可以同時輸入給兩個捕獲通道。????????
????????看下圖,輸入通道TI1可以占用捕獲通道IC1和IC2,輸入通道TI2可以占用捕獲通道IC1和IC2,輸入通道TI3可以占用捕獲通道IC3和IC4,輸入通道TI4可以占用捕獲通道IC3和IC4。這樣進行交叉連接的目的是兩個:?1.一個輸入通道靈活切換兩個捕獲通道,可以靈活切換后續(xù)捕獲電路的輸入;?2.兩個通道同時捕獲一個引腳,可以把一個引腳的輸入,同時映射到兩個捕獲單元,這也是PWM輸入捕獲的經(jīng)典結(jié)構(gòu),實現(xiàn)兩個通道(IC)對一個引腳(TI)進行捕獲,就可以同時測量頻率和占空比,具體可詳見下面3.2章節(jié)PWM輸入模式。

辰哥單片機設計?STM32-定時器詳解,侵刪。這個圖比較清晰,一目了然)
?通過TIMxCMMRx寄存器的CCxS位可以配置捕獲通道映射在那個輸入通道上,詳看下圖:
看完上面的說明,在讀下參考手冊的輸入捕獲模式的介紹,應該就會有一個全面的了解了。
?B站江協(xié)科技up主對于輸入捕獲總結(jié)的很詳細,此處引用其總結(jié)框圖
3.2 PWM輸入模式
PWM模式是輸入捕獲的一個特殊情況,在該模式下同一個輸入通道(例如TI1)占用兩個捕獲通道(IC1和IC2),兩個通道的捕獲邊沿極性相反(因為PWM輸入捕獲模式下,其中一個捕獲通道測量周期,另外一個捕獲通道測量占空比,周期需要捕獲兩個連續(xù)的相同邊沿例如兩個上升沿來進行測量,但是測量占空比需要捕獲一個上升沿,之后緊接著捕獲一個下降沿來測量高電平脈寬,因此兩個捕獲邊沿極性相反)。
CCR對CNT進行捕獲之后,需要對CNT進行一次清0操作,這樣每次捕獲得到的值才是兩個上升沿(下降沿)之間的時間間隔。這個清零操作,可以使用主從模式通過硬件自動完成。由輸入捕獲輸入部分框圖來看,TI1FP1信號可以通向從模式控制器,從模式控制器可以通過硬件電路自動完成CNT清零操作。
下面我們看下主模式、從模式、觸發(fā)源這三個概念。
主模式可以將定時器內(nèi)部的信號映射到TRGO引腳,用于觸發(fā)其他外設的操作;從模式可以接收其他外設或自身外設的一些信號,用于觸發(fā)自己的一些操作(定時器的運行);觸發(fā)源選擇,即選擇從模式的觸發(fā)信號源功能,也可以認為它是從模式的一部分。

主從模式可以使用TIMx_CR2寄存器的MMS位進行配置。
從模式控制寄存器TIMx_SMCR的SMS位可以進行從模式選擇,TS位進行觸發(fā)選擇。?
同樣,參考手冊中對于PWM輸入模式說明的也很詳細,可參考理解。
同樣,引入B站江協(xié)科技UP的總結(jié)框圖,有利于記憶和理解。
首先TI1FP1配置上升沿觸發(fā),觸發(fā)捕獲和清零CNT,正常的捕獲周期,再來一個TI1FP2,配置為下降沿觸發(fā),通過交叉通道去觸發(fā)通道2的捕獲單元(最開始上升沿CCR1捕獲同時清零CNT,之后CNT一直加,然后在下降沿時刻觸發(fā)CCR2捕獲,這時CCR2的值就是CNT從上升沿到下降沿的計數(shù)值也就是高電平期間的計數(shù)值,CCR2捕獲并不觸發(fā)CNT清零,所以CNT繼續(xù)加,直到下一次上升沿,CCR1捕獲周期并CNT清零,這樣執(zhí)行之后CCR1就是一整個周期的計數(shù)值,CCR2就是高電平期間的計數(shù)值,用CCR2/CCR1就是占空比,以上就是PWMI模式使用兩個通道來捕獲頻率和占空比的思路
4、 輸出比較:(OC—Output Compare)
輸出比較功能是用來控制一個輸出波形,就是通過定時器的外部引腳對外輸出控制信號,可輸出八種模式,具體哪種模式可由捕獲/比較模式寄存器TIMx_CCMRx的OCxM[2:0]位配置。

其中使用最常見的是PWM模式。
4.1 PWM
PWM(Pulse Width Modulation)簡稱脈寬調(diào)制,是一種利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種技術(shù)。
4.2 PWM模式
定時器輸出比較的PWM模式可以產(chǎn)生一個由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號。在PWM模式下,TIMx_CNT和TIMx_CCRx始終在進行比較,根據(jù)比較值對輸出進行置1、置0或者翻轉(zhuǎn)的操作。
以CCR1為例,CNT和CCR1經(jīng)過比較,將比較值輸入到輸出模式控制器中,輸出模式控制器共有8種模式(即為上圖輸出比較模式的8種),PWM下可以選擇PWM1和PWM2模式,這兩種模式不同之處在于輸出的極性相反。輸出模式控制器輸出一個oc1ref信號,該信號為輸出參考信號,該信號后續(xù)有兩路輸出,其中一路輸出至主模式控制器,PWM模式下不關(guān)注這個。另外一路輸出至一個選擇器,該選擇器由TIMx_CCER寄存器CCxP控制,若oc1ref為0,則直接接入到輸出使能電路。若oc1ref為1,則該信號通過非門跳轉(zhuǎn)信號接入至輸出使能電路。輸出使能電路由TIMx_CCER寄存器TIMx_CCxE位控制,后續(xù)經(jīng)過OC1通道輸出信號。
4.3 PWM參數(shù)計算
4.4 相關(guān)寄存器
主要有3個寄存器來控制PWM,分別是:捕獲/比較模式寄存器(TIMx_CCMR1/2)、捕獲/比較使能寄存器(TIMx_CCER)、捕獲/比較寄存器(TIMx_CCR1~4)。
捕獲/比較模式寄存器共有兩個(TIMx_CCMR1/2)共有2個,TIMx_CCMR1控制CH1和CH2,TIMx_CCMR2控制CH3和CH4。其中通過配置OCxM[2:0]位為110、111,即PWM1和PWM2模式。
捕獲/比較使能寄存器,主要用到了CCxE位,改位為輸入捕獲/輸出比較使能位。要想PWM從I/O口輸出,則該位必須置1。
在輸出模式下,捕獲/比較寄存器(TIMx_CCRx)的值與CNT的值比較,根據(jù)比較結(jié)果產(chǎn)生相應動作,所以,利用這點通過修改CCRx寄存器的值,可以調(diào)整PWM輸出的脈寬。
最后看下參考手冊中對于PWM輸出模式的介紹,加深下了解。
5、 GPIO配置
此處在注意下各種不同模式下,GPIO口的配置