您的位置:首页 > 其它

STM32F1学习-SysTick定时器

2016-07-20 10:34 113 查看
SysTick定时器常用来做延时,或者用实时系统的心跳时钟。这样可以节省MCU资源,不浪费定时器。Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。

4个SysTick寄存器
CTRL              SysTick 控制和状态寄存器 LOAD            

SysTick           自动重装载除值寄存器 

VAL                 SysTick 当前值寄存器 CALIB           

SysTick           校准值寄存器

SysTick控制及状态寄存器



SysTick重装载数值寄存器



SysTick当前数值寄存器



SysTick校准数值寄存器



固件库中的Systick相关函数:

SysTick_CLKSourceConfig()     //Systick时钟源选择  

SysTick_Config(uint32_t ticks)  //初始化systick,时钟为HCLK,并开启中断

                                                  

Systick中断服务函数:

void SysTick_Handler(void);

用Systick写延时函数的步骤:

第一步:初始化函数中,配置Systick的工作频率。通过寄存器CTRL

第二步:在延时函数中,计算出在配置的工作频率下1us或者1ms的震荡n次。(函数中需要多少us或者多少ms,直接乘以n次)。

第三步:把VAL的值清零。清零之后,VAL的值重新加载。

第四部:使能Systick,通过寄存器CTRL。

第五步:通过判断Systick->COUNTFLAG  寄存器判断定时是否到了。

第六步:定时时间到了,那就关闭定时器,同时清空Systick->VAL。

通过一个简单的函数来理解。

@kexuexyz

 

摘自:




可以很好的理解。

再举一个完整的函数



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: