1.SysTick定时器介绍
sysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个外设,被嵌入在 NVIC中。(NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能)
它是一个24位(注意只有24位,不要装载超过24位的值以免溢出)向下递减的定时器,每计数一次所需时间为1/SYSTICK,SYSTICK是系统定时器时钟,它可以直接取自系统时钟,还可以通过系统时钟8分频后获取。
当定时器计数到0时,将从LOAD寄存器中自动重装定时器初值,重新向下递减计数,如此循环往复。
如果开启SysTick中断的话,当定时器计数到0,将产生一个中断信号。因此只要知道计数的次数就可以准确得到它的延时时间。
例如:
假定SysTick直接取用72M系统时钟,那么每计数一次的时间是1/72MHZ=0.0138888 us。
假定SysTick直接取用72M系统时钟的8分频,那么每计数一次的时间是1/9MHZ=0.1111111111 us。
如果我想计时1us,则1/0.1111111=9次,也就是计数9次后产生中断,那就是1us.
1HZ对应1秒、也就是一秒波形变化一次(一个周期)
1KHZ对应1ms,也就是一秒变化1千次,1ms变化1次。
1MHZ对应1 us,也就是一秒变化1兆次,1us变化1次。
如果是9MHz, 那当然就是计数9次,为1us.
2.SysTick定时器的寄存器
控制这个定时器的寄存器,主要有4个:
第1个:
COUNTFLAG:是软件来了解Systick计数的状态的。如果计数结束,不需要产生中断,但我仍想知道计数是否结束了,那么读取该位就可以知道。
CLKSOURCE:选0是使用系统时钟8分频后的时钟来计数。选1则为直接使用系统时钟计数。
TICKINT:决定计数到0后,是否需要产生中断
ENABLE :决定定时器什么时候开始计数。
第2个:
第3个:
第4个:(这个极少使用)
3.SysTick定时器配置步骤
SysTick定时器的操作,就是配置上面说的3个控制寄存器,可以分为 4 步:
(1)设置SysTick定时器的时钟源。
就是直接选用系统时钟,还是使用系统时钟的8分频。
(2)设置SysTick定时器的重装初始值(如果要使用中断的话,就将中
断使能打开)。
(3)清零SysTick定时器当前计数器的值。
(4)打开SysTick定时器。