




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章STM8S系列MCU定時器
7.1高級控制定時器TIM1結構
7.2TIM1時基單元7.3TIM1時鐘及觸發控制
7.4捕獲/比較通道
7.5定時器中斷控制
7.6通用定時器TIM2/TIM37.7窗口看門狗定時器WWDG
7.8硬件看門狗定時器IWDG
在單片機控制系統中,定時/計數器是MCU芯片重要的外設部件之一,幾乎所有的單片機芯片均內置一個或數個不同長度的定時/計數器。內嵌定時器的計數長度、數量、功能強弱是衡量MCU芯片功能強弱的重要指標之一。定時/計數器部件的核心是一個加法(或減法)計數器,可工作在定時方式和計數方式,因此稱為定時/計數器。這兩種工作方式并沒有本質上的區別,只是計數脈沖來源不同。如果計數脈沖是頻率相對穩定的系統時鐘信號(一般是系統時鐘的分頻信號)時,稱為定時方式;當計數脈沖來自MCU某一個特定的I/O引腳時,則稱為計數方式。
STM8S內部有多個定時器,按功能強弱可分為三大類:
(1)一個向上、向下計數的16位高級控制定時器TIM1,功能最完善。
(2)三個16位向上計數的通用定時器TIM2、TIM3和TIM5,功能比TIM1略差。
(3)兩個8位向上計數的基本定時器TIM4、TIM6。其中,TIM1、TIM2、TIM3、TIM4之間沒有關聯,彼此獨立,而TIM1、TIM5、TIM6之間有關聯。這幾個定時器的主要功能如表7-1所示。表7-1STM8S定時器的主要功能
STM8S105、STM8S207、STM8S208系列含有TIM1、TIM2、TIM3、TIM4四個定時器;STM8S103含有TIM1、TIM2、TIM4三個定時器;STM8S903含有TIM1、TIM5、TIM6三個定時器。在STM8S2××系列單片機中,與定時器有關的引腳如表7-2所示。表7-2在STM8S2××系列中與定時器有關的引腳7.1高級控制定時器TIM1結構高級控制定時器TIM1的內部結構如圖7-1所示,主要由以下部件組成:時鐘/觸發控制器(CLOCK/TRIGGERCONTROLLER);時基單元(TIMEBASEUNIT);捕獲/比較陣列(CAPTURECOMPAREARRAY)等。
TIM1定時器功能完善,可實現下列操作:
(1)基本定時操作、計數操作。
(2)利用輸入捕獲功能,測量脈沖信號時間參數(高、低電平時間)。
(3)利用輸出比較功能,可產生單脈沖信號、PWM信號等。
(4)在PWM輸出信號中,具有死區時間編程選擇功能。
(5)具有與其他定時器聯動的功能。圖7-1高級控制定時器TIM1的內部結構7.2TIM1時基單元
TIM1時基單元內部結構如圖7-2所示。它由16位預分頻器TIM1_PSCR(TIM1_PSCRH,TIM1_PSCRL)、16位雙向(向上或向下)計數器TIM1_CNTR(TIM1_CNTRH,TIM1_CNTRL)、16位自動重裝寄存器TIM1_ARR(TIM1_ARRH,TIM1_ARRL)及8位重復計數器TIM1_RCR組成。圖7-2時基單元觸發信號(即預分頻器輸入時鐘CK_PSC)經預分頻器TIM1_PSCR分頻后,其輸出信號CK_CNT作計數器TIM1_CNTR的計數脈沖。每來一個脈沖計數器TIM1_CNTR加1或減1,溢出時產生更新事件(UEV),并觸發相關寄存器重裝、更新,如果允許更新中斷(UIF),則產生更新中斷請求。7.2.116位預分頻器TIM1_PSCR
TIM1預分頻器TIM1_PSCR為16位寄存器,預分頻器輸出信號CK_CNT(即計數器TIM1_CNTR計數脈沖輸入信號)與預分頻器輸入信號CK_PSC之間關系為fCK_CNT=(7-1)通過預分頻器可對輸入信號CK_PSC實現1~65?536任意整數的分頻。由于16位預分頻器(TIM1_PSCRH,TIM1_PSCRL)帶有輸入緩沖器(即預裝載寄存器),因此在計數狀態下,新寫入的預分頻值,在更新事件發生時才有效,即在更新事件發生前,依然使用先前的預分頻值。注意:寫預分頻器時,只能用字節傳送指令實現,且先寫高8位TIM1_PSCRH,后寫低8位TIM1_PSCRL。不過讀預分頻器時沒有順序限制,甚至允許使用LDW字傳送指令讀入寄存器X或Y,這是因為讀操作對象為分頻器的預裝載寄存器。7.2.216位計數器TIM1_CNTR盡管允許在計數過程中讀寫16位計數器TIM1_CNTR的當前值,但由于計數器TIM1_CNTR沒有輸入緩沖器,因此,最好不要在計數過程中對計數器進行寫操作,應先把計數器暫停(將計數允許/停止控制位CEN—TIM1_CR1[0]清0)后,再寫入,以免產生不必要的誤差。由于計數器讀操作帶有8位鎖存功能,因此任何時候均可對計數器TIM1_CNTR進行“飛”讀操作(計數器仍在計數時的讀操作稱為“飛”讀),但必須用字節傳送指令實現,且先讀高8位TIM1_CNTRH(此時自動鎖存了低8位TIM1_CNTRL的值,即讀操作帶有8位鎖存功能),后再讀低8位TIM1_CNTRL,就能獲得正確結果。即使在讀計數器高8位TIM1_CNTRH后,CPU響應了中斷請求,執行了其他指令,返回后再讀計數器低8位TIM1_CNTRL也沒有關系(實際上在讀計數器TIM1低8位時數據來源是鎖存器,而不是計數器低8位TIM1_CNTRL的當前值)。因此,不宜用LDW指令讀計數器的當前值,原因是16位數據傳送指令先讀低8位,實際讀到的低8位是讀緩存器的值(如果復位后,沒有讀過TIM1_CNTRH,緩沖器的值不確定),而不是計數器低8位TIM1_CNTRL的當前值。例如,可用如下指令將TIM1_CNTR當前值“飛”讀到寄存器X中。
LDA,TIM1_CNTRH ;先用字節傳送指令LD或MOV讀計數高8位,此時自動鎖存了低8位
;?TIM1_CNTRL的當前值
LDXH,A ;讀了高8位TIM1_CNTRH后,無論中間執行了多少條指令,讀低8位
;均能獲得正確結果
LDA,TIM1_CNTRL ;該指令表面上讀TIM1_CNTRL,實際上是從鎖存器中讀計數器低8位LDXL,A7.2.316位自動裝載寄存器TIM1_ARR
16位自動裝載寄存器TIM1_ARR具有影子寄存器,影子寄存器對程序員是不透明的。在向上計數方式中,當計數值等于TIM1_ARR的影子寄存器中的值時,發生上溢,然后再從0開始計數器,這時TIM1_ARR相當于比較寄存器;在向下計數器過程中,當計數值回0時,發生下溢,計數器以TIM1_ARR影子寄存器的內容作初值重新計數,這時TIM1_ARR相當于重裝初值寄存器。在寫入時只能用字節指令完成,且先寫高8位后寫低8位。當控制寄存器TIM1_CR1的ARPE位為0(不使用預裝載寄存器)時,對自動裝載寄存器TIM1_ARR寫入時,寫入內容立即傳送到其影子寄存器中(影響當前計數周期),如圖7-3(a)所示。圖7-3自動重裝寄存器的更新當控制寄存器TIM1_CR1的ARPE位為1(使用預裝載寄存器)時,對自動裝載寄存器TIM1_ARR寫入時,寫入數據并不立即傳送到其影子寄存器中,只有更新事件(如溢出或通過軟件強迫更新)發生時,寫入的數據才被送入其影子寄存器中。換句話說,如果沒有軟件強迫更新,則不影響當前計數周期,溢出更新后下一個計數周期才生效,如圖7-3(b)所示。7.2.4計數方式
TIM1計數器可以編程為向上(加法)計數、向下(減法)計數以及向上向下雙向計數三種方式,如圖7-4所示。圖7-4計數方式
1.向上計數方式在向上計數方式中,16位計數器TIM1_CNTR從0開始遞增計數,當計數值與自動重裝寄存器TIM1_ARR的影子寄存器匹配時,再來一個計數脈沖則計數器將從0開始重新計數,如圖7-4(a)所示,并產生上溢事件。如果UDIS(禁止更新)控制位為0(無效,即允許更新),則將產生更新事件UEV。更新事件發生時,時基單元內各寄存器全部被更新。在向上計數過程中,計數值與自動重裝寄存器TIM1_ARR的影子寄存器匹配,再來一個計數脈沖時計數器上溢,然后從0開始新一輪的計數。因此,自動重裝寄存器TIM1_ARR不能為0,否則溢出后又匹配了。如此往復,無法向前計數,即TIM1_ARR取值范圍在0001H~FFFFH之間。顯然,當希望計數器在經歷N個計數脈沖后溢出,自動重裝寄存器TIM1_ARR的值應為N。TIM1_ARR與預分頻器TIM1_PSCR、溢出時間t之間的關系為TIM1_ARR=當時間t的單位取μs時,預分頻器輸入信號fCK_PSC的單位取MHz。(7-2)
2.向下計數方式在向下計數方式中,16位計數器TIM1_CNTR從自動重裝寄存器TIM1_ARR的影子寄存器開始遞減計數,當計數值回0時再來一個計數脈沖則產生下溢出,再從自動重裝寄存器TIM1_ARR的影子寄存器開始新一輪計數,如圖7-4(b)所示。如果UDIS(禁止更新)控制位為0(允許更新),則將產生更新事件UEV。在向下計數方式中,TIM1_ARR也不能為0,即TIM1_ARR取值范圍也必須在0001H~FFFFH之間。顯然,當希望計數器在經歷N個計數脈沖后下溢,自動重裝寄存器TIM1_ARR的值就為N。TIM1_ARR與預分頻器TIM1_PSCR、溢出時間t之間的關系與式(7-2)相同。在向下計數方式中,最好不用帶緩沖的自動重裝方式,即令TIM1_CR1寄存器的APRE位為0,則在本輪計數器溢出時,將立即使用更新后的自動重裝寄存器內容作為計數器的初值,如圖7-5所示。圖7-5向下計數方式中APRE=0時的更新情況如果使用了帶緩沖的更新方式,寫入自動重裝寄存器TIM1_ARR的新值,并不能在本輪計數器下溢時裝載,而必須再等到第二次下溢時才被采用,容易出錯,如圖7-6所示。其原因是使用帶緩沖更新方式時,溢出時計數器內部操作是“先將TIM1_ARR影子寄存器的內容裝入計數器TIM1_CNT后才更新自動重裝寄存器TIM1_ARR影子寄存器的內容”,簡稱“先裝入后更新”。圖7-6向下計數方式中APRE=1時的更新情況
3.向上向下雙向計數方式當計數器處于向上向下雙向計數方式時,計數器先從0開始計數,直到計數值等于自動重裝寄存器TIM1_ARR?-?1時出現上溢為止,接著計數值達到最大值TIM1_ARR,然后計數器向下計數,當計數值為0時,產生下溢,完成了一個計數周期,如圖7-4(c)所示。在雙向計數方式中,計數器上溢、下溢與更新事件UEV關系如圖7-7所示。圖7-7雙向計數方式在雙向計數方式中,控制寄存器TIM1_CR1的DIR位變為只讀。當計數器向上計數時,硬件自動將DIR位置1;當計數器向下計數時,硬件自動將DIR清0。在雙向計數方式中,可通過DIR位內容了解當前計數器的計數方向。7.2.5重復計數器TIM1_RCR重復計數器TIM1_RCR是一個沒有緩沖器的8位計數器,當計數器TIM1_CNTR上溢、下溢一次時,TIM1先判別重復計數器TIM1_RCR是否為0,若是0,則產生溢出更新事件;否則不產生溢出更新事件,同時將重復計數器TIM1_RCR減1(CPU對重復計數器TIM1_RCR采用“先判別后減1”的處理方式)。圖7-8給出了不同計數狀態下,重復計數器TIM1_RCR對溢出更新事件的影響。顯然,當TIM1_RCR>0時,必須經過“TIM1_RCR+1”個計數周期后,才產生溢出更新。圖7-8重復計數器TIM1_RCR對溢出更新事件的影響7.2.6更新事件(UEV)與更新中斷(UIF)控制邏輯時基單元內預分頻器TIM1_PSCR影子寄存器、自動重裝寄存器TIM1_ARR影子寄存器的更新均受更新事件UEV控制,邏輯關系如圖7-9所示。更新事件UEV受更新請求源URS與禁止更新UDIS控制。當UDIS為1時,不產生UEV更新事件(分頻器TIM1_PCSR影子寄存器、自動重裝寄存器TIM1_ARR影子寄存器保持不變),當然也就不可能產生更新中斷UIF(不過UG或時鐘/觸發控制器更新依然會強迫計數器和預分頻器產生更新,只是UIF無效)。當UDIS為0時,允許更新產生事件,更新事件種類受更新事件源選擇位URS控制。當URS為0時,軟件更新(UG)、時鐘/觸發控制器更新、定時器上溢或下溢三者之一發生時,均會產生更新事件UEV;而當URS為1時,只有定時器上溢或下溢會產生更新事件UEV。圖7-9UEV及UIF產生與受控制邏輯在更新事件UEV發生時,能否產生更新中斷(UIF)請求,受更新中斷允許UIE位的控制。在更新事件發生時,會觸發預分頻器TIM1_PCSR影子寄存器、自動重裝寄存器TIM1_ARR影子寄存器更新。7.3TIM1時鐘及觸發控制
TIM1時鐘/觸發控制單元內部結構如圖7-10所示。圖7-10TIM1時鐘/觸發控制單元內部結構時基單元預分頻器輸入時鐘信號CK_PSC可以是下列四個信號之一:
(1)主時鐘信號fMASTER。
(2)外部觸發時鐘模式1。
(3)來自TIM6的同步觸發信號或來自TIM5的同步觸發信號。對于STM8105、STM8S2XX芯片來說,沒有TIM5、TIM6,故不存在這兩個同步觸發信號。
(4)外部觸發時鐘模式2。7.3.1主時鐘觸發信號當從模式控制寄存器TIM1_SMCR的SMS=000(在這種情況下,該寄存器其他位無效),以及TIM1_ETR寄存器ECE=0(不使用外部時鐘)時,主時鐘信號fMASTER就是預分頻器TIM1_PSCR的輸入信號CK_PSC。當選擇主時鐘fMASTER作為時基單元觸發信號時,定時器狀態由CEN(計數允許/禁止)、DIR(計數方向)、UG(軟件更新)位控制。下面通過具體實例介紹用主時鐘fMASTER作為預分頻器TIM1_PSCR的輸入信號CK_PSC的初始化過程。例7-1當系統主時鐘頻率為2?MHz時,利用向上計數方式,使TIM1每10?ms產生一次定時中斷。根據式(7-2),在向上計數方式中,自動重裝寄存器即2710H。當定時時間t的單位取μs時,則主時鐘頻率fMASTER的單位取MHz。其中預分頻器TIM1_PSCR取1,即采用2分頻,計數頻率為1MHz。初始化步驟如下:
(1)初始化主從模式控制寄存器TIM1_SMCR的SMS位為000,禁止時鐘/觸發控制器工作。
MOVTIM1_SMCR,#00H
(2)初始化TIM1_ETR寄存器的ECE位,禁止外部觸發。BRESTIM1_ETR,#6
(3)初始化預分頻器TIM1_PSCR的高低位。
MOVTIM1_PSCRH,#00H ;先寫高8位,后寫低8位
MOVTIM1_PSCRL,#01H ;?2分頻
(4)初始化自動重裝初值寄存器(TIM1_ARR)。
MOVTIM1_ARRH,#27H ;先寫入高8位
MOVTIM1_ARRL,#10H ;再寫入低8位,該寄存器初值為10000,即2710H或通過關系運算,直接使用十進制數,如
;MOVTIM1_ARRH,#{HIGH10000} ;先寫入高8位
;MOVTIM1_ARRL,#{LOW10000} ;再寫入低8位,該寄存器初值為10000,即2710H
(5)初始化重復計數寄存器(TIM1_RCR)。MOVTIM1_RCR,#00H;若該計數器不為0,則必須經過“TIM1_RCR+1”周期后溢出更新才有效
(6)初始化控制寄存器TIM1_CR1,定義APRE、DIR、UDIS、URS(一般取1)。MOVTIM1_CR1,#04H ;向上計數、允許更新、僅允許計數器溢出時中斷標志有效
(7)必要時,執行軟件更新,將事件產生寄存器TIM1_EGR的UG位置1,觸發TIM1_ARR、TIM1_PSCR重裝操作。
BSETTIM1_EGR,#0 ;使UG位為1,觸發重裝并初始化計數器;BRESTIM1_SR1,#0 ;清除更新中斷標志(當URS為0,則UIF標志有效,根據;需要確定清除
(8)初始化中斷使能寄存器(TIM1_IER)的UIE位,允許更新中斷,并設置其優先級。BSETTIM1_IER,#0 ;允許更新中斷
(9)初始化控制寄存器TIM1_CR1,啟動定時器TIM1。BSETTIM1_CR1,#0 ;使CEN位為1,啟動注意:●在完成TIM1_PSCR、TIM1_ARR初始化后,應執行軟件更新操作,將事件產生寄存器TIM1_EGR的UG位置1,觸發各影子寄存器重裝并初始化計數器與分頻器,否則首次溢出時間可能不正確?!癞斝枰谥袛喾粘绦蛑羞M行軟件計數時(如主定時器),如果不執行軟件更新操作,則首次溢出時間不正確,而執行了軟件更新操作后,當URS位為0時,也產生了更新中斷請求,又造成中斷服務程序中的軟件計數值異常。此時,解決辦法是將URS位置1,只允許計數器溢出更新中斷?!裨谥袛喾粘绦蛑校欢ㄒㄟ^軟件清除更新標志。假設利用TIM1溢出中斷每500
ms控制與PC4引腳相連的LED指示燈亮、滅一次,則TIM1溢出中斷參考程序如下:
;
------TIM1的中斷服務程序------
interruptTIM1_Interrupt_Over
TIM1_Interrupt_Over.l
BRESTIM1_SR1,#0 ;清除更新中斷標志
DECR10
JRNETIM1_Interrupt_Over_EXIT
;軟件計數器R10回0MOVR10,#50BCPLPC_ODR,#4 ;
50
×
10ms時間到,PC4引腳輸出寄存器位取反,使LED指示
;燈亮或滅TIM1_Interrupt_Over_EXIT.LIRETIRETIRETIRET7.3.2外部時鐘模式1所謂“外部時鐘模式1”就是指外部時鐘信號從計數器的TIMx_CHn引腳輸入,經濾波、邊緣選擇、極性變換后作為預分頻器輸入信號CK_PSC。在圖7-11中給出了如何將連接在TI2(即TIM1_CH2)引腳的輸入信號作為外部時鐘源的例子,其初始化過程如下所示:
(1)將TIM1_CH2引腳初始化為無中斷功能的輸入方式。
(2)將TIM1_CCMR2寄存器的CC2S[1:0]設為01(將TIM1_CH2引腳置為輸入,且將IC2連接到TI2FP2上)。
(3)根據外部輸入時鐘信號的特征,初始化TIM1_CCMR2寄存器的IC2F[3:0],選擇濾波特性(采樣頻率及采樣次數)。由于僅利用輸入功能,并沒有利用其捕獲功能,在“外部時鐘模式1”中,輸入通道并沒有用到輸入預分頻功能,因此無須初始化IC2PSC[1:0]位。
MOVTIM1_CCMR2,#xxxx0001B ;?xxxx用于表示濾波特性,IC2PSC[1:0]固定為00
(4)將TIM1_CCER1寄存器的CC2P設為0,選定上升沿極性,并禁止捕獲。
(5)配置TIM1_SMCR寄存器的SMS=111,配置計數器使用外部時鐘模式1。
(6)配置TIM1_SMCR寄存器的TS=110,選定TI2作為輸入源。
(7)設置TIM1_CR1寄存器的CEN=1,啟動計數器。圖7-11外部時鐘模式1的連接示意圖這樣,在外部時鐘的每一個上升沿計數器開始計數,且TIM1_SR1寄存器的TIF(觸發標志)位會置1,如果觸發中斷允許,將會產生一個觸發中斷。如圖7-12所示。圖7-12外部時鐘模式1觸發控制7.3.3外部時鐘模式2計數器能夠在外部觸發輸入信號ETR(接PH4或PB3引腳)的每一個上升沿或下降沿計數。將TIM1_ETR寄存器的ECE位寫1,即可選定外部時鐘模式2。除了TIM1高級定時器外,其他定時器均沒有外部輸入觸發輸入信號ETR。
對于具有外部觸發輸入信號ETR的定時器,可通過兩個途徑把ETR信號接入預分頻輸入信號CK_PSC:一是直接將外部觸發寄存器(TIM1_ETR)的ECE置1,選擇ETR時鐘(即外部時鐘源模式2);二是將TIM1_SMCR寄存器的SMS=111,TS=111(TRGI連接到外部觸發濾波輸出ETRF的外部時鐘模式1)。這兩方式基本等效,只是將外部觸發濾波輸出信號接TRGI時,在觸發信號的上升沿將產生觸發有效(TIF為1)。外部時鐘模式2連接方式如圖7-13所示。圖7-13外部時鐘模式2的連接方式外部時鐘模式2的初始化過程如下所示。
(1)將外部觸發輸入引腳ETR(PH4)初始化為不帶中斷功能的輸入方式,是懸空還是帶上拉均由外部時鐘輸出信號決定。
(2)初始化外部觸發寄存器(TIM1_ETR)的ETP位選擇觸發極性(0:不反相;1:反相)。
(3)初始化外部觸發寄存器(TIM1_ETR)的ETPS位選擇外觸發輸入信號的分頻系數。為防止漏計數,外部觸發分頻器輸出信號ETRP頻率不大于fMASTER/4,因此,當輸入ETR引腳信號時鐘頻率太高時,必須選擇適當的分頻系數,如01(2分頻),將ETRP信號頻率降低。
(4)當分頻系數為1(不分頻)時,可根據ETR信號邊沿的是否存在抖動或尖峰干擾選擇相應的濾波參數(采樣頻率與采樣次數)。顯然,當采用了外部觸發分頻器后,輸入濾波就沒有意義了。
(5)初始化外部觸發寄存器(TIM1_ETR)的ECE位置1,選擇外部時鐘。
(6)將TIM1_SMCR寄存器的SMS[2:0]置為000。
(7)將TIM1_CR1寄存器的CEN置1,啟動定時器。結果是計數器在每兩個輸入信號的上升沿加1,如圖7-14所示。可見,外部時鐘模式2在時鐘邊沿來到時,觸發標志(TIF)無效。圖7-14外部時鐘模式27.3.4觸發同步計數器允許四種觸發輸入,如下所示:
(1)?ETR:外部觸發信號。
(2)?TI1:連接在CH1引腳的外部輸入信號。
(3)?TI2:連接在CH2引腳的外部輸入信號。
(4)來自TIM5/TIM6的TRGO。
TIM1的計數器使用三種模式與外部的觸發信號同步,這三種模式是標準觸發模式、復位觸發模式和門控觸發模式。有關觸發同步可參閱有關用戶指南,這里不再詳細介紹。7.4捕獲/比較通道定時器輸入捕獲/輸出比較各通道(TIM1_CH1~TIM1_CH4),既可以工作于輸入捕獲方式,也可以工作于比較輸出方式,由相對應的每一個通道的捕獲/比較模式寄存器TIM1_CCMRi(i?=?1~4表示通道號)的CCiS[1:0]位來確定。圖7-15所示是通道1捕獲/比較結構圖。圖7-15通道1的捕獲/比較結構圖每一個輸入捕獲/輸出比較通道均以捕獲/比較寄存器(包括捕獲/比較預裝載寄存器TIM1_CCRi及其影子寄存器)為中心。輸入捕獲由輸入數字濾波、邊沿檢測、多路選擇開關、預分頻器等部件組成;輸出比較由比較器、輸出控制等部件組成。
在輸入捕獲方式下,當捕獲發生時,先將計數器TIM1_CNT當前值復制到捕獲/比較影子寄存器中,然后再傳送到捕獲/比較預裝載寄存器TIM1_CCRi中。對TIM1_CCRi高8位進行讀操作時,SR觸發器輸出高電平,與門輸出低電平,TIM1_CCRi寄存器被凍結,而對TIM1_CCRi寄存器低8位進行讀操作時,SR觸發器輸出低電平,與門解鎖,TIM1_CCRi影子寄存器與TIM1_CCRi連通。因此,對于輸入捕獲方式,只能用字節傳送命令先讀捕獲/比較寄存器TIM1_CCRi的高8位,后讀TIM1_CCRi的低8位,如下所示:
MOVR02,TIM1_CCR1H ;先讀通道1捕獲/比較寄存器TIM1_CCR1的高8位
MOVR03,TIM1_CCR1L ;再讀TIM1_CCR1的低8位,同時解除凍結狀態如果順序顛倒或用LDW命令從TIM1_CCRi寄存器獲取數據,則結果可能不正確。在比較輸出方式下,讀TIM1_CCRi寄存器順序沒有限制,不過對TIM1_CCRi寫入時,同樣要求先寫高8位,后寫低8位。
STM8S定時器溢出中斷與定時器捕獲輸入/比較輸出中斷相互獨立,各自有自己的中斷向量、中斷優先級,擴展了定時器的用途。7.4.1輸入模塊內部結構
TIM1輸入模塊結構如圖7-16所示。其中,通道1(TIM1_CH1)與通道2(TIM1_CH2)的濾波輸出可以相互映射;通道3(TIM1_CH3)與通道4(TIM1_CH4)的濾波輸出也可以相互映射。圖7-16TIM1的輸入通道TIM1通道1(TIM1_CH1)輸入內部結構如圖7-17所示。圖7-17TIM1通道1(TIM1_CH1)輸入內部結構7.4.2輸入捕獲初始化與操作舉例作為一個特例,下面給出捕獲TI1(即TIM1_CH1)引腳輸入信號上升沿的初始化過程:
(1)初始化TIM1_CH1引腳為不帶中斷功能的輸入方式。
(2)初始化定時器工作方式(初始化定時器的計數方式、輸入計數器預分頻器輸入信號等)。
(3)初始化TIM1_CCMR1寄存器。將TIM1_CCMR1寄存器的CC1S[1:0]?位置01,即將TI1的濾波輸出信號TI1FP1連接到IC1。此時TIM1_CCR1(通道1的捕獲/比較寄存器)作為輸入捕獲寄存器(只讀)。
(4)根據TI1輸入信號特征,選擇相應的濾波采樣頻率與采樣次數,定義IC1F[3:0]?位。假定主時鐘頻率為4?MHz,輸入信號抖動頻率不超過1MHz,采樣頻率取1/4主頻率,抖動時間不超過8個周期。可將IC1F[3:0]?設置為0111。在利用定時器完成輸入捕獲時,應充分利用輸入濾波功能,去除窄脈沖干擾或輸入信號邊沿的抖動干擾。例如,在測量含有窄脈沖干擾信號的連續脈沖高低電平時間時,如果能充分地利用輸入濾波功能,則可以把窄干擾脈沖忽略掉。例如當主頻率為4MHz時,如果希望濾除寬度在10μs的窄脈沖,則采樣頻率為1/8主頻,6次采樣,即總采樣時間為8?×?6?×?0.25μs,即12μs。
(5)由于需要檢測輸入信號的每一個上升沿,因此無須分頻,即將IC1PSC[1:0]取為00。TIM1_CCMR1寄存器內容為01110001B。
(6)將捕獲/比較使能寄存器1(TIM1_CCER1)的CC1P位置0,選擇上升沿捕獲;將CC1E位置1,允許輸入捕獲。
(7)必要時初始化中斷控制寄存器(TIM1_IER),使CC1IE位為1,允許捕獲/比較通道1的中斷請求,捕獲中斷標志記錄在狀態寄存器TIM1_SR1中,重復捕獲中斷記錄在狀態寄存器TIM1_SR2中。如果要連續測量信號每一個時刻高、低電平時間,可在捕獲中斷服務程序中交替變換CC1P的極性(當前為上升沿捕獲,下一次捕獲改為下降沿捕獲;反之亦然),就可以測出信號高電平時間和低電平時間。當然,也可以用引腳上、下沿中斷方式,在中斷服務程序中對定時器進行“飛”讀操作,獲取信號邊沿發生的時間來判別連續脈沖信號高、低電平時間。這與利用定時器捕獲功能相比,其主要缺點是:精度差,從中斷有效到中斷響應有延遲;不能有效利用捕獲輸入濾波特性,去除窄脈沖干擾信號。在STM8S中,利用TIMx_CHn輸入捕獲功能測量信號周期或脈沖信號高低電平持續時間長短時,如果兩次捕獲間隔小于對應定時器溢出時間,則可用T2(當前捕獲時刻)?-?T1(前一次捕獲時刻)計算兩次捕獲間隔。如果定時器自動裝載寄存器TIMx_ARR不是FFFFH,則模不是216,而是TIMx_ARR的值。判別程序如下:LDA,TIMx_CCRnH ;在輸入捕獲的情況下,必須按字節讀取,且先讀高8位LDXH,ALDA,TIMx_CCRnL ;讀低8位LDXL,ASUBWX,T1 ;減上一個時刻捕獲值JRNCNEXT1ADDWX,TIMx_ARRH ;有借位,說明定時器曾經溢出,必須再加上自動裝載寄存器的值NEXT1:當兩次捕獲間隔不小于定時器溢出時間時,在計算捕獲間隔T時,必須考慮定時器溢出次數n,即T=T2(當前捕獲時刻)?+?n×TIMx_ARR-T1(前一次捕獲時刻)7.4.3輸出比較當通道的捕獲/比較模式寄存器TIM1_CCMRi(i?=?1~4)的CCiS[1:0]位定義為00時,對應通道1~4工作于輸出比較方式,主要用于產生精確的定時信號、PWM波形。輸出比較電路以數值比較器為核心,由數值比較器、多路開關、輸出波形極性控制、剎車控制等部分組成,如圖7-18所示。圖7-18輸出模塊在圖7-18中,通道4沒有互補輸出引腳,通道1~3輸出結構完全相同,下面以通道1為例來介紹。通道1輸出內部結構如圖7-19所示。當通道1處于輸出比較狀態時,引腳輸出電平以OC1REF(比較參考信號)作參考。參考信號OC1REF有效電平總是高電平,而引腳輸出電平由CC1P、CC1NP位定義。由圖7-19看出,當CC1P位為0時,參考信號OC1REF與TIM1_CH1引腳直接相連,即TIM1_CH1?=?OC1REF;當CC1P位為1時,參考信號OC1REF經反相器反相后與TIM1_CH1引腳相連,即IM1_CH1?=?。圖7-19通道1輸出內部結構此外,可以得出:帶有剎車功能的互補輸出OCi、OCiN信號,受到比較捕獲使能寄存器TIM1_CCERi的CCiE、CCiNE位,剎車寄存器TIM1_BKR的MOE、OSSI、OSSR位,輸出空閑狀態寄存器TIM1_OISR的OISi、OISiN位的控制,如表7-3所示。在使用TIM1的輸出比較功能時,必須初始化表7-3中所列相關寄存器的控制位,否則不輸出。表7-3帶剎車控制的OCi與OCiN輸出信號控制通道1可以工作在多種輸出比較方式,由TIM1_CCMR1寄存器的OC1M[2:0]位定義,具體如下:
(1)?000:OC1REF輸出被凍結(輸出比較寄存器TIM1_CCR1與計數器TIM1_CNT間的比較對OC1REF不起作用)。
(2)?001:匹配時設置通道1的輸出為有效(即高)電平(匹配前為低電平)。當計數器TIM1_CNT的值與捕獲/比較寄存器TIM1_CCR1相同時,強制OC1REF為高。通過這種方式可獲得由低到高(或由高到低)的階躍信號。
(3)?010:匹配時設置通道1的輸出為無效電平(即低電平)。當計數器TIM1_CNT的值與捕獲/比較寄存器TIM1_CCR1相同時,強制OC1REF為低電平。
(4)?011:匹配(即TIM1_CNT?=?TIM1_CCR1)時觸發OC1REF的電平反轉(首次匹配前OC1REF為低電平),輸出信號頻率與TIM1_ARR有關(即OC1REF信號周期為2?×?TIM1_ARR),而與捕獲/比較寄存器TIM1_CCR1無關(獲得精確方波手段之一),如圖7-20所示,其中i表示通道號。圖7-20匹配時觸發OCiREF電平翻轉
(5)?100:強制OC1REF為無效電平(即低電平),用于將引腳輸出電平強制為某一個確定狀態。
(6)?101:強制OC1REF為有效電平(即高電平),用于將引腳輸出電平強制為某一個確定狀態。
(7)?110:PWM模式1,在向上計數過程中,一旦TIM1_CNT?<?TIM1_CCR1時,通道1輸出參考電平OC1REF為有效電平,否則為無效電平,如圖7-21(a)所示,其中i表示通道號;而在向下計數過程中,一旦TIM1_CNT?>?TIM1_CCR1時,通道1為無效電平(OC1REF?=?0),否則為有效電平(OC1REF?=?1),如圖7-21(b)所示,其中i表示通道號。圖7-21僅給出參考電平OCiREF的變化,而OCi、OCiN引腳輸出情況,還要受到MOE、OSSI、CCiE、CCiEN等控制位控制,如表7-3所示。
(8)?111:PWM模式2,在向上計數時,一旦TIM1_CNT?<?TIM1_CCR1,通道1的參考電平OC1REF為低電平(即無效電平),否則為有效電平;在向下計數時,一旦TIM1_CNT?>?TIM1_CCR1,通道1的參考電平OC1REF為高電平(有效電平),否則為無效電平。與110情形相比,這相當于輸出波形取反。由于TIM1屬于高級控制寄存器,因此同相(OCi)、反相(OCiN)輸出比較引腳電平受到剎車寄存器TIM1_BKR有關位控制,而TIM2、TIM3、TIM5通用寄存器輸出比較引腳OCi僅受CC1P位控制。圖7-21OC1M[2:0]?為110時參考電平OCiREF的變化7.4.4輸出比較初始化舉例
1.輸出比較初始化過程下面以TIM1_CH1為例,介紹TIM1通道1~4輸出比較初始化過程。
(1)初始化TIM1_CH1引腳為輸出方式。選擇OD還是推挽由后級電路決定,輸出信號邊沿由期望的PWM輸出信號頻率決定,不過一般不會超過2MHz。
(2)初始化定時器工作方式、溢出中斷控制并寫出溢出中斷服務程序。
(3)初始化輸出比較寄存器TIM1_CCR1寄存器。在OC1PE為0時,先初始化CCR1,否則第一個PWM脈沖頭寬度不同。
(4)初始化捕獲/比較寄存器TIM1_CCMR1的CC1S[1:0]?為00(輸出比較方式),以及OC1M[2:0]?位,選擇相應的輸出比較方式。在PWM方式中,一般要用預裝載功能,即OC1PE位為1。否則寫入輸出比較寄存器TIM1_CCR1的內容立即生效,而不是等到溢出時才生效。
(5)初始化剎車寄存器TIM1_BKR。TIM1屬于高級控制定時器,OCi的輸出受TIM1_BKR寄存器有關位,如MOE的控制。
(6)對于互補輸出方式,必須初始化死區控制寄存器TIM1_DTR。
(7)初始化捕獲/比較使能寄存器TIM1_CCER1的CC1P(同相輸出比較極性)、CC1E(同相輸出比較允許)、CC1NP(反相輸出比較極性)、CC1NE(反相輸出比較允許),以便獲得一路或互補的兩路輸出信號。注意:由于STM8S系列TIM1_CH3~TIM1_CH1的反相輸出端TIM1_CH3N~TIM1_CH1N屬于多重復用引腳,由選項字節OPT1的b5位控制。因此,必須先通過IAP編程方式或在編程狀態下,將OPT1的b5位置1(此時B3引腳備選功能為TIM1_ETR,B2引腳備選功能為TIM1_CH3N,B1引腳備選功能為TIM1_CH2N,B0引腳備選功能為TIM1_CH1N),然后在STVD開發環境下,即可通過PB0引腳輸出OC1的互補信號OC1N。
(8)如果允許比配時輸出比較中斷,則還需要初始化中斷控制TIM1_IER,并設置相應的中斷優先級。
2.互補輸出死區時間對輸出波形的影響
TIM1輸出比較通道1~3具有互補輸出功能,下面以通道1為例來作介紹。當死區時間D(即TIM1_DTR)為0時,OC1與OC1N僅為簡單的反相關系,如圖7-22中的粗實線所示。當死區時間D不為0時,OC1輸出脈沖頭前沿被延遲了一個死區時間,相當于OC1前沿減小死區時間D,使OC1正脈沖寬度減小為W?-?D;而OC1N的后沿也被延遲了一個死區時間,相當于OC1N后沿增加了死區時間D,使OC1N負脈沖寬度加寬為W?+?D,如圖7-22中的虛線所示。脈沖寬度W?=?TIM1_CCR1死區時間D?=?TIM1_DTR脈沖周期T?=?TIM1_ARR圖7-22兩路互補輸出波形示意圖為保證OC1正脈沖頭寬度大于0,捕獲/比較寄存器TIM1_CCR1(即死區時間為0時的脈沖頭寬度W)必須大于死區時間D,否則OC1輸出恒為低電平或高電平(取決于CC1P位)。顯然,為保證OC1N正脈沖頭時間(T?-?W?-?D)?>?0,也必須保證W?+?D?<?T(自動重裝寄存器TIM1_ARR),否則OC1N的狀態也不翻轉,輸出恒為低電平或高電平(取決于CC1NP位)。死區時間D的存在,可保證OC1、OC1N信號不能同時為低電平或高電平,這在電機、開關電源控制電路中非常必要。死區時間D的長短可編程選擇,由TIM1_DTR寄存器控制(TIM1_CH1~TIM1_CH3三個通道共用),如表7-4所示。表7-4死區時間與死區時間寄存器TIM1_DTR內容之間關系
3.半橋驅動信號產生的方法以通道1為例,在死區時間D不為0的情況下,同相端OC1脈沖頭寬度為W?-?D,反相端OC1N脈沖頭寬度為T?-?W?-?D,可見:
(1)?W?-?D?<?T?-?W?-?D時,即T?>?2W時,OC1脈沖頭比OC1N窄,如圖7-23(a)所示;
(2)?W?-?D?>?T?-?W?-?D時,即T?<?2W時,OC1脈沖頭比OC1N寬,如圖7-23(b)所示;
(3)?W?-?D?=?T?-?W?-?D時,即T?=?2W時,OC1脈沖頭與OC1N脈沖頭相同,即獲得了圖7-23(c)所示的半橋驅動所需的兩路脈沖信號。圖7-23脈沖頭寬度W對波形的影響(細線:D?=?0;粗線:D?≠?0)在這種情況下,如果死區時間D固定不變,則可以通過調節周期(即調頻)改變輸出脈沖的占空比,即顯然,頻率越高,占空比越小;頻率越低,占空比越大,其最大值接近0.5,如表7-5所示。表7-5調頻率脈寬變化規律脈沖參數占空比WTD(W?-?D)T2040100.2504080100.37550100100.40060120100.41780160100.4375如果要實現調寬(即PWM調制),即周期T(TIM1_ARR)、脈沖頭寬度W(TIM1_CCRn)保持不變,則只能通過調節死區時間D獲得不同的占空比。在開關電源中,PWM調制輸出信號頻率固定,輸出直流信號紋波電壓幅度與占空比調節無關。不過STM8S最高時鐘頻率只有16MHz或24MHz,互補輸出的PWM信號頻率不能太高。例如,當tCK_PSC為16MHz時,如果周期T為50kHz,則死區時間最小值為1.5μs,脈沖頭寬度調整范圍在0~8.5μs之間(對應的死區調整范圍在10~1.5μs之間),占空比最大值為0.425。在半橋驅動電路中,一般要求兩脈沖頭寬度相同,當然上下兩管不完全對稱時,也可以微調兩輸出信號脈沖頭寬度,使其強制對稱。7.5定時器中斷控制在定時器中斷控制中,剎車中斷BIF、觸發中斷TIF、更新中斷(UIF)共用溢出中斷邏輯;而COM中斷、各通道捕獲/比較中斷CCiIF、重復捕獲/比較中斷CCiOF共用捕獲/比較中斷邏輯。7.6通用定時器TIM2/TIM37.6.1通用定時器TIM2/TIM3結構通用定時器TIM2、TIM3的內部結構完全相同,由時基單元(TIMEBASEUNIT)、捕獲/比較陣列(CAPTURECOMPAREARRAY)兩部分組成,如圖7-24所示。圖7-24通用定時器TIM2、TIM3內部結構7.6.2通用定時器時基單元通用定時器TIM2、TIM3時基單元電路,由預分頻器(TIMx_PSCR)、向上計數的16位計數器(TIMx_CNTR)以及自動裝載寄存器(TIMx_ARR)組成,如圖7-25所示。圖7-25TIM2/TIM3時基單元
1.預分頻器預分頻器輸入信號CK_PSC由主時鐘信號fMASTER提供(TIM2、TIM3計數脈沖不可選,只有內部時鐘一種方式,不能對外部事件進行計數),預分頻器輸出信號CK_CNT(計數器輸入信號,也就是計數脈沖)頻率與預分頻器TIMx_PSCR之間關系為(7-3)通用定時器TIM2、TIM3預分頻器是一個基于4位控制的16位計數器,只有16個可選的分頻值。根據TIMx_PSCR內容的不同,可對輸入信號CK_PSC實現1分頻(TIMx_PSCR?=?0時)、2分頻(TIMx_PSCR?=?1時)、22…215(32768)分頻(TIMx_PSCR?=?15時)。
2.16位加法計數器TIMx_CNTR通用定時器TIM2、TIM3計數器TIMx_CNTR是一個16位向上計數器,每個計數脈沖上升沿加1。當TIMx_CNTR的計數值等于自動裝載寄存器(TIMx_ARR)的影子寄存器時,再來一個計數脈沖,則出現上溢,然后從0開始計數,同時產生更新事件UEV。通用定時器TIM2、TIM3的其他情況與高級控制定時器TIM1相同,如URS、UDIS、UIE與UEV的邏輯關系等,如圖7-9所示。
3.自動裝載寄存器(TIMx_ARR)通用定時器TIM2、TIM3自動裝載寄存器(TIMx_ARR)與高級控制定時器TIM1相同。自動裝載寄存器TIMx_ARR與溢出時間t、預分頻器TIMx_PSCR之間關系為(7-4)其中,fMASTER的單位為MHz;溢出時間t的單位為μs。7.6.3通用定時器輸入捕獲/輸出比較通用定時器TIM2/TIM3輸入捕獲/輸出比較部分與TIM1類似,只是沒有死區時間、互補輸出、剎車控制等功能。其中,TIM2有3個輸入捕獲/輸出比較通道,每一個通道處于輸入捕獲還是輸出比較狀態,由各自通道的捕獲/比較模式寄存器TIMx_CCMRi(i表示通道號)的CCiS位(定義對應通道處于輸入捕獲還是輸出比較方式)控制。
1.輸入捕獲當某一個通道捕獲/比較模式寄存器TIMx_CCMRi(i表示通道號)的CCiS位為01、10時,對應的通道處于輸入捕獲狀態,如圖7-26所示。圖7-26輸入狀態內部結構圖7-27給出了TIM2通道1在輸入捕獲狀態下的結構框圖。圖7-27TIM2通道1在輸入捕獲狀態下的結構框圖2.輸出比較當某一個通道捕獲/比較模式寄存器TIMx_CCMRi(i表示通道號)的CCiS位為00時,對應的通道處于輸出比較狀態,如圖7-28所示。圖7-28輸出比較接口通道1在輸出比較狀態下的結構如圖7-29所示。圖7-29通道1在輸出比較狀態下的結構圖7.6.4通用定時器TIM2/TIM3初始化舉例
1.計數器的初始化由于TIM2/TIM3預分頻器輸入信號直接來自主時鐘fMASTER,因此不存在主從模式觸發選擇問題。計數器初始化的步驟如下:
(1)初始化預分頻器TIM2_PSCR。MOVTIM2_PSCR,#03H ;
PSC[3:0]取3,即選擇8分頻
(2)初始化自動重裝初值寄存器(TIM2_ARR)。
MOVTIM2_ARRH,#27H ;先寫入高8位
MOVTIM2_ARRL,#10H ;再寫入低8位,該寄存器初值為10000,即2710H
(3)初始化控制寄存器TIM2_CR1,定義APRE、OPM、UDIS、URS(一般取1)。MOVTIM2_CR1,#04H ;連續計數、允許更新、僅允許計數器溢出時中斷標志有效
(4)必要時,執行軟件更新操作。將事件產生寄存器TIM2_EGR的UG位置1,觸發重裝。
BSETTIM2_EGR,#0 ;使UG位為1,觸發重裝并初始化計數器
;BRESTIM2_SR1,#0 ;清除軟件更新產生的更新標志UIF
(5)初始化中斷使能寄存器(TIM2_IER),允許更新中斷;并設置其優先級。BSETTIM2_IER,#0 ;允許更新中斷
(6)初始化控制寄存器TIM2_CR1,啟動定時器TIM2。BSETTIM2_CR1,#0 ;使CEN位為1,啟動
2.輸出比較的初始化在完成了計數器本身的初始化后,對其某一個通道的輸出比較進行初始化,以便獲得相應的輸出波形。下面以在TIM2_CH1通道輸出的PWM波形為例介紹輸出比較的初始化過程:
(1)初始化輸入捕獲/輸出比較模式寄存器TIM2_CCMR1。將CC1S[1:0]?定義為00,選擇輸出比較方式;將OC1PE位置1,選擇輸出比較寄存器的預裝載功能;將OC1M[2:0]?定義為●?011(匹配時,觸發引腳翻轉),將獲得方波(方波頻率與通道1比較捕獲寄存器TIM2_CCR1的內容無關,僅與TIM2_ARR的內容有關),且方波高低電平時間等于計數器溢出時間,如圖7-30所示。圖7-30OCxM?=?011時的輸出波形●?110(PWM1模式方式),當計數器TIM2_CNT<TIM2_CCR1時,OCiREF(i表示通道號)為高電平(有效電平),反之為低電平。至于有效電平是高電平還是低電平,由捕獲/比較使能寄存器1(TIMx_CCER1)的CC1P位定義(當CC1P為0時,OCx?=?OCiREF),如圖7-31所示。圖7-31OCxM?=?110時的輸出波形(PWM1方式)●?111(PWM2模式方式),當計數器TIM2_CNT?<?TIM2_CCR1時,輸出無效電平,反之輸出有效電平。輸出波形與OCxM為110時類似,只是極性相反,如圖7-32所示。由于通用定時器TIM2、TIM3只有向上計數一種方式,因此,PWM輸出波形與TIM1向上計數時的PWM輸出波形完全相同。
(2)初始化對應通道的輸入捕獲/輸出比較寄存器TIM2_CCRn,一定按字節寫入,且先寫高8位TIM2_CCRnH,后寫低8位TIM2_CCRnL。
(3)初始化中斷使能寄存器(TIM2_IER),允許/禁止輸出比較中斷,并設置其優先級。
(4)初始化捕獲/比較使能寄存器1(TIMx_CCER1)的CC1P位定義有效電平,CC1E可以使能比較。圖7-32OCxM?=?111時的輸出波形(PWM2方式)7.7窗口看門狗定時器WWDG7.7.1窗口看門狗定時器結構及其溢出時間窗口看門狗定時器WWDG在本質上就是一個軟件看門狗定時器,不過其優先權低于獨立看門狗定時器IWDG,即IWDG使能時WWDG自動關閉,其計數脈沖為CPU時鐘信號fCPU,內部結構如圖7-33所示。窗口看門狗定時器由預分頻器WDGprescaler(12?288分頻)、看門狗控制寄存器WWDG_CR(內含7位向下計數器T[6:0])、看門狗窗口寄存器WWDG_WR及邏輯門電路組成。圖7-33窗口看門狗結構由圖7-33可以看出,在下列兩種情況下,均會觸發系統復位。
(1)當WWDG_CR寄存器的WDGA(看門狗激活控制)位為1時,如果WWDG_CR寄存器的T6位由1變0,則或門輸出高電平,復位控制信號RESET輸出高電平,強迫復位單元電路下拉N溝MOS管導通,迫使MCU進入復位狀態。
WWDG_CR寄存器取值范圍在FFH~C0H(即向下計數器T6~T0取值范圍在7FH~40H)之間。當向下計數器T6~T0由40H變為3FH時,T6位由1變0,復位信號有效。窗口看門狗計數器溢出時間為(7-5)因為T[6:0]?可表示為T[6]·26?+?T[5:0],而在啟用WWDG時,WWDG_CR的T6位一定為1,所以窗口看門狗計數器溢出時間也可以表示為(7-6)當頻率fCPU的單位取MHz時,窗口看門狗計數器溢出時間tWWDG的單位為μs。例如,當fCPU為10MHz時,如果計數器初值為7FH,則溢出時間為78643.2μs。在已知溢出時間、CPU時鐘頻率的情況下,向下計數器T[6:0]?初值為(7-7)當fCPU一定時,窗口計數器溢出時間的范圍就確定了。例如當fCPU?=?8MHz時,可選擇的溢出時間范圍在1536~98304μs之間。
(2)當T[6:0]?>?W[6:0]?時,數值比較器CMP輸出高電平。如果此時執行重寫遞減計數器WWDG_CR,則與門輸出高電平,同樣會使RESET信號有效,觸發系統復位,即過早“喂狗”同樣會引起系統復位—這是為了防止PC“走飛”,提早重寫向下計數器T[6:0],造成WWDG失效而設計的復位模式。換句話說,在STM8S中,啟動WWDG定時器后,在正常情況下,用戶必須且只能在“40H≤T[6:0]<WWDG_WR”期間內,執行MOVWWDG_CR,#11xxxxxxB指令“喂狗”,防止WWDG定時器觸發系統復位,既不能早喂—不餓,會觸發復位;也不能喂得太晚—也會觸發復位。如圖7-34所示。圖7-34窗口看門狗定時器刷新(喂狗)時機示意圖7.7.2窗口看門狗定時器初始化窗口看門狗定時器WWDG有兩種啟動方式:硬件啟動方式和軟件啟動方式。
1.硬件啟動方式在寫片時,將看門狗配置選項OPT3字節的WWDG_HW位置1(硬件啟動)時,復位后軟件看門狗WWDG即處于啟動狀態(復位后WWDG_CR寄存器初值為7FH;WWDG_WR為7FH)。此時,窗口看門狗定時器退化為普通的軟件看門狗定時器,溢出時間為(7-8)
2.軟件啟動方式在寫片時,將看門狗配置選項OPT3字節的WWDG_HW位清0(軟件啟動),復位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 動物發病機制研究進展試題及答案
- 2025年應試技巧土木工程試題及答案
- 茶藝師行業管理實務試題及答案
- 土木工程軌道交通設計試題及答案
- 融會貫通的人力資源管理師試題及答案
- 2025婦幼保健員考試互動學習試題及答案
- 二零二五年度土地承包經營權入股合作協議
- 2025年度夢幻婚禮專業拍攝及婚禮影像制作合同
- 二零二五年度農村宅基地租賃與農村垃圾分類處理協議
- 二零二五年度企業財務風險預警與應對策略咨詢協議
- 2025河南中煙安陽卷煙廠一線崗位招聘14人易考易錯模擬試題(共500題)試卷后附參考答案
- 四川省2024年高等職業教育單獨招生考試中職類語文試題及答案
- 眼科手術學基礎
- 多晶硅大型還原爐裝備項目可行性研究報告建議書
- 2025年高考作文備考之模擬試題:“自塑”與“他塑”
- (完整版)高考英語詞匯3500詞(精校版)
- 2024年常州機電職業技術學院高職單招語文歷年參考題庫含答案解析
- 2025年鎮履職事項清單工作培訓會會議記錄
- 湘教版七年級數學下冊第二章實數教學課件
- 電工基礎知識培訓課件
- 2024年全國職業院校技能大賽高職組(智慧物流賽項)考試題庫(含答案)
評論
0/150
提交評論