STM32 Systick系统定时器

本文介绍了STM32 Systick系统定时器的工作原理和特点,包括其24位递减计数方式,以及4个主要寄存器的作用。详细阐述了配置步骤,并提供了初始化函数和延时函数的实现。通过示例程序,说明了Systick在精确延时中的应用,并提示注意系统时钟与初始化参数的匹配以确保精度。
摘要由CSDN通过智能技术生成

@STM32 Systick系统定时器
#简介
在之前的实验中,我们只用到的delay函数通过while语句做循环的方式来占用时间,达到延时的目的。但是这种方式延时的时间不好把控,无法应用于更加精确的场合,所以势必还要引入今天要说的系统定时器。

Systick系统定时器采用24位向下递减的方式进行,也就是其单次计时总共能够计数2^24=16777216次,计数一次用时1/systick,单位为秒(s)。其中,systick可以为系统时钟sysclk或者系统时钟的8分频。当定时器设置好初值后,则由初值往下以此递减计数,计数至0则从LOAD寄存器中自动重装初值(若事先开启中断,则计数至0可触发中断响应)

#寄存器
定时器中共有四个寄存器,顺序如下:
##CTRL寄存器
在这里插入图片描述
如图,其中ENABLE就是定时器的使能位,通过它来控制定时器的开和关;CLKSOURCE用于确定时钟源,其中的内核时钟就是我们的系统时钟,外部时钟就是系统时钟的8分频;COUNTFLAG为计数状态标志位,计数完毕则为1,常用于判断。

##LOAD寄存器
在这里插入图片描述
LOAD寄存器就是用于存放重载值。

##VAL寄存器
在这里插入图片描述
VAL寄存器可以读取当前计数的值,也可对其进行写,但要注意这时会将COUNTFLAG清零。

##CALIB寄存器
在这里插入图片描述
这个寄存器主要是用于校准……平时也不用咋设置,大家知道有这么个东西就行。

#配置步骤
(1)设置Systick的时钟源
(2)设置初始值(如需要中断,则记得打开中断)
(3)清零当前计数器的值
(4)打开Systick定时器

#函数封装代码
##初始化函数

u16 tic_us=0;
u32 tic_ms=0;
void SysTick_Init(u8 SYSCLK)    //第一步:设置时钟源 变量系统时钟的单位为MHz
{
   
 	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);    //采取8分频
	tic_us=SYSCLK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值