STM32F1学习-SysTick定时器

SysTick定时器常用来做延时,或者用实时系统的心跳时钟。这样可以节省MCU资源,不浪费定时器。Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器计到时,将从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

 

摘自:


可以很好的理解。

再举一个完整的函数














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值