STM32系列第5篇--Systick滴答定時(shí)器
Systick定時(shí)器,是一個(gè)簡單的定時(shí)器,對于CM3,CM4內(nèi)核芯片,都有Systick定時(shí)器。
Systick定時(shí)器常用來做延時(shí),或者實(shí)時(shí)系統(tǒng)的心跳時(shí)鐘。這樣可以節(jié)省MCU資源,不用浪費(fèi)一個(gè)定時(shí)器。比如UCOS中,分時(shí)復(fù)用,需要一個(gè)最小的時(shí)間戳,一般在STM32+UCOS系統(tǒng)中,都采用Systick做UCOS心跳時(shí)鐘。
Systick定時(shí)器就是系統(tǒng)滴答定時(shí)器,一個(gè)24 位的倒計(jì)數(shù)定時(shí)器,計(jì)到0 時(shí),將從RELOAD 寄存器中自動(dòng)重裝載定時(shí)初值。只要不把它在SysTick 控制及狀態(tài)寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。
SysTick定時(shí)器被捆綁在NVIC中,用于產(chǎn)生SYSTICK異常(異常號(hào):15)。
Systick中斷的優(yōu)先級(jí)也可以設(shè)置。
用中斷的方式實(shí)現(xiàn)Delay延時(shí):
static__IOuint32_tTimingDelay;voidDelay(__IOuint32_tnTime){TimingDelay=nTime;while(TimingDelay!=0);}voidSysTick_Handler(void){if(TimingDelay!=0x00){TimingDelay--;}}intmain(void){…if(SysTick_Config(SystemCoreClock/1000))//systick時(shí)鐘為HCLK,中斷時(shí)間間隔1ms{while(1);}while(1){Delay(200);//2ms…}}