新聞中心

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

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

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


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

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

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



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

評(píng)論


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

關(guān)閉