本文將介紹SysTick定時器、其工作原理與寄存器、及對應(yīng)的應(yīng)用實例
SysTick定時器簡介
首先、我們先解釋下定時器,“定時器”:能夠定時、計數(shù)的器件
SysTick稱為系統(tǒng)滴答定時器,它位于Cortex 內(nèi)核中是一個定時器,可以對輸入的時鐘進(jìn)行計數(shù)、若輸入的時鐘具有周期性的變化,則計數(shù)也相當(dāng)于計時。
系統(tǒng)滴答定時器一般用于操作系統(tǒng),為操作系統(tǒng)提供時基、維持操作系統(tǒng)的心跳; 系統(tǒng)滴答定時器每過一段時間會產(chǎn)生一個中斷,根據(jù)這個特性、操作系統(tǒng)就可以實現(xiàn)時間片的任務(wù)調(diào)度。
工作原理分析
從上述兩張圖我們可以看出:
系統(tǒng)滴答定時器的時鐘源是從SYSCLK處經(jīng)過分頻得到的,另外它處于內(nèi)核中;
重載數(shù)值寄存器有24個位、最大值為2^24-1,重載數(shù)值寄存器會將其中的數(shù)值裝載到定時器中;
當(dāng)每來一個時鐘脈沖后,定時器會進(jìn)行減一的操作(計數(shù)值-1);
當(dāng)計數(shù)值降為0時,會觸發(fā)一個異常; 我們可以在異常處理函數(shù)中、自定義功能;
計數(shù)值降為0后,會再次重裝載數(shù)值;
寄存器講解
以下是寄存器總覽:
以下是SysTick定時器簡單框圖:
以下是SysTick狀態(tài)和控制寄存器的說明:
以下是SysTick重裝載值寄存器的說明:
以下是SysTick當(dāng)前值寄存器的說明:
以下是SysTick校準(zhǔn)值寄存器的說明:
該寄存器可以為軟件提供校準(zhǔn)信息,由于CMSIS-Core提供了一個名為SystemCoreClock的軟件變量,所以沒有使用SysTick校準(zhǔn)寄存器。 系統(tǒng)初始化函數(shù)SystemInit()設(shè)置了該變量,而且只要系統(tǒng)時鐘配置改變是都會對該變量進(jìn)行更新。 這種軟件手段比利用SysTick校準(zhǔn)值寄存器的硬件方式更加靈活。
應(yīng)用實例
在SysTick的中斷函數(shù)內(nèi)1ms打印一次日志
void HAL_SYSTICK_Callback(void)
{
static uint32_t i = 0;
i++;
if(i == 1000)
{
printf("1ms\\n");
i = 0;
}
}
-
寄存器
+關(guān)注
關(guān)注
31文章
5430瀏覽量
123966 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1415瀏覽量
41255 -
時鐘
+關(guān)注
關(guān)注
11文章
1891瀏覽量
133024 -
定時器
+關(guān)注
關(guān)注
23文章
3297瀏覽量
117615 -
Systick
+關(guān)注
關(guān)注
0文章
63瀏覽量
13540
發(fā)布評論請先 登錄
STM32 SYSTICK定時器常見問題
Systick定時器基礎(chǔ)知識講解
SysTick定時器的工作原理介紹
SysTick—系統(tǒng)定時器
什么是SysTick定時器?實現(xiàn)STM32時鐘系統(tǒng)的詳細(xì)資料說明

【野火指南者】STM32F103延時函數(shù)及其系統(tǒng)定時器—SysTick

STM32 Systick系統(tǒng)定時器

STM32入門(十五)----SysTick系統(tǒng)定時器

STM32F4: Systick滴答定時器-延時函數(shù)講解(五)

SysTick 定時器

STM32定時器US延時

STM32學(xué)習(xí)筆記(5)——系統(tǒng)定時器SysTick

STM32筆記(七)---Systick系統(tǒng)定時器

【STM32】SysTick滴答定時器(delay延時函數(shù)講解)

評論