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