实时操作系统Tick时钟的实现方法及装置的制作方法

文档序号:6400014阅读:389来源:国知局
专利名称:实时操作系统Tick时钟的实现方法及装置的制作方法
技术领域
本发明涉及RTOS (Real-Time Operating System,实时操作系统)技术领域,尤其涉及一种实时操作系统Tick时钟的实现方法及装置。
背景技术
目前RTOS的系统ticks大都以系统时钟为时钟源,采用芯片自带的系统ticks定时器(systick timer)或者通用定时器实现,在具备多功能的产品的不同工作模式下,其系统时钟也不相同,因此导致每秒钟产生的ticks数不一致,这可能造成RTOS定时器定时的混乱或者定时产生严重误差,从而使RTOS时钟不稳定、不准确;若采用外围设备,则增加了产品的耗电量;且在某些芯片没有提供系统ticks定时器或者通用定时器不够用的情况下,进行RTOS移植也存在问题。

发明内容
本发明的主要目的是提供一种实时操作系统Tick时钟的实现方法及装置,旨在达到产生稳定且功耗低的RTOS Tick时钟。本发明实施例公开了一种实时操作系统Tick时钟的实现方法,包括以下步骤:初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍,实现所述实时操作系统的任务调度。优选地,所述根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍包括:根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,获取所述实时时钟产生中断频率Ticks Frequency为:Ticks Frequency = (RTC clk/div) / counter (Hz);其中,RTC clk 为所述实时时钟频率,div为所述实时时钟的分频数,counter为所述实时时钟产生中断的计数值;根据所述实时时钟产生中断频率Ticks Frequency,获取所述实时时钟产生中断周期 Ticks cycle 为:Ticks cycle = 1/Ticks Frequency ;根据所述实时时钟产生中断频率Ticks Frequency和产生中断周期Ticks cycle,获取所述实时操作系统每秒钟的ticks数Ticks Num为:Ticks Num = 1/Ticks cycle = Ticks Frequency = (RTC clk/div) / counter ;根据所述实时操作系统每秒钟的ticks数Ticks Num,即可获取所述实时操作系统的系统Tick时钟节拍。优选地,还包括:在所述实时操作系统进入休眠模式时,停止所述实时时钟作为实时操作系统Tick时钟源的应用;
在所述实时操作系统退出休眠模式时,使能所述实时时钟作为实时操作系统Tick时钟源的应用。本发明实施例还公开了一种实时操作系统Tick时钟的实现装置,包括:参数设置模块,用于初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;时钟获取模块,用于根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的系统Tick时钟节拍。优选地,所述时钟获取模块还用于:根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,获取所述实时时钟产生中断频率Ticks Frequency为:Ticks Frequency = (RTC clk/div) / counter (Hz);其中,RTC elk 为所述实时时钟频率,div为所述实时时钟的分频数,counter为所述实时时钟产生中断的计数值;根据所述实时时钟产生中断频率Ticks Frequency,获取所述实时时钟产生中断周期 Ticks cycle 为:Ticks cycle = 1/Ticks Frequency ;根据所述实时时钟产生中断频率Ticks Frequency和产生中断周期Ticks cycle,获取所述实时操作系统每秒钟的ticks数Ticks Num为:Ticks Num = 1/Ticks cycle = Ticks Frequency = (RTC clk/div) / counter ;根据所述实时操作系统每秒钟的ticks数Ticks Num,即可获取所述实时操作系统的系统Tick时钟节拍。优选地,所述时钟获取模块还用于:在所述实时操作系统进入休眠模式时,停止所述实时时钟作为实时操作系统Tick时钟源的应用;在所述实时操作系统退出休眠模式时,使能所述实时时钟作为实时操作系统Tick时钟源的应用。本发明通过初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的系统Tick时钟节拍的方法,实现了实时操作系统任务调度,具有能够获取稳定且功耗低的RTOS Tick时钟的有益效果,降低了耗电量且实现方式便捷,因摆脱了对systick timer和通用定时器的依赖,可移植性也更强。


图1是本发明系统时钟的实现方法一实施例流程示意图;图2是本发明系统时钟的实现装置一实施例功能模块示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施例方式以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
目前,采用RTC (Real-Time Clock,实时时钟)作为时间时钟源的具备多功能的电子产品,工作在不同功能模式时采用的系统时钟速率不同,在不同功能模式之间切换时,系统时钟就处在频繁的变频中,需要得到一个稳定的ticks,本发明实时操作系统时钟的实现方法及装置通过引进RTC的wakeup (唤醒)中断作为RTOS的ticks,即可达到较好的ticks稳定的目的。参照图1,图1是本发明实时操作系统时钟的实现方法一实施例流程示意图;如图1所示,本发明实时操作系统时钟的实现方法包括以下步骤:步骤S01、初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;本方案复用RTC,既采用RTC作为时间的时钟源,同时又采用RTC作为RTOS的Tick时钟源,因此在初始化RTC时,直接将RTC作为时间的时钟源,设定RTC的中断模式为wakeup中断,并设定RTC的分频数和产生wakeup中断的计数值。进一步地,设定在RTOS进入休眠模式时,停止RTC作为RTOS的Tick时钟源的应用;在RTOS退出休眠模式时,使能RTC作为RTOS的Tick时钟源的应用。步骤S02、根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的系统Tick时钟节拍。根据初始化时设定的RTC的分频数和计数值产生中断,调用RTOS的系统Tick时钟处理程序,设置所述RTC经所述分频和计数处理后的时钟作为RTOS的ticks。比如,具体地,可以在RTC的中断函数里,调用RTOS的系统Tick时钟处理程序SysTickHandler,设置所述实时操作系统的Tick时钟节拍,实现所述实时操作系统的任务调度。根据初始化时设定的时钟源的分频数和计数值产生中断,调用RTOS的系统Tick时钟处理程序,获取时钟源产生的中断频率Ticks Frequency为:Ticks Frequency = (RTC clk/div) / counter (Hz);其中,RTC clk 为 RTC 的频率,div为RTC的分频数,counter为RTC产生中断的计数值;根据RTC产生的中断频率Ticks Frequency,获取RTC产生的中断周期Tickscycle 为:Ticks cycle = 1/Ticks Frequency ;根据RTC产生中断频率Ticks Frequency和产生中断周期Ticks cycle,获取RTOS每秒钟的ticks数Ticks Num为:Ticks Num = 1/Ticks cycle = I/ (I/ Ticks Frequency)=Ticks Frequency = (RTC clk/div) / counter ;根据所述实时操作系统每秒钟的ticks数Ticks Num,即可获取所述实时操作系统的系统Tick时钟节拍。由上式“Ticks Num = (RTC clk/div)/ counter”可以得出,不管在电子产品的哪种工作模式下,当出现系统时钟变频时,由于RTC clk的值是不变的,div和counter的值在初始化时也已经设定为固定值,因此实时操作系统每秒钟的ticks数Ticks Num可达到恒定值;在Ticks Num恒定时,RTOS的Tick时钟也可达到恒定。进一步地,在调用实时操作系统的系统时钟处理程序,获取所述实时操作系统的系统时钟的过程中,因RTOS的时钟产生不用systick timer和通用定时器,所以在其他程序也不用该功能时,可以关掉,以达到节省电量的目的。
本实施例通过初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;根据所述分频数和计数值产生中断,调用实时操作系统的Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍的方法,实现了实时操作系统的任务调度,具有能够获取稳定且功耗低的RTOS Tick时钟的有益效果,降低了耗电量且实现方式便捷,因摆脱了对systick timer和通用定时器的依赖,可移植性也更强。参照图2,图2是本发明实时操作系统时钟的实现装置一实施例功能模块示意图。如图2所示,本发明实时操作系统时钟的实现装置包括:参数设置模块01和时钟获取模块02。参数设置模块01,用于初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;由于本方案复用RTC,既采用RTC作为时间的时钟源,同时又采用RTC作为RTOS的Tick时钟源,因此参数设置模块01在初始化RTC时,将RTC作为时间的时钟源,设定RTC的中断模式为wakeup中断,并设定RTC的分频数和产生wakeup中断的计数值。时钟获取模块02,用于根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的系统Tick时钟节拍。根据参数设置模块01初始化时设定的RTC的分频数和计数值,时钟获取模块02产生中断,调用RTOS的系统Tick时钟处理程序,设置所述RTC经所述分频和计数处理后的时钟作为RTOS的ticks。比如,具体地,时钟获取模块02在RTC的中断函数里,调用RTOS的系统Tick时钟处理程序SysTickHandler,设置所述实时操作系统的Tick时钟节拍,实现所述实时操作系统的任务调度。进一步地,时钟获取模块02设定在RTOS进入休眠模式时,停止RTC作为RTOS的Tick时钟源的应用;在RTOS退出休眠模式时,使能RTC作为RTOS的Tick时钟源的应用。时钟获取模块02根据初始化时设定的时钟源的分频数和计数值产生中断,调用RTOS的系统Tick时钟处理程序,获取时钟源产生的中断频率Ticks Frequency为:Ticks Frequency = (RTC clk/div) / counter (Hz);其中,RTC clk 为 RTC 的频率,div为RTC的分频数,counter为RTC产生中断的计数值;时钟获取模块02根据RTC产生的中断频率Ticks Frequency,获取RTC产生的中断周期Ticks cycle为:Ticks cycle = 1/Ticks Frequency ;时钟获取模块02根据RTC产生中断频率Ticks Frequency和产生中断周期Tickscycle,获取RTOS每秒钟的ticks数Ticks Num为:Ticks Num = 1/Ticks cycle = I/ (I/ Ticks Frequency)=Ticks Frequency = (RTC clk/div) / counter ;时钟获取模块02根据所述实时操作系统每秒钟的ticks数Ticks Num,即可获取所述实时操作系统的系统Tick时钟节拍。由上式“Ticks Num = (RTC clk/div)/ counter”可以得出,不管在电子产品的哪种工作模式下,当出现系统时钟变频时,由于RTC clk的值是不变的,div和counter的值在初始化时也已经设定为固定值,因此实时操作系统每秒钟的ticks数Ticks Num可达到恒定值;在Ticks Num恒定时,RTOS的Tick时钟也可达到恒定。
进一步地,时钟获取模块02在调用实时操作系统的系统时钟处理程序,获取所述实时操作系统的系统时钟的过程中,因RTOS的时钟产生不用systick timer和通用定时器,所以在其他程序也不用该功能时,可以关掉,以达到节省电量的有益效果。本实施例通过初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;根据所述分频数和计数值产生中断,调用实时操作系统的Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍,实现了实时操作系统的任务调度,具有能够获取稳定且功耗低的RTOS Tick时钟的有益效果,降低了耗电量且实现方式便捷,因摆脱了对systicktimer和通用定时器的依赖,可移植性也更强。以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种实时操作系统Tick时钟的实现方法,其特征在于,包括以下步骤: 初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值; 根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍,实现所述实时操作系统的任务调度。
2.如权利要求1所述的方法,其特征在于,所述根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍包括: 根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,获取所述实时时钟产生中断频率Ticks Frequency为: Ticks Frequency = (RTC clk/div) / counter (Hz);其中,RTC elk 为所述实时时钟频率,div为所述实时时钟的分频数,counter为所述实时时钟产生中断的计数值; 根据所述实时时钟产生中断频率Ticks Frequency,获取所述实时时钟产生中断周期Ticks cycle 为:Ticks cycle = 1/Ticks Fr equency ; 根据所述实时时钟产生中断频率Ticks Frequency和产生中断周期Ticks cycle,获取所述实时操作系统每秒钟的ticks数Ticks Num为:Ticks Num = 1/Ticks cycle = Ticks Frequency = (RTC clk/div) / counter ; 根据所述实时操作系统每秒钟的ticks数Ticks Num,即可获取所述实时操作系统的系统Tick时钟节拍。
3.如权利要求1所述的方法,其特征在于,还包括: 在所述实时操作系统进入休眠模式时,停止所述实时时钟作为实时操作系统Tick时钟源的应用; 在所述实时操作系统退出休眠模式时,使能所述实时时钟作为实时操作系统Tick时钟源的应用。
4.一种实时操作系统Tick时钟的实现装置,其特征在于,包括: 参数设置模块,用于初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值; 时钟获取模块,用于根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍。
5.如权利要求4所述的装置,其特征在于,所述时钟获取模块还用于: 根据所述分频数和计数值产生中断,调用实时操作系统的系统Tick时钟处理程序,获取所述实时时钟产生中断频率Ticks Frequency为: Ticks Frequency = (RTC clk/div) / counter (Hz);其中,RTC clk 为所述实时时钟频率,div为所述实时时钟的分频数,counter为所述实时时钟产生中断的计数值; 根据所述实时时钟产生中断频率Ticks Frequency,获取所述实时时钟产生中断周期Ticks cycle 为:Ticks cycle = 1/Ticks Frequency ; 根据所述实时时钟产生中断频率Ticks Frequency和产生中断周期Ticks cycle,获取所述实时操作系统每秒钟的ticks数Ticks Num为:Ticks Num = 1/Ticks cycle = Ticks Frequency = (RTC clk/div) / counter ;根据所述实时操作系统每秒钟的ticks数Ticks Num,即可获取所述实时操作系统的系统Tick时钟节拍。
6.如权利要求5所述的装置,其特征在于,所述时钟获取模块还用于: 在所述实时操作系统进入休眠模式时,停止所述实时时钟作为实时操作系统Tick时钟源的应用; 在所述实时操作系统退出休眠模式时,使能所述实时时钟作为实时操作系统Tick时钟源的应 用。
全文摘要
本发明公开一种实时操作系统Tick时钟的实现方法,该方法包括以下步骤初始化实时时钟,设定所述实时时钟的分频数和产生中断的计数值;根据所述分频数和计数值产生中断,调用实时操作系统的Tick时钟处理程序,设置所述实时操作系统的Tick时钟节拍,实现所述实时操作系统的任务调度;本发明还公开一种系统时钟的实现装置。本发明通过复用实时时钟,并通过引进实时时钟的唤醒中断作为实时操作系统Tick的方法,具有能够获取稳定且功耗低的RTOS Tick时钟的有益效果,降低了耗电量且实现方式便捷,因摆脱了对systick timer和通用定时器的依赖,可移植性也更强。
文档编号G06F9/48GK103176841SQ201310071490
公开日2013年6月26日 申请日期2013年3月6日 优先权日2013年3月6日
发明者陈柳章 申请人:深圳市文鼎创数据科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1