从零开始一起学stm32(五)---滴答定时器

一、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的延时:

  1. 时钟是HCLK时钟--72MHz
  2. 重装载值寄存器:71
  3. 中断开启;
  4.  

时钟节拍是特定的周期性的中断

 

72MHz---

重装载值:72 次  当前值寄存器---递减!

时间:1/1M(S)--- 1us;

 

 

减到0时---产生中断,执行中断服务函数;

 

实现1ms---

 

 

1s---10^6

 

之后就关闭掉!

 

猜你喜欢

转载自blog.csdn.net/qq_38639426/article/details/88632820