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