新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > stm32高級定時器重新學(xué)習(xí)

stm32高級定時器重新學(xué)習(xí)

作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
最近做項(xiàng)目,用到定時器,索性重新學(xué)習(xí)一下,以前只是用于簡單的pwm生成和中斷處理,對定時器根本就沒有進(jìn)行深入研究,今天借此機(jī)會,重新學(xué)習(xí)一下高級定時器,只要高級定時器學(xué)會了,基本定時器也就沒什么問題了??傮w上來說,stm32的定時器,功能非常多??戳艘幌?,大概有20個功能。我就按照數(shù)據(jù)手冊,一一的重新學(xué)習(xí)一下。


首先是框圖,娘的,看著就眼暈

本文引用地址:http://butianyuan.cn/article/201611/324053.htm

1、時基:包含計數(shù)器寄存器(TIMx_CNT) 預(yù)分頻器寄存器 (TIMx_PSC) 自動裝載寄存器 (TIMx_ARR) 重復(fù)次數(shù)寄存器 (TIMx_RCR)
計數(shù)類似于51單片機(jī)中的TH1和TL1。預(yù)分頻器就是將輸入時鐘進(jìn)行降低。重復(fù)寄存器類似與51中的自動裝載模式中的TH寄存器。最后一個寄存器與產(chǎn)生更新時間UEV與影子寄存器有關(guān)。UEV時間更新,對于預(yù)分頻寄存器來說,他可以看成兩個寄存器,一個叫可讀寫的,一個叫緩沖的,預(yù)分頻是根據(jù)緩沖為標(biāo)準(zhǔn)的,設(shè)置的時候,將數(shù)據(jù)寫入可讀寫,然后等待UEV時間的到來,在將可讀寫的寫入緩沖來更新。這就是UEV的作用。影子寄存器主要是防止多通道時序錯誤的問題。
有興趣的可以看一下http://blog.163.com/liuyunqian@yeah/blog/static/70395843201043094819579/
2、計數(shù)器模式:向上,向下,上下計數(shù)
向上計數(shù)從0開始,到TIMx_APR,產(chǎn)生溢出,溢出時產(chǎn)生UEV,然后更新影子寄存器。若設(shè)置了TIMx_RCR,則到TIMx_RCR時即產(chǎn)生UEV。否則只能到溢出時產(chǎn)生UEV。
向下計數(shù)從TIMx_APR遞減到0,產(chǎn)生溢出,對于UEV和上面類似
中央對齊模式:從0遞增到TIMx_APR-1,產(chǎn)生溢出,然后在遞減到0,產(chǎn)生下溢。有1、2、3,三種模式,其中2、3和UIF有關(guān)
3、重復(fù)計數(shù)器:產(chǎn)生UEV。對PWM和輸入捕獲很有用處。
4、時鐘源:1、內(nèi)部時鐘。
2、外部時鐘模式1:外部輸入引腳 外部時鐘模式2:外部觸發(fā)輸入ETR
3、內(nèi)部觸發(fā)輸入(ITRx):使用一個定時器作為另一個定時器的預(yù)分頻器。如可以配置一個定時器Timer1而作為另一個定時器Timer2的預(yù)分頻器。
5、捕獲比較通道:主要多用于計頻和pwm輸出。t1和t8高級定時器通道中含有死區(qū)控制,使用時可設(shè)置。
對于時間測量:一個方法是測頻率,另一個是測周期,測頻率在限定的時間內(nèi)(如1秒鐘)檢測脈沖的個數(shù),測周期測試限定的脈沖個數(shù)之間的時間。
考慮的問題:
(1)、系統(tǒng)時鐘:頻率與精度,(2)、計數(shù)器位數(shù),一般為16位,可以產(chǎn)生的限定時間越長,或在限定時間里記錄的脈沖個數(shù)越多。(3)、被測頻率的范圍,低頻檢測兩個脈沖時間,高頻在一定時間內(nèi)檢測脈沖個數(shù)。(4)、中斷響應(yīng)與軟件算法。
6、輸入捕獲模式:(1)配置TIMx的CCRx為輸入模式,即TIMx->CCMRx的0和1位為 "0x01" "0x02" 或"0x03"。(2)配置輸入濾波器,即TIMx->CCMRx的4-7位或15-12位。(3)配置通道的有效轉(zhuǎn)換邊沿,即TIMx->CCER的"1","5","9","13"位,0為上升沿,1為下降沿。(4)配置預(yù)分頻器,TIMx->CCMRx的第2-3位或第11-10位。(5)設(shè)置TIMx->CCER的"0","4","8","12"位(6)設(shè)置TIMx->DIER的中斷允許位。
對于輸入捕獲,應(yīng)該是在中斷中進(jìn)行處理。 可以計算高低電平的時間,同時也可以針對紅外解碼進(jìn)行編程配置。
當(dāng)檢測到捕獲后進(jìn)入中斷開始處理。也可進(jìn)入dma,或讀取CCRx。
7,PWM輸入:對于PWM輸入,主要是測頻率與測占空比。配置時,把1個引腳觸發(fā)映射到兩個CCRx中去,同時,將兩個CCR配置成為邊沿極性相反輸入,這樣的話,可以一個用來計頻率,另一用來計占空比。當(dāng)頻率邊沿跳變時,記錄周期與占空比后,計數(shù)器清零,然后計算具體數(shù)據(jù)。
8,強(qiáng)置輸出模式:通過設(shè)置CCMR寄存器,可以使OCxREF強(qiáng)制為高或低一種狀態(tài)。且計數(shù)器和比較器仍在工作,并產(chǎn)生中斷或DMA。
9,輸出比較模式
圖片
10,PWM模式:TIMx_ARR決定周期周期,CCRx決定占空比。cnt計數(shù)到CCRx時,跳變電平。4路的占空比,可以獨(dú)立設(shè)置。
11,單脈沖模式:從模式啟動,在 輸出比較 或者 PWM 下產(chǎn)生波形。
12,在外部事件時清除OCxREF信號,外加比較器,可用于控制電流。例|:外部觸發(fā)預(yù)分頻器必須處于關(guān)閉,必須禁止外部時鐘模式2:TIMx_SMCR寄存器中的ECE=’0’。外部觸發(fā)極性(ETP)和外部觸發(fā)濾波器(ETF)可以根據(jù)需要配置。
13,編碼器接口模式:用于編碼器的脈沖和相位測量,在第一通道和第二通道中設(shè)置。對于編碼器而言,有A、B兩相相差90度,可通過比較A相在前還是B相在前,以判別編碼器的正轉(zhuǎn)與反轉(zhuǎn),通過零位脈沖,可獲得編碼器的零位參考位。并且可以測量兩個編碼器事件的間隔,獲得動態(tài)的信息(速度,加速度,減速度)等。
我們假定配置如下: ● CC1S=’01’ (TIMx_CCMR1寄存器,IC1FP1映射到TI1) ● CC2S=’01’ (TIMx_CCMR2寄存器,IC2FP2映射到TI2) ● CC1P=’0’ (TIMx_CCER寄存器,IC1FP1不反相,IC1FP1=TI1) ● CC2P=’0’ (TIMx_CCER寄存器,IC2FP2不反相,IC2FP2=TI2) ● SMS=’011’ (TIMx_SMCR寄存器,所有的輸入均在上升沿和下降沿有效). ● CEN=’1’ (TIMx_CR1寄存器,計數(shù)器使能)
14,定時器輸入異或功能:TIMx_CR2寄存器中的TI1S位,允許通道1的輸入濾波器連接到一個異或門的輸出端,異或門的3個輸入端為TIMx_CH1、TIMx_CH2和TIMx_CH3。 13.3.18異或輸出能夠被用于所有定時器的輸入功能,如觸發(fā)或輸入捕獲。下節(jié)給出了此特性用于連接霍爾傳感器的例子。
15,霍爾傳感器:定時器輸入異或的應(yīng)用,用于電機(jī)的測速。他可以映射到通用定時器,T2-T5,用T1或T8來控制電機(jī)。
16,TIMx定時器和外部觸發(fā)的同步:TIMx定時器能夠在多種模式下和一個外部的觸發(fā)同步:復(fù)位模式、門控模式和觸發(fā)模式。
復(fù)位模式:能在外部觸發(fā)時,使計數(shù)器復(fù)位。
門控模式:按照選中的輸入端電平使能計數(shù)器。
觸發(fā)模式:輸入端上選中的事件使能計數(shù)器
外部時鐘模式2可以與另一種從模式(外部時鐘模式1和編碼器模式除外)一起使用。這時,ETR信號被用作外部時鐘的輸入,在復(fù)位模式、門控模式或觸發(fā)模式可以選擇另一個輸入作為觸發(fā)輸入。不建議使用TIMx_SMCR寄存器的TS位選擇ETR作為TRGI。
17:定時器同步,使一個定時器作為另一個定時器的預(yù)分頻器。使用一個定時器使能另一個定時器(如:定時器2的使能由定時器1的輸出比較控制)使用一個定時器去啟動另一個定時器。使用一個外部觸發(fā)同步地啟動2個定時器。
18:調(diào)試模式,具體就不去討論了。
總體上來說,STM32的定時器功能非常多,也非常復(fù)雜,加入了電機(jī)控制的一些功能。初步的大概也就這意思。至于如何使用,還要在項(xiàng)目中細(xì)細(xì)研究。



關(guān)鍵詞: stm32定時

評論


技術(shù)專區(qū)

關(guān)閉