SysTick定時器也叫SysTick滴答定時器, 它是Cortex-M3內(nèi)核的一個外設(shè),被嵌入在 NVIC 中。它是一個 24 位向下遞減的定時器,每計(jì)數(shù)一次所需時間為1/SYSTICK,SYSTICK 是系統(tǒng)定時器時鐘,它可以直接取自系統(tǒng)時鐘,還可以通過系統(tǒng)時鐘 8 分頻后獲取,本套程序中我們采用后者,即每計(jì)數(shù)一次所需時間為1/(72/8)us,換句話說在 1us 的時間內(nèi)會計(jì)數(shù) 9 次。當(dāng)定時器計(jì)數(shù)到 0 時,將從LOAD 寄存器中自動重裝定時器初值,重新向下遞減計(jì)數(shù),如此循環(huán)往復(fù)。如果開啟 SysTick 中斷的話,當(dāng)定時器計(jì)數(shù)到 0,將產(chǎn)生一個中斷信號。因此只要知道計(jì)數(shù)的次數(shù)就可以準(zhǔn)確得到它的延時時間。
SysTick 定時器通常應(yīng)用在操作系統(tǒng)中,為其提供時鐘周期。
SysTick定時器操作
在 STM32F1 庫函數(shù)中,并沒有提供相應(yīng)的 SysTick 定時器配置函數(shù),我們要操作 SysTick 定時器就需要了解它的寄存器功能。 其實(shí) SysTick 定時器寄存器很簡單,只有 4 個,分別是 CTRL、LOAD、VAL、CALIB。這些寄存器都可以在《CortexM3 權(quán)威指南(中文)》 apdx D NVIC 寄存器小結(jié)章節(jié)或者庫函數(shù) core_cm3.h 文件中找到,里面有詳細(xì)的介紹。
SysTick定時器寄存器
(1)CTRL 寄存器
CTRL 是 SysTick 定時器的控制及狀態(tài)寄存器。其相應(yīng)位功能如下:
注:CLKSOUTCE 位是用于選擇 SysTick 定時器時鐘來源,如果該位為 1,表示其時鐘是由系統(tǒng)時鐘直接提供即 72M。如果為 0,表示其時鐘是由系統(tǒng)時鐘八分頻后提供即 72/8=9M。
(2)LOAD 寄存器
LOAD 是 SysTick 定時器的重裝載數(shù)值寄存器。其相應(yīng)位功能如下:
因?yàn)?STM32F1 的 SysTick 定時器是一個 24 位遞減計(jì)數(shù)器,因此重裝載寄存器中只使用到了低 24 位,即 bit0-bit23。當(dāng)系統(tǒng)復(fù)位時,其值為 0。
(3)VAL 寄存器
VAL 是 SysTick 定時器的當(dāng)前數(shù)值寄存器。其相應(yīng)位功能如下:
同樣只有 bit0-bit23 有效,復(fù)位時值為 0。
(4)CALIB 寄存器
CALIB 是 SysTick 定時器的校準(zhǔn)數(shù)值寄存器。其相應(yīng)位功能如下:
此寄存器在定時實(shí)驗(yàn)中不需要使用,可以不用了解。
SysTick定時器操作步驟
SysTick 定時器的操作可以分為 4 步:
設(shè)置 SysTick 定時器的時鐘源。
設(shè)置 SysTick 定時器的重裝初始值(如果要使用中斷的話,就將中斷
使能打開)。
清零 SysTick 定時器當(dāng)前計(jì)數(shù)器的值。
打開 SysTick 定時器。
-
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120232 -
Systick
+關(guān)注
關(guān)注
0文章
62瀏覽量
13073
原文標(biāo)題:STM32入門系列-SysTick系統(tǒng)定時器
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論