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