對于MCU來說,定時器是必備的一個模塊,原因在于定時器是使用頻率最高。
1寫在前面
我之前寫過許多關(guān)于定時器的文章,不過后臺還是有很多朋友問與定時期相關(guān)的問題,所以,這里也給大家推薦下面的這個關(guān)于定時器的資料。
相信有部分朋友都收到STM32公眾號的消息了,就是提供了一個我認(rèn)為比較好的資料: STM32 定時器基本原理及常見問題之培訓(xùn)資料 。
這個資料我是第一時間就下載來看了,覺得 整理的很好 。特別是對于很多初學(xué)以及學(xué)習(xí)了一段時間STM32的朋友來說,對全方面掌握定時器有很大幫助作用。
考慮到很多朋友都只是知道有這么一個資料,沒有下載來學(xué)習(xí)、掌握。所以,今天在這里挑一些要點(diǎn), 帶領(lǐng)大家學(xué)習(xí) 。
下載地址在ST中文網(wǎng),(最近)進(jìn)入主頁,都能在首頁看到這個消息。
這個資料總共有186頁。內(nèi)容比較多,但講述的比較全面。
( 提示 :公眾號不支持外部鏈接,請復(fù)制鏈接到瀏覽器打開)
2
資料的主要內(nèi)容
? STM32定時器概述
? 定時器時基單元
? 定時器輸入捕捉功能
? 定時器比較輸出功能
? 定時器觸發(fā)同步與級聯(lián)
? 定時器DMA批量傳送
? 定時器產(chǎn)生的觸發(fā)輸出與其它外設(shè)的關(guān)聯(lián)
? STM32F334/STM32F7/STM32L4等新增的定時器功能
? 案例分享【穿插在上述內(nèi)容中】
3
STM32定時器分類
整體講, STM32家族的定時器眾多,按照核內(nèi)、核外標(biāo)準(zhǔn)大致分為兩部分:
核內(nèi)定時器 + 外設(shè)定時器
? 核內(nèi)定時器 : Systick
? 外設(shè)定時器: 特定應(yīng)用定時器+常規(guī)定時器
? 特定應(yīng)用定時器: LPTIM;RTC;WTD;HRTIM
? 常規(guī)定時器: 基本定時器、通用定時器、高級定時器 【本篇介紹重點(diǎn)】
按計(jì)數(shù)器位寬來分 :
? 16位定時器
? 32位定時器 【TIM2 TIM5】
? 24位定時器 【Systick】
常規(guī)定時器
1.基本定時器 :幾乎沒有任何對外輸入/輸出,常用作時基,實(shí)現(xiàn)基本的計(jì)數(shù)、定時功能。
2.通用定時器 :除了基本定時器的時基功能外,還可對外做輸入捕捉、輸出比較以及連接其它傳感器接口【編碼器和霍爾傳感器】 。
3.高級定時器 : 此類定時器的功能最為強(qiáng)大,除了具備通用定時器的功能外,還包含一些與電機(jī)控制和數(shù)字電源應(yīng)用相關(guān)的功能,比方帶死區(qū)控制的互補(bǔ)信號輸出、緊急剎車關(guān)斷輸入控制。
4
STM32定時器模塊
STM32【通用或高級】 定時器大致分為 六個功能單元 :
? 從模式控制單元 :負(fù)責(zé)時鐘源、觸發(fā)信號源的選擇;控制計(jì)數(shù)器的啟停、復(fù)位、門控等;
? 時基單元 :定時器核心單元。負(fù)責(zé)時鐘源的分頻、計(jì)數(shù)、溢出重裝等。
? 輸入單元 :為部分的時鐘信號、 捕捉信號、 觸發(fā)信號提供信號源。
? 比較輸出單元 :通過對比較寄存器與計(jì)數(shù)器的數(shù)值匹配比較,實(shí)現(xiàn)不同輸出波形。
? 觸發(fā)輸出單元 :輸出觸發(fā)信號給到其它定時器或外設(shè)。
? 捕捉比較單元 : 是輸入捕捉或比較輸出的公共執(zhí)行單元。
從信號鏈角度大體了解STM32定時器:
STM32定時器中存在著幾種基本的信號: ** 輸入信號、 時鐘信號、 觸發(fā)輸入信號、 觸發(fā)輸出信號** ,它們之間相互關(guān)聯(lián)形成相應(yīng)的信號鏈,從而衍生出各種定時器的功能。
5
STM32定時器功能匯總
1、 六類功能單元
【時基、從模式控制、輸入、輸出、捕捉比較、觸發(fā)輸出】
2、 四類信號
【時鐘信號、外部輸入信號、觸發(fā)輸入信號、觸發(fā)輸出信號】
3、 四類事件
【更新事件、捕捉、 比較事件、觸發(fā)事件】
4、一大特性
【影子寄存器的預(yù)裝載特性】
這上面的一些內(nèi)容掌握了,對定時器基本就沒多大問題了,資料中也有詳細(xì)說明。
6
案例:定時器一使能就進(jìn)中斷的問題
問題描述 : TIMER初始化階段, 經(jīng)常有人反饋一使能更新中斷就就進(jìn)中斷服務(wù)程序?給開發(fā)帶來些困擾,原因可能是什么?如何解決?
因?yàn)樵诙〞r器的初始化代碼里有軟件更新操作觸發(fā)了更新事件,并置位了更新中斷標(biāo)志,當(dāng)使能更新中斷時就立刻進(jìn)入更新中斷服務(wù)程序。
在STM32標(biāo)準(zhǔn)庫里的TIM_TimeBaseInit( )函數(shù)里都有這句代碼:
TIMx->EGR = TIM_PSCReloadMode_Immediate;
? 在Cube庫里的HAL_TIM_Base_Init( )函數(shù)里的 函數(shù)有這句代碼:
TIMx->EGR = TIM_EGR_UG;
顯然,這兩行代碼使用到了前面提到的軟件更新操作,觸發(fā)了更新事件,置位更新中斷標(biāo)志。所以我們在使能定時器更新中斷 之前 ,可以先做更新中斷標(biāo)志的清除操作。
說明:資料中提供了很多案例說明,以及分析,我覺得比較好,方便大家理解。請多理解一下這些案例。
7
時鐘源問題思考
1、幾種時鐘源?來自何處?
2、來自TI1fp1與TIF_ED信號差別是什么?
3、來自TI1/TI2的時鐘是否可以直接像內(nèi)部時鐘一樣被計(jì)數(shù)器用來計(jì)數(shù)?
4、根據(jù)時鐘源的介紹,你了解到了幾種觸發(fā)輸入信號?
5、TI3FP4可以作為通道2的輸入捕捉信號嗎?
6、TI4FP4可以作為觸發(fā)信號嗎?
好了,篇幅有限,就寫到這里。這個資料的內(nèi)容我基本都看了一遍,可以結(jié)合《參考手冊》一起學(xué)習(xí),有部分內(nèi)容來自《參考手冊》。
希望還不知道,卻又想學(xué)習(xí)并深入理解定時器的朋友盡快下載來看看。
-
單片機(jī)
+關(guān)注
關(guān)注
6039文章
44583瀏覽量
636481 -
mcu
+關(guān)注
關(guān)注
146文章
17184瀏覽量
351696 -
定時器
+關(guān)注
關(guān)注
23文章
3251瀏覽量
115018
發(fā)布評論請先 登錄
相關(guān)推薦
評論