第7章 定時器與開發(fā)實例_第1頁
第7章 定時器與開發(fā)實例_第2頁
第7章 定時器與開發(fā)實例_第3頁
第7章 定時器與開發(fā)實例_第4頁
第7章 定時器與開發(fā)實例_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章定時器與開發(fā)實例7.1STM32F4定時器概述STM32內部集成了多個定時/計數器。根據型號不同,STM32系列芯片最多包含8個定時/計數器。其中,TIM6和TIM7為基本定時器,TIM2~TIM5為通用定時器,TIM1和TIM8為高級控制定時器,功能最強。三種定時器具備的功能如表7-1所示。此外,在STM32中還有兩個看門狗定時器和一個系統(tǒng)滴答定時器。表7-1STM32定時器的功能可編程定時/計數器(簡稱定時器)是當代微控制器標配的片上外設和功能模塊。它不僅可以實現延時,而且還完成其他功能:(1)內部時鐘源時,定時器可實現精準定時,支持普通、比較輸出和PWM模式,適延時及波形輸出。(2)外部時鐘源時,定時器工作于輸入捕獲模式,用于測頻、占空比及外部事件計數和時間測量。在嵌入式系統(tǒng)應用中,使用定時器可以完成以下功能:(1)在多任務的分時系統(tǒng)中用作中斷實現任務的切換。(2)周期性執(zhí)行某個任務,如每隔固定時間完成一次A/D采集。(3)延時一定時間執(zhí)行某個任務,如交通燈信號變化。(4)顯示實時時間,如萬年歷。(5)產生不同頻率的波形,如MP3播放器。(6)產生不同脈寬的波形,如驅動伺服電機。(7)測量脈沖的個數,如測量轉速。(8)測量脈沖的寬度,如測量頻率。STM32F407相比于傳統(tǒng)的51單片機要完善和復雜得多,它是專為工業(yè)控制應用量身定做,定時器有很多用途,包括基本定時功能、生成輸出波形(比較輸出、PWM和帶死區(qū)插入的互補PWM)和測量輸入信號的脈沖寬度(輸入捕獲)等。STM32F407微控制器共有14個定時器,包括2個基本定時器(TIM6和TIM7)、10個通用定時器(TIM2~TIM5和TIM9~TIM14)及2個高級定時器(TIM1和TIM8)、2個看門狗定時器和1個系統(tǒng)嘀嗒定時器(SysTick)。7.2STM32F4基本定時器下面講述STM32基本定時器。STM32F407基本定時器TIM6和TIM7各包含一個16位自動裝載計數器,由各自的可編程預分頻器驅動。TIM6和TIM7定時器的主要功能包括:(1)16位自動重裝載累加計數器。(2)16位可編程(可實時修改)預分額器,用于對輸入的時鐘按系數為1~65536之間的任意數值分頻。(3)觸發(fā)DAC的同步電路。(4)在更新事件(計數器溢出)時產生中斷/DMA請求?;径〞r器內部結構如圖7-1所示。7.2.1基本定時器介紹圖7-1基本定時器結構框圖下面講述基本定時器的功能。1.時基單元STM32F407的基本定時器(如TIM6和TIM7)的時基單元是其核心組成部分,負責管理定時和計數功能。時基單元主要由以下幾個關鍵部分構成:(1) 計數器寄存器(TIMx_CNT)這是一個16位的遞增計數器,計數值范圍為0到65535。當定時器被使能后(TIMx_CR1寄存器的CEN位置1),計數器根據輸入的時鐘信號(CK_CNT)遞增。當計數器的值達到自動重載寄存器的值時,會產生一個計數器溢出事件(更新事件),這可能觸發(fā)中斷或DMA請求。7.2.2基本定時器的功能(2)預分頻器寄存器(TIMx_PSC)這是一個16位的可編程預分頻器,用于將輸入時鐘信號(CK_PSC)分頻,得到計數器的實際計數時鐘(CK_CNT)。分頻系數范圍為1到65536,實際系數是預分頻器寄存器的值加1。通過調整預分頻器的值,可以控制定時器的計數速度,從而影響溢出時間。(3)自動重載寄存器(TIMx_ARR)這是一個16位寄存器,用于存放與計數器比較的值。當計數器值與自動重載寄存器值相等時,會產生計數器溢出事件,并可能觸發(fā)中斷或DMA請求。自動重載寄存器具有預裝載功能,其值可以在不停止計數的情況下更新,新值將在下一個更新事件時生效。2.時鐘源STM32F407基本定時器TIM6和TIM7僅有一個內部時鐘源CK_INT,來源于RCC的TIMxCLK,但各定時器TIMxCLK不同?;径〞r器TIM6和TIM7的TIMxCLK由APB1預分頻器輸出,系統(tǒng)默認APB1時鐘頻率為72MHz。3.預分頻器預分頻器可將計數器時鐘按1至65536之間的任意系數分頻,通過16位寄存器TIMx_PSC實現。TIMx_PSC寄存器具緩沖功能,運行中可修改預分頻值,且新值將在下一更新事件時生效。圖7-2是在運行過程中改變預分頻系數的例子,預分頻系數從1變到2。圖7-2預分頻系數從1變到2的計數器時序圖4.計數模式STM32F407基本定時器只有向上計數工作模式,其工作過程如圖7-3所示,其中↑表示產生溢出事件。圖7-3向上計數工作模式基本定時器工作時,脈沖計數器TIMx_CNT從0累加計數到自動重裝載數值(TIMx_ARR寄存器),然后重新從0開始計數并產生一個計數器溢出事件。由此可見,如果使用基本定時器進行延時,延時時間可以由以下公式計算:延時時間=(TIMx_ARR+1)(TIMx_PSC+1)/TIMxCLK當發(fā)生一次更新事件時,所有寄存器會被更新并設置更新標志:傳送預裝載值(TIMx_PSC寄存器的內容)至預分頻器的緩沖區(qū),自動重裝載影子寄存器被更新為預裝載值(TIMx_ARR)。以下是一些在TIMx_ARR=0x36時不同時鐘頻率下計數器工作的圖示例子。圖7-4內部時鐘分頻系數為1,圖7-5內部時鐘分頻系數為2。圖7-4計數器時序圖(內部時鐘分頻系數為1)圖7-5計數器時序圖(內部時鐘分頻系數為2)現將STM32F407基本定時器相關寄存器名稱介紹如下,可以用半字(16位)或字(32位)的方式操作這些外設寄存器,由于是采用庫函數方式編程,故不作進一步的探討。(1)TIM6和TIM7控制寄存器1(TIMx_CR1)。(2)TIM6和TIM7控制寄存器2(TIMx_CR2)。(3)TIM6和TIM7DMA/中斷使能寄存器(TIMx_DIER)。(4)TIM6和TIM7狀態(tài)寄存器(TIMx_SR)。(5)TIM6和TIM7事件產生寄存器(TIMx_EGR)。(6)TIM6和TIM7計數器(TIMx_CNT).(7)TIM6和TIM7預分頻器(TIMx_PSC)。(8)TIM6和TIM7自動重裝載寄存器(TIMx_ARR)。7.2.3STM32基本定時器的寄存器7.3STM32F4通用定時器下面講述STM32通用定時器。7.3.1通用定時器介紹通用TIMx(TIM2、TIM3、TIM4和TIM5)定時器功能包括:(1)16位或32位向上、向下、向上/向下自動裝載計數器。(2)16位或32位可編程(可以實時修改)預分頻器,計數器時鐘頻率的分頻系數為1~65536之間的任意數值。(3)4個獨立通道:①輸入捕獲。②輸出比較。③PWM生成(邊緣或中間對齊模式)。④單脈沖模式輸出。(4)使用外部信號控制定時器和定時器互連的同步電路。(5)如下事件發(fā)生時產生中斷/DMA:①更新,計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發(fā))。②觸發(fā)事件(計數器啟動、停止、初始化或者由內部/外部觸發(fā)計數)。③輸入捕獲。④輸出比較。(6)支持針對定位的增量(正交)編碼器和霍爾傳感器電路。(7)觸發(fā)輸入作為外部時鐘或者按周期的電流管理。通用定時器內部結構如圖7-6所示。相比于基本定時器其內部結構要復雜得多,其中最顯著的地方就是增加了4個捕獲/比較寄存器TIMx_CCR,這也是通用定時器之所以擁有那么多強大功能的原因。7.3.2通用定時器的功能描述圖7-6通用定時器內部結構框圖1. 時基單元可編程通用定時器核心為16位計數器和自動裝載寄存器,計數器可向上、下或雙向計數,時鐘經預分頻器分頻。自動裝載寄存器預先裝載,ARPE位控制內容傳遞時機;計數器溢出且UDIS為0時觸發(fā)更新事件,可由軟件產生。計數器由預分頻器輸出CK_CNT驅動,CEN使能后計數器生效;預分頻寄存器16位,支持1~65536任意分頻,緩沖機制更新參數。2. 計數模式TIM2~TIM5可以向上計數、向下計數、向上向下雙向計數。(1)向上計數模式向上計數模式工作過程同基本定時器向上計數模式,工作過程如圖7-4所示。對于一個工作在向上計數模式下的通用定時器,當自動重裝載寄存器TIMx_ARR的值為0x36,內部預分頻系數為4(預分頻寄存器TIMx_PSC的值為3)的計數器時序圖如圖7-7所示。圖7-7通用定時器的計數器時序圖(內部時鐘分頻因子位4)(2)向下計數模式通用定時器向下計數模式工作過程如圖7-8所示。圖7-8通用定時器的向下計數工作模式對于一個工作在向下計數模式下的通用定時器,當自動重裝載寄存器TIMx_ARR的值為0x36,內部預分頻系數為2(預分頻寄存器TIMx_PSC的值為1)的計數器時序圖如圖7-9所示。圖7-9通用定時器計數器時序圖(內部時鐘分頻因子位2(3)向上/向下計數模式向上/向下計數模式又稱為中央對齊模式或雙向計數模式,其工作過程如圖7-10所示。計數器從0開始計數到自動加載的值(TIMx_ARR寄存器)?1,產生一個計數器溢出事件,然后向下計數到1并且產生一個計數器下溢事件;然后再從0開始重新計數。圖7-10向上/向下計數模式對于一個工作在向上/向下計數模式下的通用定時器,當自動重裝載寄存器TIMx_ARR的值為0x06,內部預分頻系數為1(預分頻寄存器TIMx_PSC的值為0)的計數器時序圖如圖7-11所示。圖7-11計數器時序圖(內部時鐘分頻因子為1)3.時鐘選擇相比于基本定時器單一的內部時鐘源,STM32F407通用定時器的16位計數器的時鐘源有多種選擇,可由以下時鐘源提供。(1)內部時鐘CK_INT來自RCCTIMxCLK,TIM2~TIM5通常為168MHz,源自APB1預分頻器。(2)外部輸入捕獲引腳TIx計數,響應TI1FP1或TI2FP2的邊沿信號。(3)外部觸發(fā)輸入引腳ETR計數,響應ETR上升或下降沿。(4)內部觸發(fā)輸入ITRx由其它定時器觸發(fā),支持定時器間聯(lián)動預分頻。4.捕獲/比較通道每個捕獲/比較通道圍繞一個寄存器(含影子寄存器),輸入部分含數字濾波、多路復用和預分頻器。輸入部分采樣TIx信號,濾波生成TIxF,再通過極性選擇邊緣檢測器產生TIxFPx信號。TIxFPx可觸發(fā)模式控制或捕獲控制,通過預分頻進入捕獲寄存器;輸出部分生成中間波形OCxRef決定最終輸出。下面講述通用定時器的工作模式。1.輸入捕獲模式輸入捕獲模式下,檢測到ICx邊沿時計數值鎖存到TIMx_CCRx寄存器,CCxIF標志置1。使能中斷或DMA則觸發(fā)響應,CCxIF已高時置CCxOF,寫0可清除兩個標志。7.3.3通用定時器的工作模式2.PWM輸入模式該模式是輸入捕獲模式的一個特例,除下列區(qū)別外,操作與輸入捕獲模式相同:(1)2個ICx信號被映射至同一個TIx輸入。(2)這2個ICx信號為邊沿有效,但是極性相反。(3)其中一個TIxFP信號被作為觸發(fā)輸入信號,而從模式控制器被配置成復位模式。例如,需要測量輸入到TI1上的PWM信號的長度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2寄存器)。3. 強置輸出模式輸出模式(CCxS=00)下,軟件可直接強置OCxREF和OCx信號有效或無效,不依賴比較結果。OCxM=101強置OCxREF高電平,OCx極性為CCxP反向;OCxM=100強置OCxREF低電平,比較仍然生效。比較和標志更新繼續(xù),中斷和DMA請求仍可產生,影子寄存器與計數器比較不受影響。4.輸出比較模式此項功能是用來控制一個輸出波形,或者指示一段給定的時間已經到時。當計數器與捕獲/比較寄存器的內容相同時,輸出比較功能做如下操作:(1)將輸出比較模式(TIMx_CCMRx寄存器中的OCxM位)和輸出極性(TIMx_CCER寄存器中的CCxP位)定義的值輸出到對應的引腳上。(2)設置中斷狀態(tài)寄存器中的標志位(TIMx_SR寄存器中的CCxIF位)。(3)若設置了相應的中斷屏蔽(TIMx_DIER寄存器中的CCxIE位),則產生一個中斷,(4)若設置了相應的使能位(TIMx_DIER寄存器中的CCxDE位,TIMx_CR2寄存著中的CCDS位選擇DMA請求功能),則產生一個DMA請求。5. PWM模式PWM輸出模式是一種特殊的輸出模式,在電力、電子和電機控制領域得到廣泛應用。STM32F407就是這樣一款具有PWM輸出功能的微控制器,除了基本定時器TIM6和TIM7。其他的定時器都可以用來產生PWM輸出。其中高級定時器TIM1和TIM8可以同時產生多達7路的PWM輸出。而通用定時器也能同時產生多達4路的PWM輸出,STM32最多可以同時產生30路PWM輸出。STM32F407微控制器脈沖寬度調制模式可以產生一個由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號,其產生原理如圖7-12所示。圖7-12STM32F407微控制器PWM產生原理通用定時器PWM輸出模式的工作過程如下:①配置TIMx_CNT為向上計數,計數從0開始累加至TIMx_ARR預設值N,時鐘為分頻后的CK_CNT驅動。②脈沖計數X與捕獲/比較寄存器TIMx_CCR預設值A比較,決定輸出高電平或低電平。③計數器值大于TIMx_ARR的N時清零重新計數,PWM周期為(N+1)TCK_CNT,占空比為A/(N+1)。現將STM32F407通用定時器相關寄存器名稱介紹如下,可以用半字(16位)或字(位)的方式操作這些外設寄存器,由于是采用庫函數方式編程,故不做進一步的探討。(1)控制寄存器1(TIMx_CR1)。(2)控制寄存器2(TIMx_CR2)。(3)從模式控制寄存器(TIMx_SMCR)。(4)DMA/中斷使能寄存器(TIMx_DIER)。(5)狀態(tài)寄存器(TIMx_SR)。(6)事件產生寄存器(TIMx_EGR)。(7)捕獲/比較模式寄存器1(TIMx_CCMR1)。(8)捕獲/比較模式寄存器2(TIMx_CCMR2)。7.3.4通用定時器的寄存器(9)捕獲/比較使能寄存器(TIMx_CCER)。(10)計數器(TIMx_CNT)。(11)預分頻器(TIMx_PSC)。(12)自動重裝載寄存器(TIMx_ARR)。(13)捕獲/比較寄存器1(TIMx_CCR1)。(14)捕獲/比較寄存器2(TIMx_CCR2)。(15)捕獲/比較寄存器3(TIMx_CCR3)。(16)捕獲/比較寄存器4(TIMx_CCR4)。(17)DMA控制寄存器(TIMx_DCR)。(18)連續(xù)模式的DMA地址(TIMx_DMAR)。綜上所述,與基本定時器相比,STM32F407通用定時器具有以下不同特性:(1)具有自動重裝載功能的16位遞增/遞減計數器,其內部時鐘CK_CNT的來源TIMxCLK來自APB1預分頻器的輸出。(2)具有4個獨立的通道,每個通道都可用于輸入捕獲、輸出比較、PWM輸入和輸出以及單脈沖模式輸出等。(3)在更新(向上溢出/向下溢出)、觸發(fā)(計數器啟動/停止)、輸入捕獲以及輸出比較事件時,可產生中斷/DMA請求。(4)支持針對定位的增量(正交)編碼器和霍爾傳感器電路。(5)使用外部信號控制定時器和定時器互連的同步電路。7.4STM32F4定時器HAL庫函數基礎定時器僅具定時功能,計數溢出產生UEV事件為中斷源。OPM位設定決定連續(xù)或單次定時模式。(1)OPM=0時,為連續(xù)定時模式,計數器UEV事件后不斷計數,產生連續(xù)周期定時中斷。(2)OPM=1時,為單次定時模式,計數器UEV事件后停止計數,定時中斷只產生一次。1.基礎定時器主要函數表7-2是基礎定時器的一些主要的HAL驅動函數,所有定時器具有定時功能,所以這些函數對于通用定時器、高級控制定時器也是適用的。7.4.1基礎定時器HAL驅動程序表7-2基礎定時器的一些主要的HAL驅動函數(1)定時器初始化函數HAL_TIM_Base_Init()對定時器的連續(xù)定時工作模式和參數進行初始化設置,其原型定義如下:HAL_StatusTypeDefHAL_TIM_Base_Init(TIM_HandleTypeDef*htim);其中,參數htim是定時器外設對象指針,是TIM_HandleTypeDef結構體類型指針,這個結構體類型的定義在文件stm32f4xx_hal_tim.h中,其定義如下,各成員變量的意義見注釋。typedefstruct{TIM_Typedef*Instance;//定時器的寄存器基址TIM_Base_InitTypeDefInit;//定時器參數HAL_TIM_ActiveChannelChanne1;//當前通道DMA_HandleTypeDef*hdma[7];//DMA處理相關數組HAL_LockTypeDefLock;//是否鎖定_IOHAL_TIM_StateTypeDefState;//定時器的工作狀態(tài)}TIM_HandleTypeDef;其中,Instance是定時器的寄存器基址,用于表示具體是哪個定時器;Init是定時器的各種參數,是一個結構體類型TIM_Base_InitTypeDef。(2)配置為單次定時模式定時器默認工作于連續(xù)定時模式,如果要配置定時器工作于單次定時模式,在調用定時器初始化函數HAL_TIM_Base_Init()之后,還需要用函數HAL_TIM_OnePulse_Init()將定時器配置為單次模式。其原型定義如下:HAL_StatusTypeDefHAL_TIM_OnePulse_Init(TIM_HandleTypeDef*htim,uint32_tOnePulseMode)其中,參數htim是定時器對象指針,參數OnePulseMode是產生脈沖的方式,有兩種宏定義常量可作為該參數的取值。(3)啟動和停止定時器定時器有3種啟動和停止方式,對應于表7-2中的3組函數。①輪詢方式:HAL_TIM_Base_Start()啟動,計數溢出標志需用戶輪詢查詢,無中斷觸發(fā)。②中斷方式:HAL_TIM_Base_Start_IT()啟動,計數溢出時觸發(fā)中斷,常用處理方式。③DMA方式:HAL_TIM_Base_Start_DMA()啟動,計數溢出后觸發(fā)DMA請求進行數據傳輸。(4)獲取定時器運行狀態(tài)函數HAL_TIM_Base_GetState()用于獲取定時器的運行狀態(tài),其原型定義如下:

HAL_TIM_StateTypeDefHAL_TIM_Base_GetState(TIM_HandleTypeDef*htim);函數返回值是枚舉類型HAL_TIM_StateTypeDef,表示定時器的當前狀態(tài)。這個枚舉類型的定義如下,各枚舉常量的意義見注釋。typedefenum{HAL_TIM_STATE_RESET=0x00U,/*定時器還未被初始化,或被禁用了*/HAL_TIM_STATE_READY=0x01U,/*定時器已經初始化,可以使用了*/HAL_TIM_STATE_BUSY=0x02U,/*一個內部處理過程正在執(zhí)行*/HAL_TIM_STATE_TIMEOUT=0x03U,/*定時到期(Timeout)狀態(tài)*/HAL_TIM_STATE_ERROR=0x04U/*發(fā)生錯誤,Reception過程正在運行*/}HAL_TIM_StateTypeDef;2.其他通用操作函數文件stm32f4xx_hal_tim.h還定義了定時器操作的一些通用函數。這些函數都是宏函數,直接操作寄存器,所以主要用于在定時器運行時直接讀取或修改某些寄存器的值,如修改定時周期、重新設置預分頻系數等,如表7-3所示。表7-3定時器操作部分通用函數4. 中斷處理定時器中斷處理相關函數如表7-4所示,這些函數對所有定時器都是適用的。表7-4定時器中斷處理相關函數每個定時器都只有一個中斷號,也就是只有一個ISR?;A定時器只有一個中斷事件源,即UEV事件,但是通用定時器和高級控制定時器有多個中斷事件源。在定時器的HAL驅動程序中,每一種中斷事件對應一個回調函數,HAL驅動程序會自動判斷中斷事件源,清除中斷事件掛起標志,然后調用相應的回調函數。每一種外設的HAL驅動程序頭文件中都定義了一些以“_HAL”開頭的宏函數,這些宏函數直接操作寄存器,幾乎每一種外設都有表7-5中的宏函數。7.4.2外設的中斷處理概念小結表7-5一般外設都定義的宏函數及其作用7.5采用STM32CubeMX和HAL庫的定時器應用實例通用定時器具有多種功能,但其原理大致相同,但其流程有所區(qū)別,以使用中斷方式為例,主要包括三部分,即NVIC設置、TIM中斷配置、定時器中斷服務程序。對每個步驟通過庫函數的實現方式描述。首先要提到是,定時器相關的庫函數主要中在HAL庫文件stm32f4xx_hal_tim.h和stm32f4xx_hal_tim.c文件中。7.5.1STM32F4的通用定時器配置流程定時器配置步驟如下:(1)TIM3時鐘使能。HAL中定時器使能是通過宏定義標識符實現對相關寄存器操作的,方法如下:__HAL_RCC_TIM3_CLK_ENABLE();//使能TIM3時鐘(2)初始化定時器參數,設置自動重裝值,分頻系數,計數方式等。在HAL庫中,定時器的初始化參數是通過定時器初始化函數HAL_TIM_Base_Init實現的:HAL_StatusTypeDefHAL_TIM_Base_Init(TIM_HandleTypeDef*htim);該函數只有一個入口參數,就是TIM_HandleTypeDef類型結構體指針,結構體類型為下面看看這個結構體的定義:typedefstruct{TIM_TypeDef *Instance;TIM_Base_InitTypeDef Init;HAL_TIM_ActiveChannel Channel;DMA_HandleTypeDef *hdma[7];HAL_LockTypeDef Lock;__IOHAL_TIM_StateTypeDef State;}TIM_HandleTypeDef;第1個參數Instance是寄存器基地址。第2個參數Init為真正的初始化結構體TIM_Base_InitTypeDef類型。第3個參數Channel用來設置活躍通道。每個定時器最多有四個通道可以用來做輸出比較,輸入捕獲等功能之用。這里的Channel就是用來設置活躍通道的,取值范圍為:HAL_TIM_ACTIVE_CHANNEL_1~HAL_TIM_ACTIVE_CHANNEL_4。第4個hdma是定時器的DMA功能時用到,為了簡單起見,暫時不講解。第5個參數Lock和State,是狀態(tài)過程標識符,是HAL庫用來記錄和標志定時器處理過程。(3)使能定時器更新中斷,使能定時器。(4)TIM3中斷優(yōu)先級設置。(5)編寫中斷服務函數。本實例利用基本定時器TIM6/7定時0.5s,0.5s時間到LED翻轉一次。基本定時器是單片機內部的資源,沒有外部IO,不需要接外部電路,只需要一個LED燈即可。7.5.2STM32F4的定時器應用的硬件設計在HAL庫函數頭文件stm32f4xx_hal_tim.h中對定時器外設建立了四個初始化結構體,基本定時器只用到其中一個即TIM_TimeBaseInitTypeDef,其實現如下:typedefstruct{uint32_tPrescaler;//預分頻器uint32_tCounterMode;//計數模式uint32_tPeriod;//定時器周期uint32_tClockDivision;//時鐘分頻uint32_tRepetitionCounter;//重復計算器uint32_tAutoReloadPreload;//自動預裝載}TIM_TimeBaseInitTypeDef;7.5.3STM32F4的定時器應用的軟件設計這些結構體成員說明如下,其中括號{}內的文字是對應參數在STM32HAL庫中定義的宏:(1)Prescaler為定時器預分頻器,設置TIMx_PSC,范圍0-65535,分頻因子1-65536。(2)CounterMode定義計數方式,基礎定時器僅支持向上計數,從0遞增,無需初始化。(3)Period為定時器周期,設置自動重載值0-65535,更新到影子寄存器。(4)ClockDivision定義時鐘分頻,基礎定時器無此功能,無需設置。(5)RepetitionCounter用于高級寄存器控制PWM次數,基礎定時器不需設置。(6)AutoReloadPreload確保Period修改在計數周期結束才更新,通常不設置。1. 通過STM32CubeMX新建工程通過STM32CubeMX新建工程的步驟如下:(1)新建文件夾

Demo目錄下新建文件夾TIMER,這是保存本章新建工程的文件夾。(2)新建STM32CubeMX工程在STM32CubeMX開發(fā)環(huán)境中新建工程。(3)選擇MCU或開發(fā)板CommercialPartNumber和MCUs/MPUsList選擇STM32F407ZGT6,選擇StartProject啟動工程。(4)保存STM32CubeMX工程使用STM32CubeMX菜單File→SaveProject,保存工程。(5)生成報告使用STM32CubeMX菜單File→GenerateReport生成當前工程的報告文件。(6)配置MCU時鐘樹(7)配置MCU外設GPIO引腳配置具體步驟如下。STM32CubeMXPinout&Configuration子頁面下選擇SystemCore→GPIO,對使用的GPIO口進行設置。LED輸出端口:LED1_RED(PF6)、LED2_GREEN(PF7)和LED3_BLUE(PF8)。配置完成后的GPIO端口頁面如圖7-14所示。圖7-14配置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論