嵌入式系统软件扩展定时器的方法

文档序号:6634189阅读:418来源:国知局
嵌入式系统软件扩展定时器的方法
【专利摘要】本发明涉及一种嵌入式系统软件扩展定时器的方法,根据任务定时时间设置硬件定时器精度,所设硬件定时器精度被所述任务所需定时时间整除;建立一个全局软件定时器数组,数组的长度等于所需软件定时器的个数;初始化全局软件定时器数组为负值;当任务需要开启软件定时器时,根据任务定时时间、硬件定时器精度计算定时值;在硬件定时器响应函数内对数组元素值进行判断,如果数组元素值为负值,不执行任何操作;如果数组元素值为0,则任务定时时间到,执行定时操作且对数组元素值执行减一操作;如果数组元素值为正值,对数组元素值执行减一操作。本发明优点在于占用内存少,结构易实现,特别适用于无操作系统中、小型嵌入式系统软件。
【专利说明】嵌入式系统软件扩展定时器的方法

【技术领域】
[0001]本发明涉及一种用于实现无操作系统中嵌入式系统软件扩展定时器的方法。

【背景技术】
[0002]在嵌入式系统中,通常同时有多个任务需要开启定时器,而嵌入式系统硬件定时器资源有限,尤其对于单片机、微处理器80386等0^硬件定时器资源相当有限,在这种情况下如何软件扩展定时器就显得极为重要。
[0003]目前软件扩展定时器多采用队列方式,队列扩展又分为单队列和多队列。单队列定时器将定时器按定时时长从小到大排序,增加定时器时插入队列相应位置。多队列方式根据不同的定时精度设置多个队列,轮询检测每个队列中的定时器。单队列方式需对每个定时器设置定时器节点,而对于无操作系统小规模嵌入式系统软件来说,队列和节点结构操作实现较为复杂。多队列不但需要设置定时器节点,而且需要对多个队列轮询,占用内存且结构复杂,更不适合小规模嵌入式系统。


【发明内容】

[0004]本发明目的在于提供一种适合无操作系统的嵌入式系统软件扩展定时器的方法。
[0005]为实现上述目的,本发明采取下述技术方案:
本发明所述嵌入式系统软件扩展定时器的方法,按照下述步骤进行:
第一步、根据任务定时时间设置硬件定时器精度,所设硬件定时器精度被所述任务所需定时时间整除;
第二步、建立一个全局软件定时器数组,所述全局软件定时器数组的长度等于所需软件定时器的个数;
第三步、初始化全局软件定时器数组为负值;
第四步、当所述任务需要开启软件定时器时,根据所述任务定时时间以及硬件定时器精度计算定时值,并将所计算定时值赋值给所述任务对应的数组元素;定时值计算公式如下:
定时值=定时时间/硬件定时器精度一 1 ;
第五步、在所述硬件定时器响应函数内对全局软件定时器数组元素值进行判断,如果全局软件定时器数组元素值为负值,不执行任何操作;如果全局软件定时器数组元素值为0,则所述任务定时时间到,执行定时操作,且对全局软件定时器数组元素值执行减一操作;如果全局软件定时器数组元素值为正值,对全局软件定时器数组元素值执行减一操作。
[0006]本发明优点在于采用建立一定时器数组,对定时器数组元素设置定时值,通过每次操作定时器数组的方法实现软件扩展定时器。因此,本发明所需资源少,占用内存少,结构易实现,特别适用于无操作系统中、小型嵌入式系统软件。

【专利附图】

【附图说明】
[0007]图1是本发明硬件定时器中断函数流程图。
[0008]图2是本发明所述任务开启软件定时器流程图。

【具体实施方式】
[0009]如图1、2所示,为进一步说明本发明的软件扩展定时器方法,下面结合具体实施例加以描述:
第一步、根据任务定时时间设置硬件定时器精度,所设硬件定时器精度可以被任务所需定时时间整除;
第二步、建立一个全局软件定时器数组,该数组的长度等于所需软件定时器的个数; 第三步、初始化软件定时器数组为负值;
假设共有十个任务需要软件定时器,所需定时时间分别为乂01118、乂11118、乂21118、^31118,^41118 ? ^51118 ? ^61118 ? ^71118 ? ^81118 ? ^91118 ;则硬件定时器精度可设置为11118,全局软件定时器数组长度0〔10〕长度为10,并将0 [10]初始化为-1 ;
第四步、当任务需要开启软件定时器时,根据任务定时时间以及硬件定时器精度计算定时值,并将所计算定时值赋值给任务对应的数组元素,定时值计算公式如下:
定时值=定时时间/定时器精度一 1 ;
第五步、假设任务0需要开启软件定时器,定时时间为则根据计算公式计算得到:
定时值=101118/11118-1=9 ;
假设任务0对应数组元素0 [0],则0 [0] =9 ;
在硬件定时器响应函数内对数组元素值进行判断,如果数组元素值为负值,不执行任何操作;如果数组元素值为0,则相应任务定时时间到,执行定时操作,且对数组元素值执行减一操作;如果数组元素值为正值,对数组元素值执行减一操作。
【权利要求】
1.一种嵌入式系统软件扩展定时器的方法,其特征在于:按照下述步骤进行: 第一步、根据任务定时时间设置硬件定时器精度,所设硬件定时器精度被所述任务所需定时时间整除; 第二步、建立一个全局软件定时器数组,所述全局软件定时器数组的长度等于所需软件定时器的个数; 第三步、初始化全局软件定时器数组为负值; 第四步、当所述任务需要开启软件定时器时,根据所述任务定时时间以及硬件定时器精度计算定时值,并将所计算定时值赋值给所述任务对应的数组元素;定时值计算公式如下: 定时值=定时时间/硬件定时器精度一I; 第五步、在所述硬件定时器响应函数内对全局软件定时器数组元素值进行判断,如果全局软件定时器数组元素值为负值,不执行任何操作;如果全局软件定时器数组元素值为O,则所述任务定时时间到,执行定时操作,且对全局软件定时器数组元素值执行减一操作;如果全局软件定时器数组元素值为正值,对全局软件定时器数组元素值执行减一操作。
【文档编号】G06F9/44GK104391702SQ201410645245
【公开日】2015年3月4日 申请日期:2014年11月15日 优先权日:2014年11月15日
【发明者】吴华娟, 王小坡 申请人:郑州飞机装备有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1