(三)RT-Thread时钟与定时器管理
RT-Thread时钟与定时器管理 — 时间管理的艺术前言时间管理是RTOS的核心能力之一。RT-Thread通过时钟节拍驱动系统运转通过定时器实现延时触发和周期任务。本文将介绍时钟节拍的概念、定时器的分类与使用方法以及高精度延时的实现。一、时钟节拍OS Tick1.1 什么是时钟节拍时钟节拍是RT-Thread中最小的时间单位类似于闹钟的滴答声。每一次滴答系统就前进一个时间单位。时钟节拍的时间间隔由宏RT_TICK_PER_SECOND决定若RT_TICK_PER_SECOND 100则每秒100次节拍每个节拍 10ms若RT_TICK_PER_SECOND 1000则每秒1000次节拍每个节拍 1ms1.2 时钟节拍的产生时钟节拍依赖硬件定时器中断。以 STM32 的 SysTick 为例voidSysTick_Handler(void){rt_interrupt_enter();// 进入中断rt_tick_increase();// 系统时钟1rt_interrupt_leave();// 退出中断}每次rt_tick_increase()被调用全局变量rt_tick自增1记录系统从启动以来经历的总节拍数。1.3 获取当前时钟节拍rt_tick_trt_tick_get(void);通过在任务前后各获取一次rt_tick值相减即可计算任务执行耗时rt_tick_tstartrt_tick_get();// ... 执行某些操作 ...rt_tick_telapsedrt_tick_get()-start;rt_kprintf(耗时: %d ticks\n,elapsed);二、定时器管理定时器可以在指定时间后自动触发回调函数就像家中的厨房定时器——时间到了就提醒你。2.1 硬件定时器 vs 软件定时器类型精度实现方式适用场景硬件定时器纳秒级硬件直接提供电机控制等高精度场景软件定时器依赖OS Tick操作系统管理一般延时任务灵活易用2.2 定时器的分类按触发方式分单次触发定时器触发一次后自动停止如一次性闹钟。周期触发定时器周期性重复触发如每日闹钟。按执行上下文分硬件模式HARD_TIMER回调在中断上下文中执行响应极快但回调函数必须简短。软件模式SOFT_TIMER回调在timer线程中执行可以做更复杂的操作。2.3 创建定时器rt_timer_trt_timer_create(constchar*name,void(*timeout)(void*parameter),void*parameter,rt_tick_ttime,rt_uint8_tflag);参数说明name定时器名称timeout超时回调函数parameter传递给回调函数的参数time定时时长单位为 OS Tickflag定时器类型标志flag 常用值RT_TIMER_FLAG_ONE_SHOT单次触发RT_TIMER_FLAG_PERIODIC周期触发RT_TIMER_FLAG_HARD_TIMER硬件模式RT_TIMER_FLAG_SOFT_TIMER软件模式2.4 启动与停止定时器rt_err_trt_timer_start(rt_timer_ttimer);// 启动rt_err_trt_timer_stop(rt_timer_ttimer);// 停止rt_err_trt_timer_delete(rt_timer_ttimer);// 删除三、定时器使用示例以下示例创建一个周期定时器和一个单次定时器#includertthread.hstaticrt_timer_ttimer1;// 周期定时器staticrt_timer_ttimer2;// 单次定时器/* 周期定时器回调 */staticvoidtimeout1(void*parameter){rt_kprintf(Periodic timer timeout\n);}/* 单次定时器回调 */staticvoidtimeout2(void*parameter){rt_kprintf(One-shot timer timeout\n);}intmain(void){/* 创建周期定时器每10个tick触发一次 */timer1rt_timer_create(timer1,timeout1,RT_NULL,10,RT_TIMER_FLAG_PERIODIC);if(timer1!RT_NULL)rt_timer_start(timer1);/* 创建单次定时器30个tick后触发一次 */timer2rt_timer_create(timer2,timeout2,RT_NULL,30,RT_TIMER_FLAG_ONE_SHOT);if(timer2!RT_NULL)rt_timer_start(timer2);return0;}运行效果timer1每 10 个 tick 输出一次 “Periodic timer timeout”timer2在第 30 个 tick 输出一次 “One-shot timer timeout” 后停止四、控制定时器通过rt_timer_control()可以动态修改定时器属性rt_err_trt_timer_control(rt_timer_ttimer,rt_uint8_tcmd,void*arg);命令说明RT_TIMER_CTRL_SET_TIME修改超时时间RT_TIMER_CTRL_SET_ONESHOT设置为单次定时器RT_TIMER_CTRL_SET_PERIODIC设置为周期定时器示例——将定时器超时时间改为50个tickrt_tick_tnew_time50;rt_timer_control(timer1,RT_TIMER_CTRL_SET_TIME,new_time);五、高精度延时当需要比 OS Tick 更精确的延时如微秒级可以利用硬件定时器。以 ARM Cortex-M 的 SysTick 为例voidrt_hw_us_delay(rt_uint32_tus){rt_uint32_tticksus*(SysTick-LOAD/1000000);rt_uint32_tstartSysTick-VAL;while((SysTick-VAL-start)ticks);}注意高精度延时使用忙等待仅适用于极短时间的精确延时场景不应在常规逻辑中大量使用。总结要点内容时钟节拍系统最小时间单位由RT_TICK_PER_SECOND配置定时器类型单次触发 / 周期触发执行模式硬件模式中断上下文/ 软件模式线程上下文核心APIrt_timer_create→rt_timer_start→rt_timer_stop高精度延时通过 SysTick 等硬件实现微秒级延时掌握时钟与定时器你就能精确控制任务的执行时机。下一篇将进入RTOS最核心的机制——线程间同步与通信。

相关新闻

Spring AI 与 LangChain4j 全方位对比

Spring AI 与 LangChain4j 全方位对比

目录 概述 框架简介 LangChain4j Spring AI 设计理念对比 Spring AI LangChain4j API 设计对比 Spring AI 示例 LangChain4j 示例 功能特性对比 生态系统集成 Spring AI 集成优势 LangChain4j 集成优势 实战对比:以“文本生成”和“图像识别”为例 1. 文本生成…

2026/7/5 9:48:39 阅读更多 →
基于MATLAB的火灾烟雾检测系统:视频与图像识别,附代码注释

基于MATLAB的火灾烟雾检测系统:视频与图像识别,附代码注释

基于MATLAB的火灾烟雾检测系统 可以识别视频和图像 有代码注释最近在折腾视频分析的项目,发现用MATLAB搞烟火检测还挺有意思。今天就跟大伙唠唠怎么用颜色特征和运动检测来揪出视频里的火灾苗头。先放个效果图镇楼(想象一下正常画面突然框出红色烟雾区域…

2026/5/17 9:26:28 阅读更多 →
个人AI助手开发:OpenClaw + 微信远程操控(无代码+可落地)

个人AI助手开发:OpenClaw + 微信远程操控(无代码+可落地)

【前言】2026年,AI Agent 最实用的落地场景,就是「个人专属AI助手」——既能帮你处理办公琐事、检索信息,还能通过微信远程操控,随时随地发指令、收结果,不用打开电脑、不用登录后台。本文全程实战,基于 Op…

2026/5/17 9:26:27 阅读更多 →

最新新闻

液压升降台设计液压升降平台设计

液压升降台设计液压升降平台设计

本次毕业设计对象是液压升降平台,这套装置主要用于举升重物。它的举升高度为1米,举升重量为1吨,其动作主要是由两个双作用液压缸推动“X”型架,带动上板来实现的。该液压升降平台主要由两个部分组成:机械部分和液压部分…

2026/7/6 20:51:52 阅读更多 →
IDM激活脚本终极指南:永久免费使用IDM的简单方法

IDM激活脚本终极指南:永久免费使用IDM的简单方法

IDM激活脚本终极指南:永久免费使用IDM的简单方法 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager(IDM&a…

2026/7/6 20:45:50 阅读更多 →
MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂

MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂

MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂 【免费下载链接】mzmine3 mzmine source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 你是否曾面对海量的质谱数据感到无从下手?昂贵的商业…

2026/7/6 20:45:50 阅读更多 →
Git+GitHub新手实操手册:5步闭环搞定日常开发

Git+GitHub新手实操手册:5步闭环搞定日常开发

1. 这不是“又一个Git教程”——它是一份能让你三天后还在用的实操手册 你点开这个标题,大概率正卡在某个具体场景里:刚被同事甩来一个仓库链接,却连怎么把代码下载到自己电脑上都搞不清;或者写了半天功能,想提交却发现…

2026/7/6 20:43:49 阅读更多 →
CodeRed CMS未来路线图:即将推出的功能与改进指南 [特殊字符]

CodeRed CMS未来路线图:即将推出的功能与改进指南 [特殊字符]

CodeRed CMS未来路线图:即将推出的功能与改进指南 🚀 【免费下载链接】coderedcms Wagtail CodeRed Extensions enabling rapid development of marketing-focused websites. 项目地址: https://gitcode.com/gh_mirrors/co/coderedcms CodeRed C…

2026/7/6 20:41:48 阅读更多 →
OpenCV 4.9 与 Ultralytics YOLO 集成:Python 实现 5 行代码实时视频目标检测

OpenCV 4.9 与 Ultralytics YOLO 集成:Python 实现 5 行代码实时视频目标检测

OpenCV 4.9 与 Ultralytics YOLO 集成实战:5行代码构建实时视频分析系统1. 环境准备与工具链配置在开始构建实时视频分析系统之前,我们需要确保开发环境配置正确。以下是推荐的开发环境配置:Python环境要求:Python 3.8或更高版本&…

2026/7/6 20:41:48 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻