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 定時器被...