第12章 SysTick系统定时器

2024/12/16 STM32
第12章 SysTick系统定时器

一、SysTick定时器介绍

  1. SysTick定时。器也叫SysTick滴答定时器,是M3内核的一个外设,被嵌入在NVIC当中
  2. SysTick定时器是一个24位的递减定时器,每计数一次所需要的时间是 1/SysTick。SysTick是系统定时器时钟,它有两种途径,通过AHB总线直接到达SysTick定时器作为它的时钟源,另一种是通过对系统时钟8分频之后得到SysTick定时器的时钟源,这两种时钟源都可以作为SysTick定时器来使用,通常使用的比较多的是通过8分频之后。所以每计数一次所需要的时间是 1/(72/8) 即1/9,单位是微秒,换句话说,在 1us 的时间,它会计数 9 次。

pAqczid.png

  1. 当定时器计数到0的时候,它就会从LOAD寄存器当中重新自动装载定时器的一个初值,重新向下递减。当递减到0的时候还会产生一个中断信号,因此,如果要配置中断,也可以让SysTick定时器产生一个中断。
  2. SysTick递减一次的时间是 1/9us ,因此,只要知道它递减了多少次,也就得到了它的时间

二、SysTick定时器操作

需要先了解寄存器的相关功能,因为STM32官方固件库没有提供SysTick定时器的相应配置函数,所以需要对SysTick定时器它相应的一些位来进行了解,主要是操作4个寄存器

CTRL寄存器

  1. 它是SysTick定时器的控制及状态寄存器

pAqglLT.png

位介绍
名称功能
0ENABLE使能位,设置为1使能
1TICKINT中断使能位,使用SysTick中断将该位置1
2CLKSOURCE时钟源选择,1为不分频时钟,0为8分频后的时钟
16COUNTFLAG可用来判断定时器是否已经计数到0

LOAD寄存器

pAq2Ph9.png LOAD寄存器重新自动装载定时器的一个初值,重新向下递减。24位,0-23有效。

VAL寄存器

pAq2uAe.png SysTick当前数值寄存器,当递减到0的时候COUNTFLAG为1。24位,0-23有效。VAL就是存储当前的倒计数的值

CALIB寄存器

pAq2Jnf.png 校准数值的寄存器,32位寄存器,0-23存放的倒计数的值,30位是校准值,31是外部参考时钟的选择
这个寄存器很少使用

三、SysTick定时器操作步骤

  1. 设置SysTick定时器的时钟源。
  2. 设置SysTick定时器的重装初始值(如果要使用中断的话,就将中 断使能打开)。
    • 通过重装载值的赋值可以确定SysTick定时器的一个定时时间,当SysTick定时器递减到0时,它会从重装载寄存器当中赋值继续递减,递减到0时也会产生一个中断请求
  3. 清零SysTick定时器当前计数器的值。
  4. 打开SysTick定时器。

四、软件设计

  1. 创建SysTick.c文件,存放到Public文件夹下

pAqoeFf.png

  1. 添加到项目组

pAqoNfU.png

  1. 添加misc文件

pAqodl4.png 文件中含有相应的中断,NVIC,SysTick等的时钟配置函数

SysTick.h

pAqvLa4.png

SysTick.c

pAqvqZF.png

  1. static用于全局的使用,相当于一个全局的变量
  2. 定时器初始化为什么要定义一个变量进来,是因为我们在使用SysTick系统时钟的时候,系统时钟不是72M,比如36M,就可以通过修改函数的形参传递进来,它的微秒级也同样会修改

main.c

pAqvxR1.png

文档信息

0 comments
Anonymous
Markdown is supported

Be the first person to leave a comment!

搜索

    Table of Contents

    文章目录