STM32学习和实践笔记(10): Systick定时器介绍

1.SysTick定时器介绍

sysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个外设,被嵌入在 NVIC中。(NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能)

它是一个24位(注意只有24位,不要装载超过24位的值以免溢出)向下递减的定时器,每计数一次所需时间为1/SYSTICK,SYSTICK是系统定时器时钟,它可以直接取自系统时钟,还可以通过系统时钟8分频后获取。

当定时器计数到0时,将从LOAD寄存器中自动重装定时器初值,重新向下递减计数,如此循环往复。

如果开启SysTick中断的话,当定时器计数到0,将产生一个中断信号。因此只要知道计数的次数就可以准确得到它的延时时间。

例如:

假定SysTick直接取用72M系统时钟,那么每计数一次的时间是1/72MHZ=0.0138888 us。

假定SysTick直接取用72M系统时钟的8分频,那么每计数一次的时间是1/9MHZ=0.1111111111 us。

如果我想计时1us,则1/0.1111111=9次,也就是计数9次后产生中断,那就是1us.

1HZ对应1秒、也就是一秒波形变化一次(一个周期)

1KHZ对应1ms,也就是一秒变化1千次,1ms变化1次。

1MHZ对应1 us,也就是一秒变化1兆次,1us变化1次。

如果是9MHz, 那当然就是计数9次,为1us.

 2.SysTick定时器的寄存器

控制这个定时器的寄存器,主要有4个:

第1个:

COUNTFLAG:是软件来了解Systick计数的状态的。如果计数结束,不需要产生中断,但我仍想知道计数是否结束了,那么读取该位就可以知道。

CLKSOURCE:选0是使用系统时钟8分频后的时钟来计数。选1则为直接使用系统时钟计数。

TICKINT:决定计数到0后,是否需要产生中断

ENABLE :决定定时器什么时候开始计数。

第2个:

第3个:

第4个:(这个极少使用)

3.SysTick定时器配置步骤

SysTick定时器的操作,就是配置上面说的3个控制寄存器,可以分为 4 步:

1)设置SysTick定时器的时钟源

就是直接选用系统时钟,还是使用系统时钟的8分频。

2)设置SysTick定时器的重装初始值(如果要使用中断的话,就将中

断使能打开)。

3)清零SysTick定时器当前计数器的值

4)打开SysTick定时器

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 08:18:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 08:18:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 08:18:01       82 阅读
  4. Python语言-面向对象

    2024-04-13 08:18:01       91 阅读

热门阅读

  1. Node.js 安装与配置

    2024-04-13 08:18:01       43 阅读
  2. OpenAI的Whisper

    2024-04-13 08:18:01       84 阅读
  3. 生活是否磨灭斗志:一场深度探讨

    2024-04-13 08:18:01       38 阅读
  4. Spring MVC 中的统一异常处理

    2024-04-13 08:18:01       42 阅读
  5. OpenAI的Whisper模型

    2024-04-13 08:18:01       41 阅读
  6. 【Redis】redis面试相关积累

    2024-04-13 08:18:01       36 阅读
  7. python内置函数enumerate()、eval()详解

    2024-04-13 08:18:01       38 阅读
  8. C++ primer 第十九章

    2024-04-13 08:18:01       33 阅读
  9. IP与TCP报文固定头部中的字段

    2024-04-13 08:18:01       36 阅读