九 SysTick系統定時器

2021-10-10 22:11:27 字數 2215 閱讀 7352

(一)systick定時器介紹

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

(二)systick定時器暫存器

1、ctrl暫存器

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

2、loda暫存器

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

3、val暫存器

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

4、calib暫存器(用得少)

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

(三)systick定時器配置步驟

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

1、設定systick定時器的時鐘源,系統時鐘(72m)還是外部時鐘(9m=系統時鐘8分頻),配置ctrl暫存器的clksource數值

2、設定systick定時器的重灌初始值(如果要使用中斷的話,就將中斷使能開啟),loda暫存器和ctrl暫存器的tickint數值

3、清零systick定時器當前計數器的值,val暫存器

4、開啟systick定時器,ctrl暫存器的enable數值

為了實現定時器的功能,自己需要編寫幾個函式

首先定義兩個全域性變數

static u8 fac_us=0;//一微秒需要的計時次數

static u16 fac_ms=0;//一毫秒需要的計時次數

(一)定時器系統初始化函式systick_init()

//sysclk為系統時鐘,預設為72

void systick_init(u8 sysclk)

若出現error: l6218e: undefined symbol systick_clksourceconfig (referred from systick.o).錯誤,檢視2.error:error: l6218e: undefined symbol systick_clksourceconfig_並不傻的袍子-csdn部落格

(二)延時1us函式delay_us()

//微秒定時器函式

//由於load暫存器限制,一次最多延時1864000u s

void delay_us(u32 nus)

while((temp&0x01)&&!(temp&(1<<16)));//判斷ctrl暫存器的enable和countflag的值

//等待時間到達

systick->ctrl&=~systick_ctrl_enable_msk;//關閉計數器,置0

systick->val=0x00;//清空計數器

}

(三)延時1ms函式delay_ms()

//毫秒定時器函式

//由於load暫存器限制,一次最多延時1864ms

void delay_ms(u32 nms)

while((temp&0x01)&&!(temp&(1<<16)));//判斷ctrl暫存器的enable和countflag的值

//等待時間到達

systick->ctrl&=~systick_ctrl_enable_msk;//關閉計數器,置0

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的定時,所以中文也稱它為 嘀嗒 定時器 也稱 心跳 定時器 在不跑作業系統時,可以把它當作普通定時器來用,一般用來進行...