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