按時(shí)器的相關(guān)寄放器_第1頁
按時(shí)器的相關(guān)寄放器_第2頁
按時(shí)器的相關(guān)寄放器_第3頁
按時(shí)器的相關(guān)寄放器_第4頁
按時(shí)器的相關(guān)寄放器_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、按時(shí)器在STM32F10 xx逐歹【的32位MCUt,按時(shí)器資源十分豐碩,包括高級(jí)操縱按時(shí)器,通用按時(shí)器和大體按時(shí)器。另外,還有能夠?qū)崿F(xiàn)按時(shí)功能的系統(tǒng)滴答按時(shí)器,實(shí)不時(shí)鐘和看門狗。關(guān)于這些按時(shí)器的介紹,占據(jù)了STM32F10 xx嬉考手冊(cè)1/5的篇幅,可見其功能的壯大。在低容量和中容量的STM32F103xx品,和互聯(lián)型產(chǎn)品STM32F105x*口STM32F107x。,只有一個(gè)高級(jí)操縱按時(shí)器TIM1。而在高容量和超大容量的STM32F103xx品中,有兩個(gè)高級(jí)操縱按時(shí)器TIM1和TIM8。在所有STM32F10 xx逐列產(chǎn)品中,都有通用按時(shí)器TIM2TIM5,除非還有說明。除此之外,在超大容

2、量產(chǎn)品中,還有通用按時(shí)器TIM9TIM14在高容量和超大容量的STM32F101x*口STM32F103x小品,和互聯(lián)型產(chǎn)品STM32F105xxF口STM32F107xxK有兩個(gè)大體按時(shí)器TIM6和TIM7。其中,高級(jí)操縱按時(shí)器的功能最為壯大,能夠?qū)崿F(xiàn)所有其他按時(shí)器的所有功能。TrailBreaker開發(fā)板利用的是高容量的STM32F103ZE因此有兩個(gè)高級(jí)操縱按時(shí)器TIM1和TIM8。下面咱們就著重介紹這兩個(gè)高級(jí)操縱按時(shí)器。TIM1和TIM8簡(jiǎn)介高級(jí)操縱按時(shí)器(TIM1和TIM8)由一個(gè)16位的自動(dòng)裝載計(jì)數(shù)器組成,它由一個(gè)可編程的預(yù)分頻器驅(qū)動(dòng)。它適合多種用途,包括測(cè)量輸入信號(hào)的脈沖寬度(輸

3、入捕捉),或產(chǎn)生輸出波形(輸出比較、PWM嵌入死區(qū)時(shí)刻的互補(bǔ)PWMH)利用按時(shí)器預(yù)分頻器和RCC寸鐘操縱預(yù)分頻器,能夠?qū)崿F(xiàn)脈沖寬度和波形周期從幾個(gè)微秒到幾個(gè)毫秒的調(diào)劑。關(guān)于實(shí)驗(yàn)頂用到的LED部份原理圖和GPIO跑馬燈實(shí)驗(yàn)所用到的相同,在此再也不多做介紹。TIM1和TIM8按時(shí)器的功能包括:16位向上、向下、向上/下自動(dòng)裝載計(jì)數(shù)器16位可編程(能夠?qū)崟r(shí)修改)預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為165535之間的任意數(shù)值多達(dá)4個(gè)獨(dú)立通道:一輸入捕捉一輸出比較一PWMft成(邊緣或中間對(duì)齊模式)一單脈沖模式輸出死區(qū)時(shí)刻可編程的互補(bǔ)輸出利用外部信號(hào)操縱按時(shí)器和按時(shí)器互聯(lián)的同步電路許諾在指定數(shù)量的計(jì)數(shù)器

4、周期以后更新按時(shí)器寄放器的重復(fù)計(jì)數(shù)器剎車輸入信號(hào)能夠?qū)磿r(shí)器輸出信號(hào)置于復(fù)位狀態(tài)或一個(gè)已知狀態(tài)如下事件發(fā)生時(shí)產(chǎn)生中斷/DMA一更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過軟件或內(nèi)部/外部觸發(fā))一觸發(fā)事件(計(jì)數(shù)器啟動(dòng)、停止、初始化或由內(nèi)部/外部觸發(fā)計(jì)數(shù))一輸入捕捉一輸出比較一剎車信號(hào)輸入支持針對(duì)定位的增量(正交)編碼器和霍爾傳感器電路觸發(fā)輸入作為外部時(shí)鐘或按周期的電流治理高級(jí)按時(shí)器框圖和時(shí)鐘簡(jiǎn)介牝前/部CK T MlBiTornRCC FT*# tint 4*內(nèi) ffTM -f1時(shí)- mi r.*匕 Miw brnAUto DACM0CTIUl CH4 nEtRF需港盟i粒VP*e4cad

5、fgraterstr*i*fTed9active電9里urmmU電MemsecondiPggcarttfsibrttnbtmtpi & DLW output如框圖中的紅框所示,紅框中的部份,也是時(shí)基單元(Time-baseunit),對(duì)時(shí)基單元進(jìn)行設(shè)置,就能夠夠完成基礎(chǔ)的按時(shí)器的利用設(shè)置。計(jì)數(shù)器時(shí)鐘可由以下時(shí)鐘源提供:內(nèi)部時(shí)鐘(CK_INT)外部時(shí)鐘模式1:外部輸入引腳外部時(shí)鐘模式2:外部觸發(fā)輸入ETR內(nèi)部觸發(fā)輸入(ITRx):利用一個(gè)按時(shí)器作為另一個(gè)按時(shí)器的預(yù)分頻器。如能夠配置一個(gè)按時(shí)器Timeri而作為另一個(gè)按時(shí)器Timer2的預(yù)分頻器。詳見數(shù)據(jù)手冊(cè)的通用按時(shí)器部份。內(nèi)部時(shí)鐘源(CKINT

6、):若是禁止了從模式操縱器(SMS=000),那么CENDIR(TIMx_CR1寄放器)和UG&(TIMx_EGR寄放器)是事實(shí)上的操縱位,而且只能被軟件修改(UG位仍被自動(dòng)清除)。只要CEN被寫成1,預(yù)分頻器的時(shí)鐘就由內(nèi)部時(shí)鐘CK_INT是供。以下圖顯示操縱電路和向上計(jì)數(shù)器在一樣模式下,不帶預(yù)分頻器時(shí)的操作。外部時(shí)鐘源模式1當(dāng)TIMx_SMCRf放器的SMS=11為寸,此模式被選中。計(jì)數(shù)器能夠在選定輸入端的每一個(gè)上升沿或下降沿計(jì)數(shù)。以下圖為TI2外部時(shí)鐘連接例子例如,要配置向上計(jì)數(shù)器在T12輸入端的上升沿計(jì)數(shù),利用以下步驟:1.配置TIMx_CCMR寄放器CC2s=01.配置TIMx_CCM

7、R寄放器的IC2F3:0,選擇輸入濾波器帶寬(若是不需要濾波器,維持IC2F=0000).配置TIMx_CCERj放器的CC2P=0選定上升沿極性.配置TIMx_SMCRf放器的SMS=111選擇按時(shí)器外部時(shí)鐘模式1.配置TIMx_SMCRf放器中的TS=11Q選定TI2作為觸發(fā)輸入源.設(shè)置TIMx_CR1寄放器的CEN=1使能計(jì)數(shù)器注:捕捉預(yù)分頻器不用作觸發(fā),因此不需要對(duì)它進(jìn)行配置當(dāng)上升沿出此刻TI2,計(jì)數(shù)器計(jì)數(shù)一次,且TIF標(biāo)志被設(shè)置。在TI2的上升沿和計(jì)數(shù)器實(shí)際時(shí)鐘之間的延時(shí),取決于在TI2輸入端的從頭同步電路。以下圖為外部時(shí)鐘模式1下的操縱電路外部時(shí)鐘源模式2選定此模式的方式為:令TI

8、Mx_SMCRf放器中的ECE=1計(jì)數(shù)器能夠在外部觸發(fā)ETR的每一個(gè)上升沿或下降沿計(jì)數(shù)。以下圖是外部觸發(fā)輸入的框圖設(shè)置從模式操縱寄放器的ETP位選擇選擇是用ETR仍是ETR的反相來作為觸發(fā)操作例如,要配置在ETR下每2個(gè)上升沿計(jì)數(shù)一次的向上計(jì)數(shù)器,利用以下步驟:.本例中不需要濾波器,置TIMXSMCR1放器中的ETF3:0=0000.設(shè)置預(yù)分頻器,置TIMXSMCR1放器中的ETPS1:0=01.選才?ETR的上升沿才測(cè),置TIMx_SMCRf放器中的ETP=0.開啟外部時(shí)鐘模式2,寫TIMX_SMCR1放器中的ECE=1.啟動(dòng)計(jì)數(shù)器,寫TIMx_CR1寄放器中的CEN=1計(jì)數(shù)器在每2個(gè)ETR

9、上升沿計(jì)數(shù)一次。在ETR的上升沿和計(jì)數(shù)器實(shí)際時(shí)鐘之間的延時(shí)取決于在ETRPJ號(hào)端的從頭同步電路。以下圖為外部時(shí)鐘模式2下的操縱電路如圖,該圖為STM32勺時(shí)鐘樹,結(jié)合高級(jí)操縱按時(shí)器框圖,咱們能夠看出,高級(jí)按時(shí)器的時(shí)鐘不是直接來自APBZ而是來自于輸入為APB2的一個(gè)倍頻器。當(dāng)APB2的預(yù)分頻系數(shù)為1時(shí),那個(gè)倍頻器不起作用,按時(shí)器的時(shí)鐘頻率等于APB2的頻率;當(dāng)APB2的預(yù)分頻系數(shù)為其它數(shù)值(即預(yù)分頻系數(shù)為二、4、8或16)時(shí),那個(gè)分頻器起作用,按時(shí)器的時(shí)鐘頻率等于APB2的頻率相應(yīng)倍數(shù)。假定AHB=36MHz因?yàn)锳PB2W諾的最大頻率為72MHz因此APB2的預(yù)分頻系數(shù)能夠取任意數(shù)值;當(dāng)預(yù)分頻

10、系數(shù)=1時(shí),APB2=72MHzTIMI和TIM8的時(shí)鐘頻率=72MHz分頻器不起作用);當(dāng)預(yù)分頻系數(shù)=2時(shí),APB1=36MHz在倍頻器的作用下,TIM1和TIM8的時(shí)鐘頻率=72MHz有人會(huì)問,既然需要TIM1和TIM8的時(shí)鐘頻率為72MHz什么緣故不直接取APB2的預(yù)分頻系數(shù)=1?答案是:APB2但要為TIM1和TIM8提供時(shí)鐘,而且還要為其它外設(shè)提供時(shí)鐘;設(shè)置那個(gè)倍頻器能夠在保證其它外設(shè)利用較低時(shí)鐘頻率時(shí),TIM1和TIM8仍能取得較高的時(shí)鐘頻率。再舉個(gè)例子:當(dāng)AHB=72MH時(shí),APB2因?yàn)槠渌O(shè)備需要,時(shí)鐘為36MHz因?yàn)槟莻€(gè)倍頻器,TIM1和TIM8仍然能夠取得72MHzB勺時(shí)鐘

11、頻率。能夠利用更高的時(shí)鐘頻率,無疑提高了按時(shí)器的分辨率,這也正是設(shè)計(jì)那個(gè)倍頻器的初衷。高級(jí)按時(shí)器寄放器簡(jiǎn)介可編程高級(jí)操縱按時(shí)器的要緊部份是一個(gè)16位計(jì)數(shù)器和與其相關(guān)的自動(dòng)裝載寄放器。那個(gè)計(jì)數(shù)器能夠向上計(jì)數(shù)、向下計(jì)數(shù)或向上向下雙向計(jì)數(shù)。此計(jì)數(shù)器時(shí)鐘由預(yù)分頻器分頻取得。計(jì)數(shù)器、自動(dòng)裝載寄放器和預(yù)分頻器寄放器能夠由軟件讀寫,即便計(jì)數(shù)器還在運(yùn)行讀寫仍然有效。時(shí)基單元,也確實(shí)是決定了按時(shí)器的大體功能的模塊包括:.計(jì)數(shù)器寄放器(Counterregister,簡(jiǎn)寫為TIMx_CNT).預(yù)分頻器寄放器(Prescalerregister,簡(jiǎn)寫為TIMx_PSC).自動(dòng)裝載寄放器(Auto-reloadreg

12、ister,簡(jiǎn)寫為TIMx_ARR).重復(fù)次數(shù)寄放器(Repetitioncounterregister,簡(jiǎn)寫為TIMx_RCR)這張圖是高級(jí)按時(shí)器框圖的一部份,細(xì)心的人能夠發(fā)覺預(yù)分頻器寄放器、自動(dòng)重載寄放器和捕捉/比較寄放器下面有一個(gè)陰影,其他的寄放器有些也有陰影。這表示在物理上那個(gè)寄放器對(duì)應(yīng)2個(gè)寄放器:一個(gè)是咱們能夠能夠?qū)懭牖蜃x出的寄放器,稱為預(yù)裝載寄放器,另一個(gè)是咱們看不見的、無法真正對(duì)其讀寫操作的,但在利用中真正起作用的寄放器,稱為影子寄放器.數(shù)據(jù)手冊(cè)介紹預(yù)裝載寄放器的內(nèi)容能夠隨時(shí)傳送到影子寄放器,即二者是連通的(permanently),或在每一次更新事件(UEV)時(shí)才把預(yù)裝載寄放器

13、的內(nèi)容傳送到影子寄放器。原文如下:Theauto-reloadregisterispreloaded.Writingtoorreadingfromtheauto-reloadregisteraccessesthepreloadregister.Thecontentofthepreloadregisteraretransferredintotheshadowregisterpermanentlyorateachupdateevent(UEV),dependingontheauto-reloadpreloadenablebit(ARPE)inTIMx_CR1register.Theupdateev

14、entissentwhenthecounterreachestheoverflow(orunderflowwhendowncounting)andiftheUDISbitequals0intheTIMx_CR1register.Itcanalsobegeneratedbysoftware.Thegenerationoftheupdateeventisdescribedindetailedforeachconfiguration.在圖中的,表示對(duì)應(yīng)寄放器的影子寄放器能夠在發(fā)生更新事件時(shí),被更新為它的預(yù)裝載寄放器的內(nèi)容;而圖中的部份,表示對(duì)應(yīng)的自動(dòng)重載寄放器能夠產(chǎn)生一個(gè)更新事件(U)或更新事件中斷

15、(UI)。設(shè)計(jì)預(yù)裝載寄放器和影子寄放器的益處是,所有真正需要起作用的寄放器(影子寄放器)能夠在同一個(gè)時(shí)刻(發(fā)生更新事件時(shí))被更新為所對(duì)應(yīng)的預(yù)裝載寄放器的內(nèi)容,如此能夠保證多個(gè)通道的操作能夠準(zhǔn)確地同步。若是沒有影子寄放器,軟件更新預(yù)裝載寄放器時(shí),那么同時(shí)更新了真正操作的寄放器,因?yàn)檐浖豢赡茉谝粋€(gè)相同的時(shí)刻同時(shí)更新多個(gè)寄放器,結(jié)果造成多個(gè)通道的時(shí)序不能同步,若是再加上例如中斷等其它因素,多個(gè)通道的時(shí)序關(guān)系有可能會(huì)混亂,造成是不可預(yù)知的結(jié)果。預(yù)分頻器能夠?qū)⒂?jì)數(shù)器的時(shí)鐘頻率按1到65536之間的任意值分頻。它是基于一個(gè)在TIMx_PSCf放器中的16位寄放器操縱的16位計(jì)數(shù)器。因?yàn)槟莻€(gè)操縱寄放器帶有

16、緩沖器,它能夠在運(yùn)行時(shí)被改變。新的預(yù)分頻器的參數(shù)在下一次更新事件到來時(shí)被采納。下面給出了在預(yù)分頻器運(yùn)行時(shí),更改計(jì)數(shù)器參數(shù)的例子當(dāng)預(yù)分頻器的參數(shù)從1變到2時(shí),計(jì)數(shù)器的時(shí)序圖如下:當(dāng)預(yù)分頻器的參數(shù)從1變到4時(shí),計(jì)數(shù)器的時(shí)序圖如下:預(yù)分頻寄放器列位的描述如下:位15:0PSC15:0:預(yù)分頻值計(jì)數(shù)器的時(shí)鐘頻率(CK_CNT等于fCK_PSC/(PSC15:0+1)。PSC的值保留在預(yù)分頻寄放器的預(yù)裝載寄放器中,在每次更新事件時(shí)加載至影子寄放器.高級(jí)按時(shí)器計(jì)數(shù)模式:在向上計(jì)數(shù)模式中,計(jì)數(shù)器從0計(jì)數(shù)到自動(dòng)加載值(TIMx_ARR計(jì)數(shù)器的內(nèi)容),然后從頭從0開始計(jì)數(shù)而且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件。若是利用了重

17、復(fù)計(jì)數(shù)器功能,在向上計(jì)數(shù)達(dá)到設(shè)置的重復(fù)計(jì)數(shù)次數(shù)(TIMx_RCR)時(shí),產(chǎn)生更新事件(UEV);不然每次計(jì)數(shù)器溢出時(shí)才產(chǎn)生更新事件。在事件產(chǎn)生寄放器寄放器中(通過軟件方式或利用從模式操縱器)設(shè)置UG&也一樣能夠產(chǎn)生一個(gè)更新事件。設(shè)置TIMx_CR1寄放器中的UDIS位,能夠禁止更新事件;如此能夠幸免在向預(yù)裝載寄放器中寫入新值時(shí)更新影子寄放器。在UDIS位被清0之前,將不產(chǎn)生更新事件??墒窃趹?yīng)該產(chǎn)生更新事件時(shí),計(jì)數(shù)器仍會(huì)被清0,同時(shí)預(yù)分頻器的計(jì)數(shù)也被請(qǐng)0(但預(yù)分頻器的數(shù)值不變)0另外,若是設(shè)置了TIMx_CR1寄放器中的URSa(選擇更新請(qǐng)求),設(shè)置UG位將產(chǎn)生一個(gè)更新事件UEV但硬件不設(shè)置UIF

18、標(biāo)志(即不產(chǎn)生中斷或DMA青求)。這是為了幸免在捕捉模式下清除計(jì)數(shù)器時(shí),同時(shí)產(chǎn)生更新和捕捉中斷。當(dāng)發(fā)生一個(gè)更新事件時(shí),所有的寄放器都被更新,硬件同時(shí)(依據(jù)URSa)設(shè)置更新標(biāo)志位(TIMx_SR寄放器中的UIF位)。重復(fù)計(jì)數(shù)器被從頭加載為TIMx_RCRif放器的內(nèi)容。自動(dòng)裝載影子寄放器被從頭置入預(yù)裝載寄放器的值(TIMx_ARR預(yù)分頻器的緩沖區(qū)被置入預(yù)裝載寄放器的值(TIMx_PSC寄放器的內(nèi)容)o下面給出一些例子,當(dāng)TIMx_ARR=0 x36寸計(jì)數(shù)器在不同時(shí)鐘頻率下的動(dòng)作。內(nèi)部時(shí)鐘分頻因子為1時(shí)的計(jì)數(shù)器時(shí)序圖如下:內(nèi)部時(shí)鐘分頻因子為2時(shí)的計(jì)數(shù)器時(shí)序圖如下:內(nèi)部時(shí)鐘分頻因子為4時(shí)的計(jì)數(shù)器時(shí)

19、序圖如下:內(nèi)部時(shí)鐘分頻因子為N時(shí)的計(jì)數(shù)器時(shí)序圖如下:當(dāng)ARPE=0寸的更新事件(TIMx_ARR沒有預(yù)裝入)時(shí)的計(jì)數(shù)器時(shí)序圖如下:當(dāng)ARPE=F寸的更新事件(TIMx_ARRS裝入)時(shí)的計(jì)數(shù)器時(shí)序圖如下:在向下模式中,計(jì)數(shù)器從自動(dòng)裝入的值(TIMx_ARR計(jì)數(shù)器的值)開始向下計(jì)數(shù)到0,然后從自動(dòng)裝入的值從頭開始而且產(chǎn)生一個(gè)計(jì)數(shù)器向下溢出事件若是利用了重復(fù)計(jì)數(shù)器,當(dāng)向下計(jì)數(shù)重復(fù)了重復(fù)計(jì)數(shù)寄放器(TIMx_RCR)中設(shè)定的次數(shù)后,將產(chǎn)生更新事件(UEV),不然每次計(jì)數(shù)器下溢時(shí)才產(chǎn)生更新事件。在TIMx_EGFW放器中(通過軟件方式或利用從模式操縱器)設(shè)置UG位,也一樣能夠產(chǎn)生一個(gè)更新事件。設(shè)置TI

20、Mx_CR1寄放器的UDIS位能夠禁止UEV*件。如此能夠幸免向預(yù)裝載寄放器中寫入新值時(shí)更新影子寄放器。因此UDIS位被滿為0之前可不能產(chǎn)生更新事件。但是,計(jì)數(shù)器仍會(huì)從當(dāng)前自動(dòng)加載值從頭開始計(jì)數(shù),而且預(yù)分頻器的計(jì)數(shù)重視新從0開始(但預(yù)分頻系數(shù)不變)。另外,若是設(shè)置了TIMx_CR1寄放器中的URSa(選擇更新請(qǐng)求),設(shè)置UG位將產(chǎn)生一個(gè)更新事件UEV且不設(shè)置UIF標(biāo)志(因此不產(chǎn)生中斷和DMA青求),這是為了幸免在發(fā)生捕捉事件并清除計(jì)數(shù)器時(shí),同時(shí)產(chǎn)生更新和捕捉中斷。當(dāng)發(fā)生更新事件時(shí),所有的寄放器都被更新,而且(依照UR附的設(shè)置)更新標(biāo)志位(TIMx_SR寄放器中的UIF位)也被設(shè)置。重復(fù)計(jì)數(shù)器被

21、重置為TIMx_RCFW放器中的內(nèi)容預(yù)分頻器的緩存器被加載為預(yù)裝載的值(TIMx_PSC寄放器的值)0當(dāng)前的自動(dòng)加載寄放器被更新為預(yù)裝載值(TIMx_ARR寄放器中的內(nèi)容)0注:自動(dòng)裝載在計(jì)數(shù)重視載入之前被更新,因此下一個(gè)周期將是預(yù)期的值。下面是一些當(dāng)TIMx_ARR=0 x36寸,計(jì)數(shù)器在不同時(shí)鐘頻率下的動(dòng)作。內(nèi)部時(shí)鐘分頻因子為1時(shí)的計(jì)數(shù)器時(shí)序圖如下:內(nèi)部時(shí)鐘分頻因子為2時(shí)的計(jì)數(shù)器時(shí)序圖如下:內(nèi)部時(shí)鐘分頻因子為4時(shí)的計(jì)數(shù)器時(shí)序圖如下:內(nèi)部時(shí)鐘分頻因子為N時(shí)的計(jì)數(shù)器時(shí)序圖如下:當(dāng)沒有利用重復(fù)計(jì)數(shù)器時(shí)的更新事件時(shí)的計(jì)數(shù)器時(shí)序圖:中央對(duì)齊模式(up/downcounting)在中央對(duì)齊模式,計(jì)數(shù)器

22、從0開始計(jì)數(shù)到自動(dòng)加載的值(TIMx_ARR寄放器)-s211,產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件,然后向下計(jì)數(shù)到1而且產(chǎn)生一個(gè)計(jì)數(shù)器下溢事件;然后再從0開始從頭計(jì)數(shù)。在此模式下,不能寫入TIMx_CR1中的DIR方向位。它由硬件更新并指示當(dāng)前的計(jì)數(shù)方向。能夠在每次計(jì)數(shù)上溢和每次計(jì)數(shù)下溢時(shí)產(chǎn)生更新事件;也能夠通過(軟件或利用從模式操縱器)設(shè)置TIMx_EGFW放器中的UG位產(chǎn)生更新事件。然后,計(jì)數(shù)重視新從0開始計(jì)數(shù),預(yù)分頻器也從頭從0開始計(jì)數(shù)。設(shè)置TIMx_CR1寄放器中的UDIS位能夠禁止UEV#件。如此能夠幸免在向預(yù)裝載寄放器中寫入新值時(shí)更新影子寄放器。因此UDIS位被滿為0之前可不能產(chǎn)生更新事件。但

23、是,計(jì)數(shù)器仍會(huì)依照當(dāng)前自動(dòng)重加載的值,繼續(xù)向上或向下計(jì)數(shù)。另外,若是設(shè)置了TIMx_CR1寄放器中的URSIL(選擇更新請(qǐng)求),設(shè)置UG&將產(chǎn)生一個(gè)更新事件UEV且不設(shè)置UIF標(biāo)志(因此不產(chǎn)生中斷和DMAt求),這是為了幸免在發(fā)生捕捉事件并清除計(jì)數(shù)器時(shí),同時(shí)產(chǎn)生更新和捕捉中斷。當(dāng)發(fā)生更新事件時(shí),所有的寄放器都被更新,而且(依照UR附的設(shè)置)更新標(biāo)志位(TIMx_SR寄放器中的UIF位)也被設(shè)置。重復(fù)計(jì)數(shù)器被重置為TIMx_RCFW放器中的內(nèi)容預(yù)分頻器的緩存器被加載為預(yù)裝載(TIMx_PSC寄放器)的值。當(dāng)前的自動(dòng)加載寄放器被更新為預(yù)裝載值(TIMx_ARR寄放器中的內(nèi)容)。注:若是因?yàn)橛?jì)數(shù)器溢

24、出而產(chǎn)生更新,自動(dòng)重裝載將在計(jì)數(shù)重視載入之前被更新,因此下一個(gè)周期將是預(yù)期的值(計(jì)數(shù)器被裝載為新的值)。下面是一些計(jì)數(shù)器在不同時(shí)鐘頻率下的操作的例子:內(nèi)部時(shí)鐘分頻因子為1,TIMx_ARR=0 x6寸的計(jì)數(shù)器時(shí)序圖:內(nèi)部時(shí)鐘分頻因子為2時(shí)的計(jì)數(shù)器時(shí)序圖:內(nèi)部時(shí)鐘分頻因子為4,TIMx_ARR=0 x36寸的計(jì)數(shù)器時(shí)序圖:注:在此不管是中心對(duì)齊模式2或3都是在溢出時(shí)與UIF標(biāo)志一路利用內(nèi)部時(shí)鐘分頻因子為N,計(jì)數(shù)器時(shí)序圖如下:ARPE=F寸的更新事件(計(jì)數(shù)器下溢),計(jì)數(shù)器時(shí)序圖如下:計(jì)數(shù)器寄放器列位的描述如下:位15:0ARR15:0:自動(dòng)重裝載的值(Prescalervalue)ARRfe括了將

25、要裝載入實(shí)際的自動(dòng)重裝載寄放器的值。詳細(xì)參考數(shù)據(jù)手冊(cè)節(jié):有關(guān)ARR勺更新和動(dòng)作。當(dāng)自動(dòng)重裝載的值為空時(shí),計(jì)數(shù)器不工作。前面說明了計(jì)數(shù)器上溢/下溢時(shí)更新事件(UEV)是如何產(chǎn)生的,但是事實(shí)上它只能在重復(fù)計(jì)數(shù)達(dá)到0的時(shí)候產(chǎn)生。那個(gè)特性對(duì)產(chǎn)生PWM1號(hào)超級(jí)有效。這意味著在每N次計(jì)數(shù)上溢或下溢時(shí),數(shù)據(jù)從預(yù)裝載寄放器傳輸?shù)接白蛹姆牌鳎═IMx_ARR自動(dòng)重載入寄放器,TIMx_PSC裝載寄放器,還有在比較模式下的捕捉/比較寄放器TIMx_CCRx)N是TIMx_RCR1復(fù)計(jì)數(shù)寄放器中的值。重復(fù)計(jì)數(shù)器在下述任一條件成立時(shí)遞減:向上計(jì)數(shù)模式下每次計(jì)數(shù)器溢出時(shí),向下計(jì)數(shù)模式下每次計(jì)數(shù)器下溢時(shí),中央對(duì)齊模式下每

26、次上溢和每次下溢時(shí)。盡管如此限制了PWMJ最大循環(huán)周期為128,但它能夠在每一個(gè)PWIW期2次更新占空比。在中央對(duì)齊模式下,因?yàn)椴ㄐ问菍?duì)稱的,若是每一個(gè)PWMB期中僅刷新一次比較寄放器,那么最大的分辨率為2xTck。重復(fù)計(jì)數(shù)器是自動(dòng)加載的,重復(fù)速度是由TIMx_RCFW放器的值概念。當(dāng)更新事件由軟件產(chǎn)生(通過設(shè)置TIMx_EGR中的UGa)或通過硬件的從模式操縱器產(chǎn)生,那么不管重復(fù)計(jì)數(shù)器的值是多少,當(dāng)即發(fā)生更新事件,而且TIMx_RCRtf放器中的內(nèi)容被重載入到重復(fù)計(jì)數(shù)器。以下圖為不同模式下更新速度的例子,及TIMx_RCR勺寄放器設(shè)置重復(fù)計(jì)數(shù)器列位的描述如下:位15:8保留位,始終讀為00位

27、7:0REP7:0:重復(fù)計(jì)數(shù)器的值(Repetitioncountervalue)開啟了預(yù)裝載功能后,這些位許諾用戶設(shè)置比較寄放器的更新速度(即周期性地從預(yù)裝載寄放器傳輸?shù)疆?dāng)前寄放器);若是許諾產(chǎn)生更新中斷,那么會(huì)同時(shí)阻礙產(chǎn)生更新中斷的速度。每次向下計(jì)數(shù)器REP_CN達(dá)至IJ0,會(huì)產(chǎn)生一個(gè)更新事件而且計(jì)數(shù)器REP_CNT從頭從REPfi開始計(jì)數(shù)。由于REP_CNT有在周期更新事件U_R3生時(shí)才重載REPTIM_CounterMode);assert_param(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct-TIM_ClockDivision);tmpcr1=TIM

28、x-CR1;if(TIMx=TIM1)|(TIMx=TIM8)|(TIMx=TIM2)|(TIMx=TIM3)|(TIMx=TIM4)|(TIMx=TIM5)tmpcr1&=(uint16_t)(uint16_t)(TIM_CR1_DIR|TIM_CR1_CMS);tmpcr1|=(uint32_t)TIM_TimeBaseInitStruct-TIM_CounterMode;if(TIMx!=TIM6)&(TIMx!=TIM7)tmpcr1&=(uint16_t)(uint16_t)TIM_CR1_CKD);tmpcr1|=(uint32_t)TIM_TimeBaseInitStruct-TIM_ClockDivision;TIMx-CR1=tmpcr1;TIMx-ARR=TIM_TimeBaseInitStruct-TIM_Period;TIMx-PSC=TIM_TimeBaseInitStruct-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論