STM32 TImer幾種模式_通用定時器
庫函數(shù)例程位置: STM32F10x_StdPeriph_Lib_V3.3.0ProjectSTM32F10x_StdPeriph_ExamplesTIMInputCapture
本文引用地址:http://cafeforensic.com/article/201611/316412.htm在輸入捕獲模式下,當檢測到ICx信號上相應的邊沿后,計數(shù)器的當前值被鎖存到捕獲/比較寄存器(TIMx_CCRx)中。當捕獲事件發(fā)生時,相應的CCxIF標志(TIMx_SR寄存器)被置’1’,如果使能了中斷或者DMA操作,則將產(chǎn)生中斷或者DMA操作。
在捕獲模式下,捕獲發(fā)生在影子寄存器上,然后再復制到預裝載寄存器中。
PWM輸入模式
庫函數(shù)例程位置 :STM32F10x_StdPeriph_Lib_V3.3.0ProjectSTM32F10x_StdPeriph_ExamplesTIMPWM_Input
該模式是輸入捕獲模式的一個特例
例如,你需要測量輸入到TI1上的PWM信號的長度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2寄存器),具體步驟如下(取決于CK_INT的頻率和預分頻器的值)
● 選擇TIMx_CCR1的有效輸入:置TIMx_CCMR1寄存器的CC1S=01(選擇TI1)。
● 選擇TI1FP1的有效極性(用來捕獲數(shù)據(jù)到TIMx_CCR1中和清除計數(shù)器):置CC1P=0(上升沿有效)。
● 選擇TIMx_CCR2的有效輸入:置TIMx_CCMR1寄存器的CC2S=10(選擇TI1)。
● 選擇TI1FP2的有效極性(捕獲數(shù)據(jù)到TIMx_CCR2):置CC2P=1(下降沿有效)。
● 選擇有效的觸發(fā)輸入信號:置TIMx_SMCR寄存器中的TS=101(選擇TI1FP1)。
● 配置從模式控制器為復位模式:置TIMx_SMCR中的SMS=100。
● 使能捕獲:置TIMx_CCER寄存器中CC1E=1且CC2E=1。
由于只有TI1FP1和TI2FP2連到了從模式控制器,所以PWM輸入模式只能使用TIMx_CH1 /TIMx_CH2信號。
強置輸出模式
在輸出模式(TIMx_CCMRx寄存器中CCxS=00)下,輸出比較信號(OCxREF和相應的OCx)能夠直接由軟件強置為有效或無效狀態(tài),而不依賴于輸出比較寄存器和計數(shù)器間的比較結(jié)果。
例如:CCxP=0(OCx高電平有效),則OCx被強置為高電平。 置TIMx_CCMRx寄存器中的OCxM=100,可強置OCxREF信號為低。
輸出比較模式
此項功能是用來控制一個輸出波形,或者指示一段給定的的時間已經(jīng)到時。 當計數(shù)器與捕獲/比較寄存器的內(nèi)容相同時,輸出比較功能做如下操作:
● 將輸出比較模式(TIMx_CCMRx寄存器中的OCxM位)和輸出極性(TIMx_CCER寄存器中的CCxP位)定義的值輸出到對應的引腳上。在比較匹配時,輸出引腳可以保持它的電平(OCxM=000)、被設置成有效電平(OCxM=001)、被設置成無效電平(OCxM=010)或進行翻轉(zhuǎn)(OCxM=011)。
● 設置中斷狀態(tài)寄存器中的標志位(TIMx_SR寄存器中的CCxIF位)。
● 若設置了相應的中斷屏蔽(TIMx_DIER寄存器中的CCxIE位),則產(chǎn)生一個中斷。
● 若設置了相應的使能位(TIMx_DIER寄存器中的CCxDE位,TIMx_CR2寄存器中的CCDS位選擇DMA請求功能),則產(chǎn)生一個DMA請求。
輸出比較模式的配置步驟:
1. 選擇計數(shù)器時鐘(內(nèi)部,外部,預分頻器)
2. 將相應的數(shù)據(jù)寫入TIMx_ARR和TIMx_CCRx寄存器中
3. 如果要產(chǎn)生一個中斷請求和/或一個DMA請求,設置CCxIE位和/或CCxDE位。
4. 選擇輸出模式,例如當計數(shù)器CNT與CCRx匹配時翻轉(zhuǎn)OCx的輸出引腳,CCRx預裝載未用,開啟OCx輸出且高電平有效,則必須設置OCxM=’011’、OCxPE=’0’、CCxP=’0’和CCxE=’1’。
5. 設置TIMx_CR1寄存器的CEN位啟動計數(shù)器
PWM 模式
脈沖寬度調(diào)制模式可以產(chǎn)生一個由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號。
在TIMx_CCMRx寄存器中的OCxM位寫入’110’(PWM模式1)或’111’(PWM模式2),能夠獨立地設置每個OCx輸出通道產(chǎn)生一路PWM。必須設置TIMx_CCMRx寄存器OCxPE位以使能相應的預裝載寄存器,最后還要設置TIMx_CR1寄存器的ARPE位,(在向上計數(shù)或中心對稱模式中)使能自動重裝載的預裝載寄存器。
下面是一個PWM模式1的例子。當TIMx_CNT 單脈沖模式 單脈沖模式(OPM)是前述眾多模式的一個特例。這種模式允許計數(shù)器響應一個激勵,并在一個程序可控的延時之后,產(chǎn)生一個脈寬可程序控制的脈沖。 可以通過從模式控制器啟動計數(shù)器,在輸出比較模式或者PWM模式下產(chǎn)生波形。設置TIMx_CR1寄存器中的OPM位將選擇單脈沖模式,這樣可以讓計數(shù)器自動地在產(chǎn)生下一個更新事件UEV時停止。 僅當比較值與計數(shù)器的初始值不同時,才能產(chǎn)生一個脈沖。啟動之前(當定時器正在等待觸發(fā)),必須如下配置: 向上計數(shù)方式:CNT < CCRx ≤ ARR (特別地,0 < CCRx), 向下計數(shù)方式:CNT > CCRx。 編碼器接口模式 兩個輸入TI1和TI2被用來作為增量編碼器的接口。參看表77,假定計數(shù)器已經(jīng)啟動(TIMx_CR1寄存器中的CEN=’1’),計數(shù)器由每次在TI1FP1或TI2FP2上的有效跳變驅(qū)動。TI1FP1和TI2FP2是TI1和TI2在通過輸入濾波器和極性控制后的信號;如果沒有濾波和變相,則TI1FP1=TI1,TI2FP2=TI2。根據(jù)兩個輸入信號的跳變順序,產(chǎn)生了計數(shù)脈沖和方向信號。依據(jù)兩個輸入信號的跳變順序,計數(shù)器向上或向下計數(shù),同時硬件對TIMx_CR1寄存器的DIR位進行相應的設置。不管計數(shù)器是依靠TI1計數(shù)、依靠TI2計數(shù)或者同時依靠TI1和TI2計數(shù)。在任一輸入端(TI1或者TI2)的跳變都會重新計算DIR位。 編碼器接口模式基本上相當于使用了一個帶有方向選擇的外部時鐘。這意味著計數(shù)器只在0到TIMx_ARR寄存器的自動裝載值之間連續(xù)計數(shù)(根據(jù)方向,或是0到ARR計數(shù),或是ARR到0計數(shù))。所以在開始計數(shù)之前必須配置TIMx_ARR;同樣,捕獲器、比較器、預分頻器、觸發(fā)輸出特性等仍工作如常。 在這個模式下,計數(shù)器依照增量編碼器的速度和方向被自動的修改,因此計數(shù)器的內(nèi)容始終指示著編碼器的位置。計數(shù)方向與相連的傳感器旋轉(zhuǎn)的方向?qū)O卤砹谐隽怂锌赡艿慕M合,假設TI1和TI2不同時變換。 ● 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ù)器使能) TIM 與Hall接口 霍爾傳感器位于三相電機
下圖是一個計數(shù)器操作的實例,顯示了計數(shù)信號的產(chǎn)生和方向控制。它還顯示了當選擇了雙邊沿時,輸入抖動是如何被抑制的;抖動可能會在傳感器的位置靠近一個轉(zhuǎn)換點時產(chǎn)生。在這個例子中,我們假定配置如下:
評論