1.SysTick 简介
SysTick—系统定时器是属于CM3 内核中的一个外设,内嵌在NVIC 中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于72M。当重装载数值寄存器的值递减到0 的时候,系统定时器就产生一次中断,以此循环往复。
因为SysTick 是属于CM3 内核的外设,所以所有基于CM3 内核的单片机都具有这个系统定时器,使得软件在CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
1.1.SysTick 寄存器介绍
重点是前面三个寄存器。
注意:
1.数据不可以超过24位。
2.COUNTFLAG这个位如果计数到0就会置1,被读取之后就会置0,可以可以防止多读,利用这个点我们可以很好去实现延时函数。
2.延时代码
首先滴答计时器,计数到0,就会产生中断,产生中断了,这个时候我们就要对延时的时间进行减1.这个减1有两种实现。
第一种在使用全局变量。然后一直循环,判断变量有没有变动0,让中断函数进行减1,直到为0退出.
第二种使用读取循环读取.COUNTFLAG寄存器的值。如果值为1,就进入循环体进行减1,减到0,break,函数返回。
两种方法都有人使用,不过个人简单第二种好理解。这两种方法野火都有实现,可以去看看他们的代码。
代码:后期会整理比较好的代码再上传。