我的编程空间,编程开发者的网络收藏夹
学习永远不晚

RT-Thread 时钟管理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

RT-Thread 时钟管理

时钟节拍

任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事件,如线程的延时、时间片的轮转调度以及定时器超时等。

RTT中,时钟节拍的长度可以根据RT_TICK_PER_SECOND的定义来调整。rtconfig.h配置文件中定义:

void SysTick_Handler(void){        rt_interrupt_enter();    HAL_IncTick();    rt_tick_increase();        rt_interrupt_leave();}

获取系统节拍

rt_tick_get();

定时器

定时器,是指从指定的时刻开始,经过一定的指定时间后触发一个事件,定时器有硬件定时器和软件定时器之分:

  • 硬件定时器:芯片本身提供的定时功能,一般由外部晶振提供给芯片输入时钟,芯片向软件模块提供一组配置寄存器,接受控制输入,到达设定时间值后芯片中断控制器产生时钟中断。
    硬件定时器的精度一般很高,可以达到纳秒级别,并且是中断触发方式。
  • 软件定时器:由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受数目限制的定时器服务。

RTT操作系统提供软件实现的定时器,以时钟节拍(OS Tick)的时间长度为单位,即定时数值必须是OS Tick的整数倍。

RTT提供的两类定时器机制

  1. 单次触发定时器,这类定时器在启动后只会触发一次定时器事件,然后定时器自动停止。
  2. 周期触发定时器,这类定时器会周期性地触发定时器事件,直到用户手动的停止,否则将永远持续执行下去。

根据定时器超时函数执行时所处的上下文环境,RT-Thread的定时器可以分为HARD_TIMER模式和SOFT_TIMER模式。
HARD_TIMER模式:中断上下文
定时器超时函数的要求:执行时间应该尽量短,执行时不应导致当前上下文挂起、等待。例如在中断上下文中执行超时函数不应该试图去申请动态内存、释放动态内存等。

SOFT_TIMER模式:线程上下文
该模式被弃用后,系统会在初始化时创建一个timer线程,然后SOFT_TIMER模式的定时器超时函数都会在timer线程的上下文环境中执行。

定时器工作机制

在RTT定时器模块中维护着两个重要的全局变量:

  • 当前系统经过的tick时间rt_tick(当硬件定时器中断来临时,它将加1)。
  • 定时器链表rt_timer_list。系统新创建并激活的定时器都会按照以超时时间排序的方式插入到rt_timer_list链表中。

系统当前tick值为20,在当前系统中以及创建并启动了三个定时器。
分别是定时时间为50个tick的Timer1、100个tick的Timer2和500个tick的Timer3.
这三个定时器分别加上系统当前时间rt_tick=20,从小到大排序链接在rt_timer_list链表中。
在这里插入图片描述
rt_tick随着硬件定时器的触发一直在增加(每一次硬件定时器中断来临,rt_tick变量会加1),50个tick以后,rt_tick从20增长到70,与Timer1的timeout值相等,这时会触发与Timer1定时器相关联的超时函数,同时将Timer1从rt_timer_list链表上删除。同理,100个tick和500个tick过去后,与Timer2和Timer3定时器相关联的超时函数会被触发,接着将Timer2和Timer3定时器从rt_timer_list链表删除。

如果系统当前定时器状态在10个tick以后(rt_tick=30)有一个任务新创建了一个tick值为300的Timer4定时器,由于Timer4定时器的timeout=rt_tick+300=330,因此它被插入到Timer2和Timer3定时器中间,形成如下图所示链表结构:
在这里插入图片描述

高精度延时

此函数只支持低于1个OS Tick的延时,否则SysTick会出现溢出而不能够获取指定的延时时间。
void rt_hw_us_delay(rt_uint32_t us);//只支持小于1ms的延时

来源地址:https://blog.csdn.net/Caramel_biscuit/article/details/132507291

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

RT-Thread 时钟管理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

RT-Thread 时钟管理

时钟节拍 任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事件,如线程的延时、时间片的轮转调度以及定时器超时等。 RTT中,时钟节拍的长度可以根据RT_TICK_PER_SECOND的定义来调整。rtconfig.h配置文件
2023-08-30

Python time库的时间时钟处理

前言 time库运行访问多种类型的时钟,这些时钟用于不同的场景。本篇,将详细讲解time库的应用知识。 获取各种时钟 既然time库提供了多种类型的时钟。下面我们直接来获取这些时钟,对比其具体的用途。具体代码如下:import timepr
2022-06-02

软考系统集成项目管理工程师考试时间有多少分钟

软考系统集成项目管理工程师的考试时间对于备考非常重要,了解确切的考试时间可以帮助考生更好地安排复习计划和考试当天的时间管理。软考系统集成项目管理工程师考试时间有多少分钟?具体请见下文。
软考系统集成项目管理工程师考试时间有多少分钟
2024-08-26

社区投稿 | 如何正确理解 RT 并监控 MySQL 的响应时间

作者:杨奇龙网名“北在南方”,7年DBA老兵,目前任职于杭州有赞科技DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。一、前言响应时间(response time 简称 RT)是从系统接收请求开始到返回响应之间的时间跨度,是一项极
社区投稿 | 如何正确理解 RT 并监控 MySQL 的响应时间
2015-03-11

Linux如何管理时间

这篇文章主要为大家展示了“Linux如何管理时间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux如何管理时间”这篇文章吧。剪贴板指示器你是否在日常使用中,在多个文档之间的大量使用复制和粘
2023-06-15

钉钉工时管理系统

在当今数字化时代,许多企业都开始使用钉钉工时管理系统来提高生产效率和减少成本。它可以帮助企业记录员工的出勤情况,跟踪员工的工作时长和工资,以及管理团队工作量。钉钉工时管理系统的基本功能包括考勤记录、请假记录、报销记录、绩效评估等,可以帮助企业更好地管理员工的工作时间。例如,员工每天的工作时间可以在系统中记录,并且系统会
钉钉工时管理系统
2023-10-28

信息系统项目管理师项目时间管理考点

  信息系统项目管理师项目时间管理考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考信息系统项目管理师项目时间管理考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  第7章 项目时间管理  (1)项目时间管理的意义与范畴  a)项目时间管理包括
信息系统项目管理师项目时间管理考点
2024-04-18

详解Android6.0运行时权限管理

自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥有的权限而导致的无法安装的事情,也不会再不征求用户授权的情况下,
2022-06-06

Linux下如何管理系统时间

在Linux下,管理系统的日期和时间是一个常见但重要的任务。以下是一些常用的方法来查看、设置和同步系统时间:查看系统时间使用 date 命令可以查看当前系统的日期和时间。例如:date设置系统时间使用 date 命令可以手动设置系统时
Linux下如何管理系统时间
2024-09-25

Redis 过期时间与内存管理

http://www.redis.cn/commands/expire.htmlhttp://www.redis.cn/topics/lru-cache.html内存管理当 Redis 作为缓存使用时(此时缓存仅作为热点数据提高服务的访问性能),需要考虑内存的
Redis 过期时间与内存管理
2018-12-02

企业车辆太多难以管理,是时候集成化管理了!

随着社会经济的发展,各企业的事业单位的车辆保有量逐年上升,企业管理人面对各种用车成本及人员管理越来越困难,如何保证单位车辆安全、高效、科学的运营,如何防止管理成本增加和越来越复杂的车队调度、人员匹配、驾乘管理、事故处理,以及涉车事务等,是长
2023-06-05

时刻在握:PHP DateTime 扩展的时间管理利器

掌握时间管理:PHP DateTime 扩展的强大功能
时刻在握:PHP DateTime 扩展的时间管理利器
2024-03-06

2023年网络管理员报名时间

  很多考生准备报名2023年软考网络管理员考试,那么2023年网络管理员报名时间是什么时候?准备报名的考生赶紧来看下报名时间吧!  软考网络管理员每年有两次考试,根据往年各省软考报名时间安排来看,编程学习网小编预计2023上半年网络管理员报名时间在3月份开始;2023下半年网络管理员报名时间在8月份开始。具体请考生关注2
2023年网络管理员报名时间
2024-04-19

2023年网络管理员考试时间

  很多考生准备报名2023年软考网络管理员考试,那么2023年网络管理员考试时间是什么时候呢?准备报名的考生赶紧来看下2023年软考网络管理员考试时间吧!  软考网络管理员每年安排两次考试,根据往年软考考试时间安排来看,编程学习网小编预计2023年网络管理员考试时间分别在5月27日和11月4日,具体请考生以软考办公布为准
2023年网络管理员考试时间
2024-04-19

编程热搜

目录