




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
STM32入門篇之通用定時(shí)器徹底研究STM32的定時(shí)器功能很強(qiáng)大,學(xué)習(xí)起來(lái)也很費(fèi)勁兒,本人在這卡了5天才算看明白。寫下下面的文字送給后來(lái)者,希望能帶給你點(diǎn)啟發(fā)。在此聲明,本人也是剛?cè)腴T,接觸STM32不足10天,所以有失誤的地方請(qǐng)以手冊(cè)為準(zhǔn),歡迎大家拍磚。其實(shí)手冊(cè)講的還是挺全面的,只是無(wú)奈timer的功能太復(fù)雜,所以顯得手冊(cè)很難懂,我就是通過(guò)這樣看手冊(cè):while(!SUCCESS){看手冊(cè)…}才搞明白的!所以接下來(lái)我以手冊(cè)的順序?yàn)橹骶€,增加一些自己的理解,并通過(guò)11個(gè)例程對(duì)TIMER做個(gè)剖析。實(shí)驗(yàn)環(huán)境是STM103V100的實(shí)驗(yàn)板,MDK3.2+Library2.東西都不怎么新,湊合用......TIMER主要是由三部分組成:1、時(shí)基單元。2、輸入捕獲。3、輸出比較。還有兩種模式控制功能:從模式控制和主模式控制。一、框圖讓我們看下手冊(cè),一開(kāi)始是定時(shí)器的框圖,這里面幾乎包含了所有定時(shí)器的信息,您要是能看明白,那么接下來(lái)就不用再看別的了…為了方便的看圖,我對(duì)里面出現(xiàn)的名詞和符號(hào)做個(gè)注解:TIMx_ETR:TIMER外部觸發(fā)引腳ETR:外部觸發(fā)輸入ETRP:分頻后的外部觸發(fā)輸入ETRF:濾波后的外部觸發(fā)輸入ITRx:內(nèi)部觸發(fā)x(由另外的定時(shí)器觸發(fā))TI1F_ED:TI1的邊沿檢測(cè)器。TI1FP1/2:濾波后定時(shí)器1/2的輸入TRGI:觸發(fā)輸入TRGO:觸發(fā)輸出CK_PSC:應(yīng)該叫分頻器時(shí)鐘輸入CK_CNT:定時(shí)器時(shí)鐘。(定時(shí)周期的計(jì)算就靠它)TIMx_CHx:TIMER的輸入腳TIx:應(yīng)該叫做定時(shí)器輸入信號(hào)xICx:輸入比較xICxPS:分頻后的ICxOCx:輸出捕獲xOCxREF:輸出參考信號(hào)關(guān)于框圖還有以下幾點(diǎn)要注意:1、影子寄存器。有陰影的寄存器,表示在物理上這個(gè)寄存器對(duì)應(yīng)2個(gè)寄存器,一個(gè)是程序員可以寫入或讀出的寄存器,稱為preloadregister(預(yù)裝載寄存器),另一個(gè)是程序員看不見(jiàn)的、但在操作中真正起作用的寄存器,稱為shadowregister(影子寄存器);輸入濾波機(jī)制在ETR何TIx輸入端有個(gè)輸入濾波器,它的作用是以采樣頻率Fdts來(lái)采樣N次進(jìn)行濾波的。2、輸入引腳和輸出引腳是相同的。二、時(shí)基單元時(shí)基單元有三個(gè)部分:CNT、PSC、ARR。CNT的計(jì)數(shù)方式分三種:向上、向下、中央對(duì)齊。通俗的說(shuō)就是0—ARR、ARR—0、0—(ARR-1)—ARR—1.三、時(shí)鐘源的選擇這個(gè)是難點(diǎn)之一。從手冊(cè)上我們看到共有三種時(shí)鐘源:1、內(nèi)部時(shí)鐘。也就是選擇CK_INT做時(shí)鐘,這個(gè)簡(jiǎn)單,但是有一點(diǎn)要注意,定時(shí)器的時(shí)鐘不是直接來(lái)自APB1或APB2,而是來(lái)自于輸入為APB1或APB2的一個(gè)倍頻器,當(dāng)APB1的預(yù)分頻系數(shù)為1時(shí),這個(gè)倍頻器不起作用,定時(shí)器的時(shí)鐘頻率等于APB1的頻率;當(dāng)APB1的預(yù)分頻系數(shù)為其它數(shù)值(即預(yù)分頻系數(shù)為2、4、8或16)時(shí),這個(gè)倍頻器起作用,定時(shí)器的時(shí)鐘頻率等于APB1的頻率兩倍。例如AHP72M,APB12分頻36M,那么TIMER就是APB1的2倍頻,即72M。怎么選擇時(shí)鐘模式1呢?只要將SMCR中SMS[2:0]弄成000就好了SMCR1514131211109876543210ETPECEETPS[1:0]ETF[3:0]MSMTS[2:0]SMS[2:0]2、外部時(shí)鐘模式1這個(gè)比較麻煩,時(shí)鐘源選擇的其實(shí)就是TRGI(觸發(fā)輸入),但觸發(fā)輸入選擇挺多的,共8個(gè)......??纯驁D,他們是:ITRx、TI1F_ED、TI1FP1、TI2FP2、ETRFITRx的東西跟定時(shí)器的級(jí)聯(lián)有關(guān),暫時(shí)不管他。要進(jìn)入這種時(shí)鐘模式首先置SMS為111,當(dāng)然這還沒(méi)完,不像內(nèi)部時(shí)鐘那樣,什么都配好了,這里你還得配置一下別的參數(shù),比如選擇TI1FP1,自然要對(duì)輸入通道1的參數(shù)配置好,這樣時(shí)鐘才能按你需要的方式進(jìn)來(lái)。就是配框圖這塊相關(guān)寄存器CCMR1(輸入)
IC2F[3:0]IC2PSC[1:0]CC2S[1:0]IC1F[3:0]IC1PSC[1:0]CC1S[1:0]CCER1514131211109876541514131211109876543210CC4PCC4ECC3PCC3ECC2PCC2ECC1PCC1ESMCR15141312111098765431514131211109876543210ETPECEETPS[1:0]ETF[3:0]MSMTS[2:0]SMS[2:0]在CCMR1寄存器里選擇好相應(yīng)的輸入(CC1S)和濾波(IC1F)后再配置好輸入極性(CCIP)然后在SMCR中選擇觸發(fā)源(TS[2:0])為TI1這樣輸入通道就配好了!最后選擇SMS為111,開(kāi)啟時(shí)鐘(CR1中的CEN)?,F(xiàn)在時(shí)鐘就是從TI1上的輸入了,可以接個(gè)時(shí)鐘源進(jìn)行計(jì)數(shù)之類的。同理,如果要用ETR就把它相關(guān)通道配好就可以了。3、外部時(shí)鐘模式2選擇外部輸入作為時(shí)鐘,看框圖:TIIFFITI2FP2tttfi?適炸、邊沿從圖上可以看出ETR可以直接作為時(shí)鐘輸入也可以通過(guò)觸發(fā)輸入(TRGI)來(lái)作為時(shí)鐘輸入即在時(shí)鐘模式1中觸發(fā)源選擇為ETR,兩個(gè)效果上是一樣的,看起來(lái)好像這個(gè)外部時(shí)鐘模式2沒(méi)什么用處,實(shí)際上不是的,他可以跟一些從模式(復(fù)位、觸發(fā)、門控)進(jìn)行組合。比如當(dāng)從模式選為觸發(fā)時(shí),我們不可能再通過(guò)觸發(fā)源選擇ETR了,因?yàn)閺哪J娇刂破鞅徽剂?,好在有外部時(shí)鐘模式2,我們選擇這種模式后就可以把兩TIIFFITI2FP2tttfi?適炸、邊沿總結(jié)一下,STM32的時(shí)鐘選擇比較特別,在SFR中關(guān)于時(shí)鐘選擇配置位不再一塊,不是說(shuō)兩個(gè)位在一起00、01、11就選擇了而是由SMCR中SMS和ECE來(lái)控制,這樣感覺(jué)可以吧內(nèi)部時(shí)鐘與外部模式2同時(shí)打開(kāi)(SMS:000,ECE:1),也可以吧外部模式1和外部模式2同時(shí)打開(kāi)(SMS:111,ECE:1),實(shí)際上上述兩種方式用的都是外部時(shí)鐘2.四、捕獲比較通道這就是我說(shuō)的定時(shí)器三個(gè)組成部分中的兩個(gè)部分了。核心是那個(gè)捕獲比較寄存器??纯驁D異或那塊先不管他,好像跟編碼器有關(guān),輸入有個(gè)特色就是可以把TI的輸入搞到CC1上去,也可以把T2的輸入搞到CC1上去,其實(shí)也可以把T1搞到CC1上去同時(shí)把T1搞到CC2上去,這樣就有了后來(lái)的PWM輸入。輸出上的特色是不直接輸出,而是有個(gè)OC1REF,這樣可以定義高有效還是低有效,輸出自己需要的有效電平。五、做實(shí)驗(yàn)講了這么多你一定煩了吧,那么讓我們搞點(diǎn)實(shí)際的吧,通過(guò)做實(shí)驗(yàn)來(lái)熟悉定時(shí)器,用到新知識(shí)時(shí)再在其中加以介紹。實(shí)驗(yàn)一:TIMER-1:定時(shí)器上溢,中斷中取反LED.現(xiàn)象:LED周期2秒閃爍。主要代碼如下:TIM_DeInit(TIM2);TIM_TimeBaseStructure.TIM_Period=2000;//ARR的值TIM_TimeBaseStructure.TIM_Prescaler=0;TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//采樣分頻TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上計(jì)數(shù)模式TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);TIM_PrescalerConfig(TIM2,0x8C9F,TIM_PSCReloadMode_Immediate);//時(shí)鐘分頻系數(shù)36000,所以定時(shí)器時(shí)鐘為2KTIM_ARRPreloadConfig(TIM2,DISABLE);//禁止ARR預(yù)裝載緩沖器TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);TIM_Cmd(TIM2,ENABLE);//開(kāi)啟時(shí)鐘解釋一下,首先得配好ARR,這是必須地。然后配置預(yù)分頻,為什么我先配為0再用TIM_PrescalerConfig(TIM2,0x8C9F,TIM_PSCReloadMode_Immediate)配呢,原來(lái)PSC也有個(gè)預(yù)裝載功能,卻不像ARR和CRR那樣有相關(guān)的位控制立即裝載或更新事件裝載。也就是說(shuō)只能更新事件來(lái)裝載。在上面函數(shù)中手工產(chǎn)生了一個(gè)更新事件,使PSC立刻生效。CK_DIV暫時(shí)沒(méi)用到。計(jì)數(shù)模式配置為向上計(jì)數(shù)。然后在中斷中做下LED取反就可以了。溢出周期怎么算?在這個(gè)實(shí)驗(yàn)里AHB為72M,APB1為36M,所以CK_INT為72M,36000分頻變?yōu)?K.ARR=2000,所以1秒溢出1次。相關(guān)寄存器:CR19876543210CKD[1:0]ARPECMS[1:0]DIROPMURSUDISCENARRPSC接下來(lái)的4個(gè)實(shí)驗(yàn)跟輸出通道有關(guān)系實(shí)驗(yàn)2TIMER-2:強(qiáng)置輸出現(xiàn)象:LED常亮例子比較簡(jiǎn)單關(guān)鍵是配好輸出通道CCER1514131211109876543210CC4PCC4ECC3PCC3ECC2PCC2ECC1PCC1ECCMR(輸出)OC2CEOC2M[2:0]OC2PEOC2FECC2SOC1CEOC1M[2:0]OC1PEOC1FECC1S將通道1配為輸出,輸出使能,輸出極性選擇好,輸出模式選擇好就可以了。在V100實(shí)驗(yàn)板上PC6-9接了LED,剛好對(duì)應(yīng)著TIMER3重映射后的輸出,注意程序里的AFIO函數(shù)。實(shí)驗(yàn)3TIMER-3:輸出比較現(xiàn)象:LED2秒的周期閃爍。跟上個(gè)實(shí)驗(yàn)配置大致相同,只是把輸出模式改為翻轉(zhuǎn)功能,并且CRR要配好,當(dāng)CRR=CNT時(shí)翻轉(zhuǎn)輸出。實(shí)驗(yàn)4TIMER-4:PWM輸出現(xiàn)象:輸出4種不同占空比的PWM波,4個(gè)LED亮度不同。實(shí)驗(yàn)5TIMER-7:單脈沖方式現(xiàn)象:LED只閃爍一次。將上個(gè)實(shí)驗(yàn)加一句話TIM_SelectOnePulseMode(TIM3,TIM_OPMode_Single);//設(shè)置單脈沖模式就是這個(gè)實(shí)驗(yàn)。其實(shí)手冊(cè)上關(guān)于此實(shí)驗(yàn)的本意是由一個(gè)外部觸發(fā)使能計(jì)數(shù)器,然后產(chǎn)生一個(gè)脈沖的,這里還沒(méi)涉及從模式所以簡(jiǎn)化處理。涉及寄存器CR19876543210CKD[1:0]ARPECMS[1:0]DIR1)PM1URSUDISCEN接下來(lái)再做兩個(gè)輸入的實(shí)驗(yàn)實(shí)驗(yàn)6TIMER-5:輸入捕獲模式?,F(xiàn)象:通過(guò)V100的JOYSTICK鍵的SELECT鍵進(jìn)入捕獲,硬件仿真看CRR的值。首先是基本的配置:ARR的值、時(shí)鐘PSC、采樣CKD、計(jì)數(shù)方式。然后配置輸入通道。選擇輸入捕獲模式、輸入極性、把T1配到CC1上、選好輸入的濾波跟分頻,就可以了。講下輸入濾波功能,在此實(shí)驗(yàn)中Fdts=CK_INT/2,Fsample=Fdts/4,所以定時(shí)器時(shí)鐘為2K,所以采樣周期為4ms。才8次的話周期小于32ms的干擾會(huì)濾除。相關(guān)寄存器CR1PSCARRCCMR1(輸入)IC2F[3:0]IC2PSC[1:0]CC2S[1:0]IC1F[3:0]IC1PSC[1:0]CC1S[1:0]CCER1514131211109876543210CC4PCC4ECC3PCC3ECC2PCC2ECC1PCC1E實(shí)驗(yàn)7TIMER-6:PWM輸入現(xiàn)象:由TIMER3輸出通道1產(chǎn)生一路周期2秒占空比50%的PWM波,飛線到TIMER4的輸入通道1,有TIMER4來(lái)測(cè)量該P(yáng)WM得周期和占空比。在做實(shí)驗(yàn)之前引入三種從模式控制:復(fù)位、觸發(fā)、門控。通過(guò)SMCR選擇后可以進(jìn)入這三種從模式SMCR1514131211109876543210ETPECEETPS[1:0]ETF[3:0]MSMTS[2:0]SMS[2:0]SMS:100101110復(fù)位門控觸發(fā)所謂從模式簡(jiǎn)單理解就是受控于別人了,包括何時(shí)啟動(dòng)、何時(shí)停止、何時(shí)復(fù)位。相關(guān)作用請(qǐng)看手冊(cè)。提示一點(diǎn)就是進(jìn)入這三種模式后時(shí)鐘是誰(shuí)的問(wèn)題?肯定不是外部時(shí)鐘1了,可以是內(nèi)部時(shí)鐘和外部時(shí)鐘2.接著看實(shí)驗(yàn),PWM方式的原理是這樣的,如前文提到過(guò)輸入時(shí)可以把T1映射到CC1上去同時(shí)映射到CC2上,將CC1和CC2的捕獲邊沿搞成相反的,比如CC1捕獲T1上升沿,CC2捕獲T1下降沿,還要再設(shè)置T1為復(fù)位從模式,上升沿有效,這樣T1上升沿后計(jì)數(shù)器開(kāi)始計(jì)數(shù)。下降沿CC2捕獲發(fā)生,此為PWM占空比,在來(lái)一個(gè)上升沿,CC1捕獲發(fā)生此為PWM周期。注意CC1捕獲的第一次無(wú)效。這是從模式跟輸入捕獲的一種組合使用,從模式還可以跟輸出比較組合使用。比如手冊(cè)上的單脈沖實(shí)驗(yàn)。接著做4個(gè)實(shí)驗(yàn)跟定時(shí)器的級(jí)聯(lián)和定時(shí)器同步有關(guān)系,在實(shí)驗(yàn)前先得說(shuō)說(shuō)主模式的問(wèn)題。在CR2寄存器中的MMS位決定了定時(shí)器的主模式方式,即決定TRGO.幾種方式可以參看手冊(cè)。要說(shuō)明一點(diǎn)就是一個(gè)定期器既可以是主模式同時(shí)它也是從模式,這就好像你是一個(gè)中層干部一樣,既可以領(lǐng)導(dǎo)別人同時(shí)又被別人領(lǐng)導(dǎo),這個(gè)不沖突的。簡(jiǎn)單介紹下4個(gè)實(shí)驗(yàn)。實(shí)驗(yàn)8TIMER-8:TIMER2作為TIMER3的分頻器.現(xiàn)象:LED以10秒周期閃爍。TIMER3配置為PWM輸出,但是始終有TIMER2的溢出時(shí)間頻率來(lái)提供,其溢出頻率為100Hz所以TIMER3PWM的周期為10S.實(shí)驗(yàn)9TIMER-9:TIMER2來(lái)使能TIMER3.現(xiàn)象:LD1前15秒以1秒的周期閃爍,后15秒熄掉,然后下個(gè)15秒再閃爍如此循環(huán)。在這個(gè)實(shí)驗(yàn)里TIEMR3輸出一個(gè)周期1秒的PWM波,仍然驅(qū)動(dòng)LD1閃爍。同時(shí)從
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 3《不懂就要問(wèn)》教學(xué)設(shè)計(jì)2024-2025學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)上冊(cè)
- 道路拓寬建設(shè)合同范本
- 5建立良好的公共秩序-公共生活需要秩序(教學(xué)設(shè)計(jì))統(tǒng)編版道德與法治四年級(jí)下冊(cè)
- 2025屆高考生物備考教學(xué)設(shè)計(jì):第七章 生物的變異和進(jìn)化之構(gòu)建圖像模型分析細(xì)胞分裂與可遺傳變異的關(guān)系
- 購(gòu)買蛋糕卷合同范本
- 采購(gòu)教具合同范本
- 木門長(zhǎng)期合同范本
- Unit 1 My Classroom Part A. Lets learn;Lets chant. (教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)上冊(cè)
- 教育產(chǎn)品合同范本
- 藥店委托配送合同范本
- C語(yǔ)言大學(xué)實(shí)用教程課后參考答案蘇小紅
- 新部編版四年級(jí)下冊(cè)小學(xué)語(yǔ)文全冊(cè)課件PPT
- 高中人教物理選擇性必修一第3章第5節(jié)多普勒效應(yīng)課件
- 全套橋梁施工技術(shù)交底記錄
- 2021年山東省威海市中考語(yǔ)文真題(解析版)
- 主動(dòng)脈夾層的護(hù)理-ppt課件
- 高新技術(shù)企業(yè)認(rèn)定申請(qǐng)書(shū)樣例與說(shuō)明
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter6 Tree
- 高壓氧科工作總結(jié)高壓氧科個(gè)人年終總結(jié).doc
- 《政治學(xué)概論》教學(xué)大綱
- 食品生物化學(xué)習(xí)題謝達(dá)平(動(dòng)態(tài))
評(píng)論
0/150
提交評(píng)論