(一)SYS文件夹介绍:
(二)SysTick工作原理
定义:该定时器是24位的,永不停息的, 递减计数器。即系统滴答定时器。包含在M3/4/7内核里面。
每次VAL到0时,VAL自动从LOAD重载,开始新一轮递减计数。
Systick的两大作用(系统的心跳):
(三)Systick的两大作用(系统的心跳)
1、可以产生精确延时(原先的Delay只是盲等)。
2、可以提供给操作系统一个单独的心跳(时钟)节拍。一次心跳中断一次。
(四)运行机制
SysTick设定初值并使能后,每经过一个系统时钟周期,计数值就减1,计数到0时,SysTick计数器自动重装初值并继续计数,同时内部的COUNTFLAG标志会置位,若中断使能就会触发中断。
系统时钟周期:外部晶振为8MHz,9倍频,系统时钟为72MHz,SysTick频率可以为72MHZ或者9MHZ(只有1分频或者8分频),为了更精准一般使用时会选择8分频。
在9MHZ情况下:
- 把SysTick计数值设置为9000,就能产生1ms的时间基值,即SysTick产生1ms的计数。
- 把SysTick计数值设置为9,就能够产生1us的时间基值,即SysTick产生1ms的计数.
(五)Systick的寄存器们
控制寄存器:STK_CSR, 0xE000E010:
第16位是计数标志位,SysTick自减到0时,该位置1。读取该位后,该位自动清零。COUNTFLAG为计数完毕标志,读取后会自动清零。
第2位是时钟源选择位,可以选择内部时钟或外部时钟作为时钟源。
第1位是中断使能位,用于决定自减为0后是否执行中断。TICKINT产生SysTick异常请求意思是产生中断。
第0位是定时器使能位。
重载寄存器:STK_LOAD, 0xE000E014
这个寄存器是用来装载我们需计数的次数的寄存器。(它给VAL寄存器装作数值)
当前值寄存器:STK_VAL, 0xE000E018:
每一个时钟周期,VAL的值自减1。
当VAL值为0时,会重新加载LOAD中的值,并且产生COUNTFLAG标志。(COUNTFLA标志在CTRL寄存器)
校准值寄存器:STK_CALRB, 0xE000E01C:
不是很重要
(六)Systick初始化:
思路:先使能,关闭中断,再装载值,最后再开启。
SysTick_Config()函数,功能:初始化systick、打开systick、打开systick的中断并设置优先级)
SysTick_CLKSourceConfig()函数,功能:用来选择时钟源
(七) deley文件夹介绍:
我们学习的是不使用OS的情况
(八)Systick写延迟函数:
思路:设置重装载值、当前值清零、使能SysTick、等待计数器计数完毕、当前值清零、关闭计数器、设置重装载值、当前值清零、使能SysTick、等待计数器计数完毕、当前值清零、关闭计数器
不使用OS系统时三个函数介绍: