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