当前位置: 首页 > news >正文

STM32滴答定时器(SysTick)原理及延时函数实现

一、滴答定时器(SysTick)简介

SysTick是ARM Cortex内核内置的一个24位向下递减计数器,通常用于操作系统的时基和任务调度。STM32中,这个定时器也经常用于实现精准的延时功能。

SysTick的寄存器包括:

  • CTRL (控制和状态寄存器)

  • LOAD (重装载寄存器)

  • VAL (当前值寄存器)

  • CALIB (校准寄存器)

二、SysTick工作原理

SysTick计数器工作过程为:

  • 用户写入LOAD寄存器以设置初始倒数值。

  • 当计数器使能后,计数器VAL以系统时钟(或系统时钟8分频)频率递减。

  • 当计数器递减到0时,触发一个计数结束标志,并重新装载LOAD寄存器的值继续倒数。

利用这一特性,可以实现精准延时。

三、延时函数实现

下面是一个典型的STM32基于SysTick实现微秒(us)与毫秒(ms)延时函数的示例。

#include "stm32f10x.h"

// 初始化滴答定时器
void SysTick_Init(void)
{
    SysTick->CTRL = 0; // 禁用SysTick
    SysTick->LOAD = 0xFFFFFF; // 最大重装值
    SysTick->VAL = 0; // 清空当前计数值
    SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk; // 选择内核时钟,启动计数
}

// 微秒级延时函数
void delay_us(uint32_t us)
{
    uint32_t ticks = us * (SystemCoreClock / 1000000);
    SysTick->LOAD = ticks;
    SysTick->VAL = 0; // 清空VAL

    // 等待计数完成
    while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
}

// 毫秒级延时函数(基于微秒函数实现)
void delay_ms(uint32_t ms)
{
    while (ms--)
        delay_us(1000);
}
四、注意事项
  • 在延时函数调用之前,必须调用SysTick_Init()初始化滴答定时器。

  • SystemCoreClock为系统主频(如STM32F103通常为72MHz),确保该变量已经正确初始化。

  • 由于SysTick是24位计数器,因此延时的最大值不能超过LOAD寄存器所能存储的最大值。

五、总结

STM32中SysTick定时器以其高精度和内置特性,非常适合用于延时函数实现和实时操作系统的时钟节拍,实现简单且精确,是嵌入式开发中非常常见的一种延时方法。

相关文章:

  • python爬虫DrissionPage的使用
  • 【CC2530 教程 二】CC2530定时器实现微秒、毫秒、秒延时函数
  • 爬虫框架Scrapy从入门到实战
  • android初学
  • cython编译pyd并且c调用
  • 腾讯四面面经
  • Qt-Q_ENUM宏和QMetaEnum类
  • rocky linux 与centos系统的区别
  • 16.Linux蓝牙从硬件驱动到应用
  • HTTP核心知识
  • vue插槽传送和接收item
  • pyqt5报错:qt.qpa.plugin: Could not find the Qt platform plugin “xcb“(已解决)
  • Linux安装Ollama+MaxKB建立本地知识库
  • 2024年MathorCup数学建模C题物流网络分拣中心货量预测及人员排班解题全过程文档加程序
  • SpringBoot(8)——Springboot数据层开发
  • 【Linux文件IO】Linux中文件属性与目录操作的API介绍和用法
  • 第三章 | 初识 Solidity:开发环境搭建 第一个智能合约{介绍篇}
  • Codeforces Round 1012 (Div. 2) 3.23
  • 零基础上手Python数据分析 (8):Pandas 核心数据结构 Series 和 DataFrame
  • 【博客节选】再谈Unity 的 root motion
  • 逆境之上,万物生长
  • 105岁八路军老战士、抗美援朝老战士谭克煜逝世
  • 进化版大巴黎通杀英超,那个男人后悔了吗
  • 2025江西跨境电子商务发展交流会召开,探索行业发展新趋势
  • 华为招聘:未与任何第三方开展过任何形式的实习合作
  • 被炒热的“高潮针”:超适应症使用,安全性和有效性存疑