SysTick系統定時器

2022-09-16 11:33:09 字數 1768 閱讀 6821

1.systick定時器介紹

systick定時器也叫systick滴答定時器,它是cortex-m3核心的乙個 外設,被嵌入在 nvic 中。它是乙個24 位向下遞減的定時器,每計數一 次所需時間為1/systick,systick是系統定時器時鐘,它可以直接取自 系統時鐘,還可以通過系統時鐘8分頻後獲取。當定時器計數到0時,將 從load 暫存器中自動重灌定時器初值,重新向下遞減計數,如此迴圈往 復。如果開啟systick中斷的話,當定時器計數到0,將產生乙個中斷信 號。因此只要知道計數的次數就可以準確得到它的延時時間。

2.systick定時器暫存器

(1)ctrl暫存器 ctrl是systick定時器的控制及狀態暫存器。其相應位功能如下:

(2)load暫存器 load是systick定時器的重裝載數值暫存器。其相應位功能如下

(3)val暫存器 val是systick定時器的當前數值暫存器。其相應位功能如下:

(4)calib暫存器 calib是systick定時器的校準數值暫存器。其相應位功能如下:

3.systick定時器配置步驟

systick定時器的操作可以分為 4 步:

(1)設定systick定時器的時鐘源。

(2)設定systick定時器的重灌初始值(如果要使用中斷的話,就將中 斷使能開啟)。

(3)清零systick定時器當前計數器的值。

(4)開啟systick定時器。

systick_init()函式:

void

systick_init(u8 sysclk)

delay_us()函式:

void

delay_us(u32 nus)

while((temp&0x01)&&!(temp&(1

<<16))); //

等待時間到達

systick->ctrl&=~systick_ctrl_enable_msk; //

關閉計數器

systick->val =0x00; //

清空計數器

}delay_ms()函式:

void

delay_ms(u16 nms)

while((temp&0x01)&&!(temp&(1

<<16))); //

等待時間到達

systick->ctrl&=~systick_ctrl_enable_msk; //

關閉計數器

systick->val =0x00; //

清空計數器

}

SysTick 系統定時器

本章參考資料 arm cortex m4f 技術參考手冊 4.5 章節 systick timer stk 和 4.48 章節 shprx,其中 stk 這個章節有 systick 的簡介和暫存器的詳細描述。因為 systick 是屬於 cm4 核心的外設,有關暫存器的定義和部分庫函式都在 core...

SysTick 系統定時器

本章參考資料 arm cortex m4f 技術參考手冊 4.5 章節 systick timer stk 和 4.48 章節 shprx,其中 stk 這個章節有 systick 的簡介和暫存器的詳細描述。因為 systick 是屬於 cm4 核心的外設,有關暫存器的定義和部分庫函式都在 core...

系統定時器SysTick

在lpc824內部有乙個特殊的定時器 系統定時器 systick 它位於cortex m0 核心裡面,是arm核心的一部分,主要用來給作業系統提供時間片輪轉的定時,一般固定為10ms的定時,所以中文也稱它為 嘀嗒 定時器 也稱 心跳 定時器 在不跑作業系統時,可以把它當作普通定時器來用,一般用來進行...