其他分享
首页 > 其他分享> > SysTick(系统定时器)

SysTick(系统定时器)

作者:互联网

SysTick

Cortex-M3 在内核部分 包含了一个简单的定时器——SysTick timer。且所有的 CM3 芯片都带有这个定时器。

在 STM32 中 SysTick 以 HCLK(AHB 时钟)或 HCLK/8 作为运行时钟。
在这里插入图片描述

SysTick timer工作分析

SysTick 是一个 24 位的定时器,即一次最多可以计数 224 个时钟脉冲,这个脉冲计数值被保存到 当前计数值寄存器 STK_VAL (SysTick current value register) 中,只能向下计数。

每接收到一个时钟脉冲 STK_VAL 的值就向下减 1,直至 0,当 STK_VAL 的值被减至 0 时,由硬件自动把重载寄存器 STK_LOAD(SysTick reload value register)中保存的数据加载到 STK_VAL,重新向下计数。

当 STK_VAL 的值被计数至 0 时,触发异常,就可以在中断服务函数中处理定时事件了。当然,要使 SysTick 进行以上工作必须要进行 SysTick 配置。配置在寄存器STK_CTRL中完成。

定时时间的计算

经过ticks个脉冲(经过ticks个时钟周期)后将触发中断,触发中断后又重新开始计数。

定时的时间计算公式:T=ticks*(1/f),ticks为SysTick_Config()的输入参数,1/f为SysTick timer使用的时钟源的时钟周期,f为该时钟源的时钟频率 。

标签:定时器,VAL,ticks,系统,STK,SysTick,时钟
来源: https://blog.csdn.net/qq_43577613/article/details/117605095