news 2026/4/18 4:15:22

STM32 - 滴答定时器 - 2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32 - 滴答定时器 - 2

一、滴答定时器(SysTick)概述

SysTick 是Cortex-M 内核(如 STM32F103 用的 Cortex-M3)自带的24位递减定时器,属于内核级外设,而非 STM32 片上外设。核心用途:

  1. 裸机开发:实现微秒 / 毫秒级精准延时;
  2. RTOS 开发:作为系统心跳(Tick),支撑任务调度、时间片轮转;
  3. 通用场景:统计函数执行时间、实现简单定时任务。

二、相关寄存器

1、关键寄存器

寄存器作用
LOAD重装值寄存器,设置计数最大值
VAL当前计数值寄存器,可手动清零
CTRL控制 + 状态寄存器(时钟源选择、使能、中断使能、计数完成标志)
CALIB

校准值寄存器(一般用于 RTOS 节拍校准,裸机开发较少用)

2、CTRL 控制与状态寄存器

  • ENABLE:Systick的使能位。
  • TICKINT:在使用时选择Systick是否要产生中断。若把位2设置为1,则Systick在从初值倒计数到0时就会产生中断。
  • CLKSOURCE:设置为0,则Systick的时钟源就是外部时钟;设置为1,则Systick的时钟源就是内部时钟。选择如下图

3、LOAD寄存器

当计数器从 LOAD 的值递减到 0 时,会自动重载 LOAD 的值,重新开始计数(ENABLE = 1)。 寄存器的低24位有效。

4、VAL 当前计数值寄存器

读取时返回当前计数器的递减值

5、CALIB 校准值寄存器

主要用于 RTOS 中校准系统节拍,裸机开发几乎不用。

三、裸机 - 精确延时

基于STM32f103 - 标准库

1、寄存器配置

1> 选择配置寄存器延时1us,后面的函数调用其就可以实现

  • CTRL:0x00000005 -> 使能滴答定时器 + 选择 HCLK(72MHz)作为 SysTick 时钟源
  • LOAD:HCLK=72MHz ->1 us需要计数 72 次
  • VAL:让定时器从LOAD的数值重新开始计数,避免残留的计数值导致延时误差。
/** * @brief 微秒级延时 * @param xus 延时时长,范围:0~233015 * @retval 无 */ void Delay_us(uint32_t xus) { SysTick->LOAD = 72 * xus; //设置定时器重装值 SysTick->VAL = 0x00; //清空当前计数值 SysTick->CTRL = 0x00000005; //设置时钟源为HCLK,启动定时器 while(!(SysTick->CTRL & 0x00010000)); //等待计数到0 SysTick->CTRL = 0x00000004; //关闭定时器 }

2> 代码部分:

  • while(!(SysTick->CTRL & 0x00010000)); CTRL的 BIT16 是COUNTFLAG(计数完成标志位):当 SysTick 从 LOAD 值递减到 0 时,该位会自动置 1。这行代码的作用是 “循环等待,直到计数完成”,也就是等待延时时间到。
  • SysTick->CTRL = 0x00000004;关闭 SysTick 定时器(BIT0=0),避免定时器继续运行影响后续操作,BIT2 保持 1(不影响,仅关闭使能)。

2、毫秒/秒级延时

有了上面的微秒延时,实现毫秒/秒就简单了,只需要不停的调用微秒函数就可以了

1>ms延时

/** * @brief 毫秒级延时 * @param xms 延时时长,范围:0~4294967295 * @retval 无 */ void Delay_ms(uint32_t xms) { while(xms--) { Delay_us(1000); } }

2>s延时

/** * @brief 秒级延时 * @param xs 延时时长,范围:0~4294967295 * @retval 无 */ void Delay_s(uint32_t xs) { while(xs--) { Delay_ms(1000); } }

四、使用注意

滴答时钟实现的精准延时属于阻塞型延时在延时过程中,CPU 会持续等待延时完成,无法执行其他任务。在使用的时候要格外注意,以避免延时过多导致系统故障。

参考:@Barkley X

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/5 14:30:18

基于STM32电表交流电压电流有功无功视在功率因数频率设计24-035(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于STM32电表交流电压电流有功无功视在功率因数频率设计24-035(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码24-035、STM32智能交流电压电流有功功率功率因数频率无功功率视在功率演示视频(复制到浏览器打开&…

作者头像 李华
网站建设 2026/4/18 6:25:18

2026必备!9个AI论文工具,助继续教育学生轻松写论文!

2026必备!9个AI论文工具,助继续教育学生轻松写论文! AI 工具助力学术写作,轻松应对论文挑战 随着人工智能技术的不断进步,AI 工具在学术写作中的应用越来越广泛。对于继续教育的学生而言,撰写高质量的论文不…

作者头像 李华
网站建设 2026/4/18 6:27:16

我们的系统遇到framedyn.dll丢失损坏问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/17 13:26:56

AI优化搜索:从关键词匹配到深度理解用户意图的变革

在如今的数字信息环境里,用户获取信息的首要入口仍然是搜索引擎,随着人工智能技术大力地深度融合,传统的搜索引擎优化也就是SEO正经历着一场变革,这场变革是从由算法来驱动朝着智能理解进行跃迁的,于是AI搜索优化就产生…

作者头像 李华