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

Stm32_SysTick系统定时器

SysTick 系统定时器详解

1. 基本定位与特点

SysTick是Cortex-M3内核自带的系统定时器,不属于片上外设,因此其寄存器地址在ARM核心中固定,不随芯片厂商变化。它的核心优势是专用于提供毫秒级和微秒级的精准延时,不占用芯片上通用的硬件定时器资源。

2. 核心寄存器

CTRL是控制寄存器用于配置时钟源、使能定时器、使能中断以及查看计数标志。LOAD是重装载数值寄存器,用于写入计数初值。VAL是当前计数值寄存器,用于读取当前递减到的数值。CALIB是校准寄存器,用于系统校准,实际开发中基本不使用。

3. 定时时间计算公式

延时时间等于LOAD除以SysTick时钟频率。其中延时时间单位为秒,LOAD为重装载寄存器中的数值,SysTick时钟频率通常为系统核心时钟HCLK或其8分频HCLK/8,具体由CTRL寄存器的CLKSOURCE位决定。例如,若SysTick时钟频率为72MHz,想产生1ms延时,则LOAD等于0.001乘以72000000,即72000。

4. 工作方式

SysTick是一个24位递减计数器。首先将计数值写入LOAD寄存器,同时VAL寄存器会被自动清零。然后使能CTRL寄存器中的ENABLE位,计数器开始从LOAD值向下递减,每个时钟周期减1。当VAL递减到0时,CTRL寄存器中的COUNTFLAG标志位会置1,可以通过查询该位判断计时结束。若使能了中断(CTRL的TICKINT位为1),则会触发SysTick异常中断。同时硬件会自动将LOAD中的数值重新加载到VAL,并开始下一轮计数,无需软件干预,实现连续周期计时。

5. 延时的两种常用模式

阻塞式延时(查询模式)通过循环查询COUNTFLAG标志位,直到计数归零,这种方式占用CPU但精度高,常用于短延时(如微秒级和毫秒级延时)。中断式延时(定时器模式)开启TICKINT中断,在中断服务函数中处理周期性任务,适合操作系统的心跳节拍,不占用CPU等待,适合长周期调度。

6.代码示例

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; //关闭定时器 } void Delay_ms(uint32_t xms) { while(xms--) { Delay_us(1000); } }
http://www.jsqmd.com/news/1172233/

相关文章:

  • 生产级多维聚合:滚动窗口、自定义函数与unstack实战
  • [SHOI2011] 扫雷机器人 题解
  • Leaflet 离线地图性能优化:3 种瓦片存储方案对比与百兆数据加载实测
  • Hadoop 3.3.4 MapReduce 实战:3步实现倒排索引,输出文件1@频次格式
  • OpenSSL 与 ssh-keygen 密钥格式互转:3 种场景下的完整命令与验证
  • 【Copilot×CI/CD黄金组合】:2024 Q2 Gartner DevOps成熟度评估新增“AI协同指数”,你团队达标了吗?
  • Android 3D游戏开发入门:从OpenGL ES基础到实战渲染与优化
  • Flink 2.3 状态后端实战:RocksDB vs HashMap 在10亿事件/天场景下的配置与调优
  • VS Code 插件深度评测:3款 TypeScript 智能辅助工具(Hero vs Importer vs Sorter)对比
  • 2026年7月最新长春芝柏官方售后联系电话与客户服务中心网点地址 - 亨得利官方服务中心
  • Unity URP卡通渲染实战:从色阶光照到屏幕描边的完整指南
  • etipc高可用性设计:接口宕机时的快速检测与链路切换机制
  • 猫抓Cat-Catch 2.6.9:浏览器资源嗅探终极指南,轻松获取网页媒体内容
  • 2026年10款靠谱论文降AIGC网站亲测:规范定稿实战对比实用指南
  • mpweixinpy餐厅微信点餐小程序
  • Godot TileMap完全指南:从基础配置到性能优化实战
  • Godot-MCP:基于MCP协议的AI游戏开发副驾驶实战指南
  • Codex接入国产AI模型:DeepSeek协议转换与配置实战
  • Makefile 模式匹配与变量实战:3个技巧将200行配置缩减至50行
  • Python 8个被忽略的底层事实:影响代码健壮性与性能的关键细节
  • GB8567-88 国标软件开发文档实战:8个核心文档模板与敏捷裁剪指南
  • Waymo-3DSkelMo:3D骨骼运动数据集如何革新自动驾驶行人交互建模
  • 2026 年现阶段,固原正规的剪股颖草坪源头厂家深度解析,别再浪费钱!这个小工具如何让你的草坪瞬间升级? - 行业推荐【认证官】
  • 亲身到店探访海口亨得利官方名表服务中心|网点地址与客服电话(2026年7月更新) - 亨得利官方
  • WWMI-Package:重构《鸣潮》3D模型导入的技术架构与实践
  • epkg-spec2yaml自动化集成:与CI/CD流水线结合的完整部署方案
  • 太顶了!输入主题,这几款AI论文网站直接生成结构完整的毕业论文
  • MMC崩溃原理与Windows服务器管理误操作防护指南
  • AI Agent开发实战:从原理到多智能体系统构建
  • RADIUS vs TACACS+ 协议对比:3大维度解析AAA安全与运维差异