一、Systick简介
Systick也叫系统滴答定时器,滴答定时器就是一个非常基本的倒计时定时器。它存在的意义是为系统提供一个时基,能够给操作系统提供一个硬件上的中断。使用Systick能够精准延时,对于时间要求严格的场所,意义十分重大。
作业:写一个流水灯---精确延时(可调控)的流水灯。
二、Systick timer
Systick是一个24位的定时器,一次最多可以计数2^24个时钟脉冲,这个脉冲计数值保存在当前计数值寄存器STK_VAL(Systick current value register)中,只能向下计数,每接收到一个时钟脉冲,STK_VAL的值就会向下减1,当减到0时,硬件会自动把重装载寄存器STK_LOAD(Systick reload value register)中保存的数据加载到STK_VAL,重新开始向下计数。如果STK_VAL的值被减至0时,会触发异常产生中断。
时钟---提供时钟脉冲;
当前值寄存器:计数值--向下计数;
重装载寄存器:给当前值寄存器重新赋值;
STK_VAL的值被减至0时,会触发异常产生中断。
滴答时钟--定时器
作用:实现精确延时;
定时器是对内部的时钟进行计数,计数到一定数值时,就是可以*频率,得到时间;
定时器:计数器+基准时钟
基准时钟---时间的基准---
计数器--通过计数器产生时间基准---向上、向下计数器
例如:我把1us作为一个基准时钟,要延时1s
延时1s--1000ms--1000*1000us;
系统时钟--CPU的脉搏--72MHz--周期--T=1/72M --如何得到1us的基准时钟?
计数器计数72次 72*T=1/1M=10^-6s=1us;
得到1s延时,计数器要重复循环很多个72次!---1000*1000
1us的延时:
- 时钟是HCLK时钟--72MHz
- 重装载值寄存器:71
- 中断开启;
时钟节拍是特定的周期性的中断
72MHz---
重装载值:72 次 当前值寄存器---递减!
时间:1/1M(S)--- 1us;
减到0时---产生中断,执行中断服务函数;
实现1ms---
1s---10^6
之后就关闭掉!