STM32系列第5篇--Systick滴答定时器
扫描二维码
随时随地手机看文章
Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器。
Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。
Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。
SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。
Systick中断的优先级也可以设置。
用中断的方式实现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…}}