单片机CPU内部的定时器——滴答定时器
以STM32U575RIT6为例
1.Systick定时器概念
SysTick又称滴答定时器。是一个定时设备,位于Cortex-M33内核中,和NVIC配合使用(可以产生异常信号),产生SysTick异常可以对输入的时钟进行计数,系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。(1ms)
2.工作原理
滴答定时器是一个24位递减定时器,也就是最多能计数2^24(0xFFFFFF) 16,777,216。
SysTick设定初值并使能后,每来一个时钟信号,计数值就减1。
计数减到0时,触发异常(在CPU内部触发的是异常),SysTick计数器自动重装,初值并继续减一,循环不断。
(1)过程:重装载寄存器内部存的是经过计算出来的要计算的次数(后续介绍如何计算),定时器就从0开始向上计数,每来一个脉冲信号,定时器次数+1,等到定时器次数等于重装载寄存器的值之后,再来一个脉冲信号,就会产生异常。
(2)如何计算重装载寄存器的值:
频率:一秒钟震荡的次数;符号:f
周期:震荡一次所需的时间;符号:T
周期与频率是倒数的关系,可以记住以下频率与周期的对应关系:1HZ--1S;1KHZ----1ms;1MHZ---1us;
频率是4MHZ要计时1ms,重装载寄存器的值是多少?
分析:已知频率和定时的时间,需要计算的是重装载寄存器的值?
解:4MHZ对应的周期是(1/4MHZ)[震荡一次所需要的时间是1/4us]
那震荡多少次可以计时1ms,可以得出是4000次;因此重装载寄存器是4000-1;
3.为什么中断一般情况下不可以使用延时操作: