本文將介紹SysTick定時器、其工作原理與寄存器、及對應的應用實例
SysTick定時器簡介
首先、我們先解釋下定時器,“定時器”:能夠定時、計數(shù)的器件
SysTick稱為系統(tǒng)滴答定時器,它位于Cortex 內核中是一個定時器,可以對輸入的時鐘進行計數(shù)、若輸入的時鐘具有周期性的變化,則計數(shù)也相當于計時。
系統(tǒng)滴答定時器一般用于操作系統(tǒng),為操作系統(tǒng)提供時基、維持操作系統(tǒng)的心跳; 系統(tǒng)滴答定時器每過一段時間會產生一個中斷,根據(jù)這個特性、操作系統(tǒng)就可以實現(xiàn)時間片的任務調度。
工作原理分析
從上述兩張圖我們可以看出:
系統(tǒng)滴答定時器的時鐘源是從SYSCLK處經(jīng)過分頻得到的,另外它處于內核中;
重載數(shù)值寄存器有24個位、最大值為2^24-1,重載數(shù)值寄存器會將其中的數(shù)值裝載到定時器中;
當每來一個時鐘脈沖后,定時器會進行減一的操作(計數(shù)值-1);
當計數(shù)值降為0時,會觸發(fā)一個異常; 我們可以在異常處理函數(shù)中、自定義功能;
計數(shù)值降為0后,會再次重裝載數(shù)值;
寄存器講解
以下是寄存器總覽:
以下是SysTick定時器簡單框圖:
以下是SysTick狀態(tài)和控制寄存器的說明:
以下是SysTick重裝載值寄存器的說明:
以下是SysTick當前值寄存器的說明:
以下是SysTick校準值寄存器的說明:
該寄存器可以為軟件提供校準信息,由于CMSIS-Core提供了一個名為SystemCoreClock的軟件變量,所以沒有使用SysTick校準寄存器。 系統(tǒng)初始化函數(shù)SystemInit()設置了該變量,而且只要系統(tǒng)時鐘配置改變是都會對該變量進行更新。 這種軟件手段比利用SysTick校準值寄存器的硬件方式更加靈活。
應用實例
在SysTick的中斷函數(shù)內1ms打印一次日志
void HAL_SYSTICK_Callback(void)
{
static uint32_t i = 0;
i++;
if(i == 1000)
{
printf("1ms\\n");
i = 0;
}
}
-
寄存器
+關注
關注
31文章
5363瀏覽量
121209 -
內核
+關注
關注
3文章
1382瀏覽量
40433 -
時鐘
+關注
關注
11文章
1747瀏覽量
131819 -
定時器
+關注
關注
23文章
3256瀏覽量
115399 -
Systick
+關注
關注
0文章
62瀏覽量
13151
發(fā)布評論請先 登錄
相關推薦
STM32 SYSTICK定時器常見問題
SysTick定時器的工作原理介紹
SysTick定時器介紹,SysTick定時器寄存器
![<b class='flag-5'>SysTick</b><b class='flag-5'>定時器</b>介紹,<b class='flag-5'>SysTick</b><b class='flag-5'>定時器</b>寄存<b class='flag-5'>器</b>](https://file.elecfans.com/web1/M00/85/24/pIYBAFxhJmuAIz8GAAANc8CAmzE251.jpg)
什么是SysTick定時器?實現(xiàn)STM32時鐘系統(tǒng)的詳細資料說明
![什么是<b class='flag-5'>SysTick</b><b class='flag-5'>定時器</b>?實現(xiàn)<b class='flag-5'>STM32</b>時鐘系統(tǒng)的詳細資料說明](https://file.elecfans.com/web1/M00/B2/97/pIYBAF4NmzWATfYJAAFz-CHv3Js941.png)
【野火指南者】STM32F103延時函數(shù)及其系統(tǒng)定時器—SysTick
![【野火指南者】<b class='flag-5'>STM32</b>F103延時函數(shù)及其系統(tǒng)<b class='flag-5'>定時器</b>—<b class='flag-5'>SysTick</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32 Systick系統(tǒng)定時器
![<b class='flag-5'>STM32</b> <b class='flag-5'>Systick</b>系統(tǒng)<b class='flag-5'>定時器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32入門(十五)----SysTick系統(tǒng)定時器
![<b class='flag-5'>STM32</b>入門(十五)----<b class='flag-5'>SysTick</b>系統(tǒng)<b class='flag-5'>定時器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32F4: Systick滴答定時器-延時函數(shù)講解(五)
![<b class='flag-5'>STM32</b>F4: <b class='flag-5'>Systick</b>滴答<b class='flag-5'>定時器</b>-延時函數(shù)<b class='flag-5'>講解</b>(五)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32學習筆記(5)——系統(tǒng)定時器SysTick
![<b class='flag-5'>STM32</b>學習筆記(5)——系統(tǒng)<b class='flag-5'>定時器</b><b class='flag-5'>SysTick</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32筆記(七)---Systick系統(tǒng)定時器
![<b class='flag-5'>STM32</b>筆記(七)---<b class='flag-5'>Systick</b>系統(tǒng)<b class='flag-5'>定時器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【STM32】SysTick滴答定時器(delay延時函數(shù)講解)
![【<b class='flag-5'>STM32</b>】<b class='flag-5'>SysTick</b>滴答<b class='flag-5'>定時器</b>(delay延時函數(shù)<b class='flag-5'>講解</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論