stm32學習 SysTick定時器

2021-10-10 18:57:13 字數 1696 閱讀 7778

systick定時器是乙個簡單的定時器,cm3和cm4核心晶元都有systick定時器。

systick定時器是乙個24位的倒計數定時器,計到0時,將從reload暫存器中自動重裝載定時初值。只要不把它在systick控制及狀態暫存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。

systick定時器常用來做延時,或者實時系統的心跳時鐘。這樣可以節省mcu資源,不用浪費乙個定時器。

四個暫存器

systick控制和狀態暫存器——ctrl

systick自動重裝載除值暫存器——load

systick當前值暫存器——val

systick校準值暫存器(使用較少)

韌體庫中的systick相關函式

systick_clksourceconfig(); //systick時鐘源選擇

systick_config(uint32_t ticks); //初始化systick中斷

systick中斷服務函式

void systick_handler(void);

不支援os

static u8  fac_us=0;

//us延時倍乘數

static u16 fac_ms=0;

//ms延時倍乘數,在ucos下,代表每個節拍的ms數

void

delay_init()

//nus為要延時的us數.

void

delay_us

(u32 nus)

while

((temp&

0x01)&&

!(temp&(1

<<16)

));//等待時間到達

systick->ctrl&

=~systick_ctrl_enable_msk;

//關閉計數器

systick->val =

0x00

;//清空計數器

}//延時nms

//注意nms的範圍

//systick->load為24位暫存器,所以,最大延時為:

//nms<=0xffffff*8*1000/sysclk

//sysclk單位為hz,nms單位為ms

//對72m條件下,nms<=1864

void

delay_ms

(u16 nms)

while

((temp&

0x01)&&

!(temp&(1

<<16)

));//等待時間到達

systick->ctrl&

=~systick_ctrl_enable_msk;

//關閉計數器

systick->val =

0x00

;//清空計數器

}

雖然stm32中有通用定時器,但是在使用延時函式時,可以使用systick定時器節省資源。

Stm32學習(三)Systick的學習

1.systick定時器 systick定時器,是乙個簡單的定時器,對於cm3,cm4核心晶元,都有systick定時器。systick定時器常用來做延時,或者實時系統的心跳時鐘。這樣可以節省mcu資源,不用浪費乙個定時器。比如ucos中,分時復用,需要乙個最小的時間戳,一般在stm32 ucos系...

STM32學習筆記3 Systick

對於stm32中,有乙個經常用到,卻在資料手冊上很少資料的工具,那就是systick,這個工具是所有cortex m0核心的微控制器所共有的,他是乙個系統定時器,其存在的主要目的是為嵌入式作業系統提供100hz 即10ms 的定時節拍。當然,也可以做為其它的普通定時等其他用途。下面,我們就開始理解這...

STM32學習筆記 SysTick定時器

q 什麼是systick定時器?systick 是乙個24 位的倒計數定時器,當計到0 時,將從reload 暫存器中自動重裝載定時初值。只要不把它在systick 控制及狀態暫存器中的使能位清除,就永不停息。q 為什麼要設定systick定時器?1 產生作業系統的時鐘節拍 systick 定時器被...