[导读]时间,不管在任何生活场合,都是一个非常重要概念。试想一下,假如没有了时间,这个世界几乎所有的事物都会乱套,但同时很多科学家也会提出疑问,在客观世界里面,时间是真实存在的吗?(扯得有点远~哈哈)回到正题,任何操作系统的运行,都离不开时间。因为操作系统需要有一个界定标准,去规划各种进...
时间,不管在任何生活场合,都是一个非常重要概念。试想一下,假如没有了时间,这个世界几乎所有的事物都会乱套,但同时很多科学家也会提出疑问,在客观世界里面,时间是真实存在的吗?(扯得有点远~哈哈)
回到正题,任何操作系统的运行,都离不开时间。因为操作系统需要有一个界定标准,去规划各种进程或线程的运行,时间就是这个统一的标准。操作系统通过时间的流逝,定期去检查线程是否已经达到调度标准,定期去检查是否有一些定时任务需要执行,等等。
关于RT-Thread时钟管理相关的内容,官方提供了比较丰富的文档作为参考,具体可以查看以下链接:https://www.rt-thread.org/document/site/programming-manual/timer/timer/
本文尝试从以下几个方面总结一下RT-Thread时钟管理的学习过程。时钟相关的概念描述 什么是时钟节拍?任何操作系统都需要人为地提供一个时钟节拍,通常这个时钟节拍被称为系统心跳,而且这个系统心跳是通过一个硬件定时器来周期性提供的。这个时钟节拍就好像我们生活里面的钟表的秒针一样,每过一秒,秒针活动一格。
在操作系统里面,硬件定时器中断一次,用来记录时钟节拍的全局变量(rt_tick)就会累加,这个变量只会增加而不会减少,因为时间总是往前流逝的。比如我们初始化硬件定时器为1毫秒中断一次,那这个 rt_tick 每过1毫秒就会加1。如上图所示,硬件定时器每1毫秒中断一次,产生一个节拍。假如系统监测到在第8个节拍的时候,某个线程的时间片用完了,就会执行一次线程调度;假如在第n 1个节拍的时候,监测到某个定时器的时间到了,就会开始执行这个定时器任务。
RT-Thread是如何实现时钟节拍的?相信不少工程师都知道,Cortex-M系列单片机内部有一个嘀嗒时钟 systick 硬件定时器,RT-Thread 就是使用这个 systick 时钟来触发定时器中断,然后实现时钟节拍的全局变量不断自增。定时器的管理机制
在单片机裸机编程的时候,通常都是使用硬件定时器进行计数,当硬件定时器的计数值满足溢出条件后,就会触发定时器中断,然后我们在定时器中断里面处理任务就可以了。
在RT-Thread实时操作系统里面,提供了一种软件定时器机制,这种软件定时器的定时长度是以时钟节拍为单位的,并且定时的时间长度必须是时钟节拍的整数倍。软件定时器可以设置为单次触发或周期触发,也可以设置为HARD_TIMER模式或SOFT_TIMER模式。
定时器HARD_TIMER模式,这种模式下的定时器超时函数,需要在中断的上下文环境下执行,并且对于超时函数的要求与中断服务函数的要求是一致的,也就是说,超时函数的执行时间要足够短,执行时不能挂起线程,不能去申请或释放动态内存。
定时器的SOFT_TIMER模式,这种模式相当于启动了一个定时器线程,定时器的超时函数会在这个timer线程的上下文环境下执行,该模式使用的时候,没有HARD_TIMER模式那么复杂,因为这种模式其实就是一个定时器线程在进行工作和调度。
RT-Thread的定时器模块里面,维护了一个有序的定时器链表,这个链表是用来管理当前处于活动状态的定时器的,每次时钟节拍中断的时候,都会检测这个定时器链表,看看是否有超时时间到达。RT-Thread官方对这个定时器链表的工作机制已经做了详细的描述,如下图所示。对于有序链表的搜索,是比较消耗时间的,所以为了加快链表的搜索速度,RT-Thread在原来有序链表的基础上,加入了跳表算法,使用这种算法可以加快链表搜索元素的速度,提升搜索的效率,但跳表算法是一种用“空间换时间”的算法,会有一定的内存消耗。定时器相关的API函数
RT-Thread提供了一系列API函数接口,方便开发者对定时器进行一系列操作,包括::创建/初始化定时器、启动定时器、运行定时器、删除/脱离定时器。
所有定时器在定时超时后都会从定时器链表中被移除,而周期性定时器会在它再次启动时被加入定时器链表,这与定时器参数设置相关。在每次的操作系统时钟中断发生时,都会对已经超时的定时器状态参数做改变。定时器应用示例
定时器相关的应用示例,主要是为了验证以上定时器相关的API函数接口,这里包含两个定时器示例,分别是动态定时器示例和静态定时器示例。
示例源码下载链接:https://github.com/embediot/rtthread_study_noteshttps://gitee.com/embediot/rtthread_study_notes
动态定时器示例和静态定时器示例都是创建两个定时器,一个定时器是单次触发模式,一个定时器是周期性触发模式。
在timer_test.h头文件里面,通过打开相应的宏定义开关,重新编译工程源码,下载到开发板即可验证实验现象,如下图所示。定时器使用的注意事项
RT-Thread定时器在使用的时候,为了确保定时器能正常运行,应该有以下注意事项:
1、应该根据不同的应用场合,设置系统的时钟节拍,时钟节拍一般是1 – 100ms,时钟节拍的数值越小,表示频率越快,系统的额外开销就会越大。
2、在系统节拍的中断函数里面,会不断检查硬件定时器链表,如果有定时器超时时间到达,就会去处理相应的超时任务,超时后就会从链表中移除这个定时器,对于周期性定时器,再次启动时会重新加入链表。
3、定时器链表的跳表算法,是用空间来换取时间的,所以要根据实际的硬件资源设置跳表的层数,表示跳表层数的宏定义RT_TIMER_SKIP_LIST_LEVEL默认为1。
4、RT-Thread的定时器精度,是由时钟节拍来决定的,定时器的超时时间必须是时钟节拍的整数倍,在Cortex-M系列的单片机中,可以使用systick的工作机制来获得一个低于时钟节拍的延时。
5、低于时钟节拍的高精度延时的示例函数,如下图所示。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。
关键字:
阿维塔
塞力斯
华为
加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...
关键字:
AWS
AN
BSP
数字化
伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...
关键字:
汽车
人工智能
智能驱动
BSP
北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...
关键字:
亚马逊
解密
控制平面
BSP
8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。
关键字:
腾讯
编码器
CPU
8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。
关键字:
华为
12nm
EDA
半导体
8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。
关键字:
华为
12nm
手机
卫星通信
要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...
关键字:
通信
BSP
电信运营商
数字经济
北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...
关键字:
VI
传输协议
音频
BSP
北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...
关键字:
BSP
信息技术
山海路引 岚悦新程 三亚2024年8月27日 /美通社/ -- 近日,海南地区六家凯悦系酒店与中国高端新能源车企岚图汽车(VOYAH)正式达成战略合作协议。这一合作标志着两大品牌在高端出行体验和环保理念上的深度融合,将...
关键字:
新能源
BSP
PLAYER
ASIA
上海2024年8月28日 /美通社/ -- 8月26日至8月28日,AHN LAN安岚与股神巴菲特的孙女妮可•巴菲特共同开启了一场自然和艺术的疗愈之旅。 妮可·巴菲特在疗愈之旅活动现场合影 ...
关键字:
MIDDOT
BSP
LAN
SPI
8月29日消息,近日,华为董事、质量流程IT总裁陶景文在中国国际大数据产业博览会开幕式上表示,中国科技企业不应怕美国对其封锁。
关键字:
华为
12nm
EDA
半导体
上海2024年8月26日 /美通社/ -- 近日,全球领先的消费者研究与零售监测公司尼尔森IQ(NielsenIQ)迎来进入中国市场四十周年的重要里程碑,正式翻开在华发展新篇章。自改革开放以来,中国市场不断展现出前所未有...
关键字:
BSP
NI
SE
TRACE
上海2024年8月26日 /美通社/ -- 第二十二届跨盈年度B2B营销高管峰会(CC2025)将于2025年1月15-17日在上海举办,本次峰会早鸟票注册通道开启,截止时间10月11日。 了解更多会议信息:cc.co...
关键字:
BSP
COM
AI
INDEX
上海2024年8月26日 /美通社/ -- 今日,高端全合成润滑油品牌美孚1号携手品牌体验官周冠宇,开启全新旅程,助力广大车主通过驾驶去探索更广阔的世界。在全新发布的品牌视频中,周冠宇及不同背景的消费者表达了对驾驶的热爱...
关键字:
BSP
汽车制造
此次发布标志着Cision首次为亚太市场量身定制全方位的媒体监测服务。 芝加哥2024年8月27日 /美通社/ -- 消费者和媒体情报、互动及传播解决方案的全球领导者Cis...
关键字:
CIS
IO
SI
BSP
上海2024年8月27日 /美通社/ -- 近来,具有强大学习、理解和多模态处理能力的大模型迅猛发展,正在给人类的生产、生活带来革命性的变化。在这一变革浪潮中,物联网成为了大模型技术发挥作用的重要阵地。 作为全球领先的...
关键字:
模型
移远通信
BSP
高通
北京2024年8月27日 /美通社/ -- 高途教育科技公司(纽约证券交易所股票代码:GOTU)("高途"或"公司"),一家技术驱动的在线直播大班培训机构,今日发布截至2024年6月30日第二季度未经审计财务报告。 2...
关键字:
BSP
电话会议
COM
TE
8月26日消息,华为公司最近正式启动了“华为AI百校计划”,向国内高校提供基于昇腾云服务的AI计算资源。
关键字:
华为
12nm
EDA
半导体