一种定时器及其实现方法

文档序号:6464563阅读:130来源:国知局

专利名称::一种定时器及其实现方法
技术领域
:本发明主要涉及计算机领域,尤其涉及一种定时器及其实现方法。背景4支术定时器,作为计算机系统中的重要组成部分,被广泛地使用。通过定时器的定时操作,从而使计算机系统能够精确并有条不紊地执行每一项任务。定时器主要包括计时单元和计数单元两部分。对于计时单元,一般包括位数为8位、16位或32位的计时单元,设计人员根据实际需要选择相应位数的计时单元,同时设定计时单位时长,即定时周期T。定时周期T作为计算机系统中累加指令的机器周期,由计算机系统中的微控制器(MCU,MicroControlUnit)的晶振频率决定,现有的很多微控制器如单片机等都有预定的晶振频率,但晶振频率远远高于计算机系统的实际工作频率,因此,需要通过对晶振频率进行适当分频来实现对定时周期T的设定,例如,对晶振频率进行1/2或1/4分频。对于计数单元,设计人员根据预定定时时间t设计计数单元的最大计数次数n。当定时器^^皮启动后,计数器从初值"0"开始计数,由于计数过程中的每一次加1操作都需要占用一个定时周期T,因此,当计数器计数次数达到最大计时次数n次时,即预定定时时间t等于计时时间nx丁时,触发中断执行在该时间点的任务。在单片机中,常采用8位、16位或32位的寄存器来设计定时器,通过寄存器的溢出实现定时功能。也就是说,定时器被启动后,其计数数值从初值"0"不断执行加l操作,当累计的数值导致寄存器的存储单元溢出时,触发中断执行在该时间点的任务。例如,在16位的定时器中,当计数单元变成二进制数0xFFFF时,此时并不产生中断,而在下一次计数加1完成时,由于该次计数加1导致定时器的存储单元溢出,从而触发中断执行在该时间点的任务。现有技术中,常常在计算机系统中设定多个定时器来控制管理多个任务的执行。例如,根据任务执行时间点的不同在计算机系统中设定多个具有不同定时周期和最大计时次数的定时器。这种计算机系统,由于多个定时器的使用,不仅占用了较大的系统资源,而且执行效率相对较低,另外,增加了定时器在测试和维护方面的难度。
发明内容有鉴于此,本发明的目的在于提供一种定时器及其实现方法,达到通过一个定时器对系统中多个任务的执行进行合理有序管理的目的。根据本发明的一方面,提供了一种定时器,应用于包括多个任务的系统,包括设定单元,用于设定所述多个任务的定时时间和计时起点;计时单元,用于根据所述定时时间设定定时周期;计数单元,用于才艮据所述定时时间和所述定时周期设定最大计时次数,并根据所述计时起点进行计数,在所述定时时间结束时,发送任务执行消息;执行单元,用于接收所述任务执行消息,并根据所述任务执行消息以预定方式触发执行与所述任务执行消息对应的任务。按照本发明的一种特征,所述设定单元将初始时间点设定为所述计时起点。按照本发明的另一种特征,所述多个任务至少包括当前任务和与当前任务相邻的前一任务;所述设定单元将所述与当前任务相邻的前一任务的触发时间点设定为所述当前任务的所述计时起点。按照本发明的另一种特征,所述计数单元根据所述多个任务的所述定时时间计算最大公约数,将所述最大公约数设定为所述定时周期。按照本发明的另一种特征,所述预定方式为指针方式。根据本发明的另一方面,提供了一种定时器的实现方法,应用于包括多个任务的系统包括设定所述多个任务的定时时间和计时起点;根据所述定时时间设定定时周期;根据所述定时时间和所述定时周期设定最大计时次数,并根据所述计时起点进行计数,在所述定时时间结束时,发送任务执行消息。接收所述任务执行消息,并根据所述任务执行消息触发执行与所述任务执行消息对应的任务。按照本发明的一种特征,所述设定多个任务的计时起点为将初始时间点设定为所述计时起点。按照本发明的另一种特征,所述多个任务至少包括当前任务和与当前任务相邻的前一任务;所述设定多个任务的计时起点为将所述与当前任务相邻的前一任务的触发时间点设定为所述当前任务的所述计时起点。按照本发明的另一种特征,所述根据多个任务的定时时间设定定时周期为根据所述多个任务的所述定时时间计算最大公约数,将所述最大公约数设定为所述定时周期。按照本发明的另一种特征,所述预定方式为指针方式。本发明实施例所述的定时器及其实现方法,仅通过一个定时器就实现对系统中多个任务的执行进行合理有序的管理,减少了对系统资源的占用,提高了系统执行效率,降低了对定时器进行测试和维护方面的难度。图1为本发明第一具体实施例中定时器1的结构框图2为本发明第一具体实施例中定时器1的实现方法的流程图3为本发明第二具体实施例中定时器3的结构框图4为本发明第二具体实施例中定时器3的实现方法的流程图。具体实施例方式下面结合附图详细描述本发明的具体实施例。图1为本发明第一具体实施例中定时器1的结构框图。图1中,定时器1包括设定单元101、计时单元102、计数单元103和执行单元104,其中,设定单元101,用于根据系统需要设定多个任务的定时时间和计时起点。设定单元101将初始时间点设定为当前任务的计时起点,通过建立任务时间表来管理系统中需要执行的每项任务。如表1所示,任务名称定时时间计时起点第一任务50毫秒4刀始时间点笫二任务150毫秒初始时间点第三任务IOO毫秒初始时间点第四任务200毫秒4刀始时间点表1表l中的三个重要组成部分分别为任务名称、计时起点和定时时间,具体叙述如下当前系统包括四个任务第一任务、第二任务、第三任务、第四任务。这四个任务需要经过不同的定时时间来触发执行,具体触发执行过程为以初始时间点为计时起点,每经过50毫秒的定时时间后,触发执行一次第一任务;以初始时间点为计时起点,每经过150毫秒的定时时间后,触发执行一次第二任务;以初始时间点为计时起点,每经过ioo毫秒的定时时间后,触发执行一次第三任务;以初始时间点为计时起点,每经过200毫秒的定时时间后,触发执行一次第四任务。计时单元102,用于根据多个任务的定时时间设定定时周期。7例如,由于在设定单元101创建的任务时间表中,第一任务的定时时间为50毫秒,第二任务的定时时间为150毫秒,第三任务的定时时间为100毫秒,第四任务的定时时间为200毫秒,因此,上述四个任务的定时时间的最大公约凌史50毫秒即为该计时单元102的定时周期。通常,设计人员根据需要对定时器的定时周期进行设定,在本实施例中,只需要将定时器的定时周期设定为50毫秒,即定时器每隔50毫秒将触发一次中断以执行相应的任务。当然也不排除设计人员根据系统中执行多个任务所需的不同定时时间选择相应的定时周期来设计定时器。例如,对于系统中多个任务的定时时间分别为50毫秒、60毫秒、70毫秒、80毫秒时,由于50毫秒、60毫秒、70毫秒、80毫秒的最大公约数为IO毫秒,因此,设计人员则需要选择定时周期为IO毫秒的定时器。计数单元103,用于才艮据多个任务的定时时间和定时周期设定最大计时次数并根据设定的计时起点进行计数,在定时时间结束时,即当计数次数达到最大计时次数时,发送任务执行消息。计数单元103根据设定单元101建立的任务时间表和计时单元102设定的定时周期,得出多个任务的最大计时次数。例如,对于上述系统的四个任务,其中,计数单元103以执行第四任务的触发时间点为计数起点进行计数,当计数次数达到4时,即经过200毫秒后,发送第一任务才丸行消息;计数单元103以执行第一任务的触发时间点为计数起点进行计数,当计数次数达到l时,即经过50毫秒后,发送第二任务执行消息;计数单元103以执行第二任务的触发时间点为计数起点进行计数,当计数次数达到3时,即经过150毫秒后,发送第三任务执行消息;计数单元103以执行第三任务的触发时间点为计数起点进行计数,当计数次数达到2时,即经过100毫秒后,发送第四任务才丸行消息。执行单元104,用于接收计数单元103发送的任务执行消息,根据该任务执行消息触发执行与该任务执行消息对应的任务。例如,执行单元104根据第一任务执行消息触发执行第一任务;执行单元104根据第二任务执行消息触发执行第二任务;执行单元104根据第三任务执行消息触发执行第三任务;执行单元104根据第四任务执行消息触发执行第四任务。对于任务的执行,可以采用多种方式,例如,定时器在定时时间结束时,以任务指针的方式触发中断通知处理器执行与该定时时间对应的任务。图2为本发明第一具体实施例中定时器1的实现方法的流程图,具体实施步骤如下步骤201,根据系统需要设定多个任务的定时时间和计时起点,进入步骤202。该步骤中,通过建立任务时间表来管理系统中需要执行的每项任务。该任务时间表包括任务名称、计时起点和定时时间,其中,将初始时间点设定为当前任务的计时起点。例如,当前系统包括四个任务第一任务、第二任务、第三任务、第四任务。这四个任务需要经过不同的定时时间来触发执行,具体触发执行过程为以初始时间点为计时起点,每经过50毫秒的定时时间后,触发l丸行一次第一任务;以初始时间点为计时起点,每经过150毫秒的定时时间后,触发执行一次第二任务;以初始时间点为计时起点,每经过100毫秒的定时时间后,触发执行一次第三任务;以初始时间点为计时起点,每经过200毫秒的定时时间后,触发执行一次第四任务。步骤202,根据多个任务的定时时间设定定时周期,进入步骤203。例如,由于步骤201的任务时间表中,第一任务的定时时间为50毫秒,第二任务的定时时间为150毫秒,第三任务的定时时间为100毫秒,第四任务的定时时间为200毫秒,因此,上述四个任务的定时时间的最大公约数50毫秒即为定时周期。通常,设计人员根据需要对定时器的定时周期进行设定,在本实施例中,只需要将定时器的定时周期设定为50毫秒,即定时器每隔50毫秒将触发一次中断以执行相应的任务。当然也不排除设计人员根据系统中执行多个任务所需的不同定时时间选择相应的定时周期来设计定时器。例如,对于系统中多个任务的定时时间分别为50毫秒、60毫秒、70毫秒、80毫秒时,由于50毫秒、60毫秒、70毫秒、80毫秒的最大公约数为IO毫秒,因此,设计人员则需要选择定时周期为10毫秒的定时器。步骤203,根据多个任务的定时时间和定时周期设定最大计时次数并根据设定的计时起点进行计数,在定时时间结束时,即当计数次数达到最大计时次数时,发送任务执行消息,进入步骤204。例如,对于上述系统的四个任务,其中,以执行第四任务的触发时间点为计数起点进行计数,当计数次数达到4时,即经过200毫秒后,发送第一任务执行消息;以执行第一任务的触发时间点为计数起点进行计数,当计数次数达到1时,即经过50毫秒后,发送第二任务执行消息;以执行第二任务的触发时间点为计数起点进行计数,当计数次数达到3时,即经过150毫秒后,发送第三任务执行消息;以执行第三任务的触发时间点为计数起点进行计数,当计数次数达到2时,即经过100毫秒后,发送第四任务执行消息。步骤204,接收任务执行消息,根据该任务执行消息触发执行与该任务执行消息对应的任务。例如,根据第一任务执行消息触发执行第一任务;根据第二任务执行消息触发执行第二任务;根据第三任务执行消息触发执行第三任务;根据第四任务执行消息触发执行第四任务。本发明第一实施例的技术方案虽然仅描述了包括四个不同任务的系统,50毫秒的定时周期、时间长度分别为50毫秒、150毫秒、100毫秒、200毫秒的定时时间,但并不意味本发明仅限于此,设计人员可以根据本发明第一实施例的技术方案,针对包括多个不同任务的系统,根据系统需要,对定时器进行设定,从而通过一个定时器对系统中的多个任务的执行进行管理。图3为本发明第二具体实施例中定时器3的结构框图。图3中,定时器3包括设定单元301、计时单元302、计数单元303和执行单元304,其中,设定单元301,用于根据系统需要设定多个任务的定时时间和计时起点。其中,系统中的多个任务至少包括当前任务和与当前任务相邻的前一任务;设定单元301将与当前任务相邻的前一任务的触发时间点设定为当前任务的计时起点。设定单元301可以通过建立任务时间表来管理系统中需要执行的每项任务。如表2所示,<table>tableseeoriginaldocumentpage11</column></row><table>表2表2中的三个重要组成部分分别为任务名称、计时起点和定时时间,具体叙述如下当前系统包括四个任务第一任务、第二任务、第三任务、第四任务。这四个任务需要经过不同的定时时间来触发执行,具体触发执行过程为对于第一任务,在系统刚启动时,以初始时间点为计时起点;在系统中的四个任务都被执行一次后,则以触发执行第四任务的时间点为计时起点,经过200毫秒的定时时间后,触发执行第一任务。对于第二任务,以触发执行第一任务的时间点为计时起点,经过50毫秒的定时时间后,触发执行第二任务;对于第三任务,以触发执行第二任务的时间点为计时起点,经过150毫秒的定时时间后,触发执行第三任务;对于第四任务,以触发执行第三任务的时间点为计时起点,经过100毫秒的定时时间后,触发执行第四任务。系统按照上述方式循环往复执行上述四个任务。计时单元302,用于根据多个任务的定时时间设定定时周期。例如,由于在上述任务时间表中,触发执行第一任务的定时时间为200毫秒,触发执行第二任务的定时时间为50毫秒,触发执行第三任务的定时时间为150毫秒,触发执行第四任务的定时时间为100毫秒,因此,上述四个任务的定时时间的最大公约数50毫秒即为该计时单元302的定时周期。通常,设计人员根据需要对定时器的定时周期进行设定,在本实施例中,只需要将定时器的定时周期设定为50毫秒,即定时器每隔50毫秒将触发一次中断以执行相应的任务。当然也不排除设计人员根据系统中执行多个任务所需的不同定时时间选择相应的定时周期来设计定时器。例如,对于系统中多个任务的定时时间分別为50毫秒、60毫秒、70毫秒、80毫秒时,由于50毫秒、60毫秒、70毫秒、80毫秒的最大公约数为IO毫秒,因此,设计人员则需要选择定时周期为10毫秒的定时器。计数单元303,用于根据多个任务的定时时间和定时周期设定最大计时次数并根据设定的计时起点进行计数,在定时时间结束时,即当计数次数达到最大计时次数时,发送任务执行消息并对计数次数执行清零。计数单元303根据设定单元301建立的任务时间表和计时单元302设定的定时周期,得出多个任务的最大计时次数。例如,对于上述系统的四个任务,其中,第一任务的最大计时次数为4,第二任务的最大计时次数为1,第三任务的最大计时次数为3,第四任务的最大计时次数为2。计数单元303以执行第四任务的触发时间点为计数起点进行计数,当计数次数达到4时,即经过200毫秒后,发送第一任务执行消息;计数单元303以执行第一任务的触发时间点为计数起点进行计数,当计数次数达到1时,即经过50毫秒后,发送第二任务执行消息;计数单元303以执行第二任务的触发时间点为计数起点进行计数,当计数次数达到3时,即经过150毫秒后,发送第三任务执行消息;计数单元303以执行第三任务的触发时间点为计数起点进行计数,当计数次数达到2时,即经过100毫秒后,发送第四任务执行消息。执行单元304,用于接收计数单元303发送的任务执行消息,根据该任务执行消息触发执行与该任务执行消息对应的任务。例如,执行单元304根据第一任务执行消息触发执行第一任务;执行单元304根据第二任务执行消息触发执行第二任务;执行单元304根据第三任务执行消息触发执行第三任务;执行单元304根据第四任务执行消息触发执行第四任务。对于上述系统中各项任务的执行,可以采用多种方式,例如,定时器在定时时间结束时,以任务指针的方式触发中断通知处理器执行与该定时时间对应的任务。在实际工作过程中,每项任务都是一个函数,而每个函数都对应一个入口地址,通过将与多项任务分别——对应的多个入口地址设计在一个数组中,当定时器在定时时间结束时,定时器通过指针跳转找到需要触发执行的任务的入口地址,根据入口地址指针触发终端通知处理器执行与该入口地址对应的任务。图4为本发明第二具体实施例中定时器3的实现方法的流程图,具体实施步骤如下步骤401,根据系统需要设定多个任务的定时时间和计时起点,进入步骤402。该步骤中,通过建立任务时间表来管理系统中需要执行的每项任务。该任务时间表包括任务名称、定时时间和计时起点,其中,系统中的多个任务至少包括当前任务和与当前任务相邻的前一任务;将与当前任务相邻的前一任务的触发时间点设定为当前任务的计时起点。当前系统包括四个任务第一任务、第二任务、第三任务、第四任务。这四个任务需要经过不同的定时时间来触发执行,具体触发执行过程为对于第一任务,在系统刚启动时,以初始时间点为计时起点;在系统中的四个任务都被执行一次后,则以触发执行第四任务的时间点为计时起点,经过200毫秒的定时时间后,触发执行第一任务。对于第二任务,以触发执行第一任务的时间点为计时起点,经过50毫秒的定时时间后,触发执行第二任务;对于第三任务,以触发执行第二任务的时间点为计时起点,经过150毫秒的定时时间后,触发执行第三任务;对于第四任务,以触发执行第三任务的时间点为计时起点,经过100毫秒的定时时间后,触发执行第四任务。系统按照上述方式循环往复执行上述四个任务。步骤402,根据多个任务的定时时间设定定时周期,进入步骤403。例如,由于在步骤401中的任务时间表中,触发执行第一任务的定时时间为200毫秒,触发执行第二任务的定时时间为50毫秒,触发执行第三任务的定时时间为150毫秒,触发执行第四任务的定时时间为100毫秒,因此,上述四个任务的定时时间的最大公约数50毫秒即定时周期。通常,设计人员根据需要对定时器的定时周期进行设定,在本实施例中,只需要将定时器的定时周期设定为50毫秒,即定时器每隔50毫秒将触发一次中断以执行相应的任务。当然也不排除设计人员根据系统中执行多个任务所需的不同定时时间选择相应的定时周期来设计定时器。例如,对于系统中多个任务的定时时间分别为50毫秒、60毫秒、70毫秒、80毫秒时,由于50毫秒、60毫秒、70毫秒、80亳秒的最大公约数为IO毫秒,因此,设计人员则需要选择定时周期为IO毫秒的定时器。步骤403,根据多个任务的定时时间和定时周期设定最大计时次数并根据设定的计时起点进行计数,在定时时间结束时,即当计数次数达到最大计时次数时,发送任务执行消息并对计数次数执行清零。步骤404,接收任务执行消息,根据该任务执行消息触发执行与该任务执行消息对应的任务。例如,根据第一任务执行消息触发执行第一任务;根据第二任务执行消息触发执行第二任务;根据第三任务执行消息触发执行第三任务;根据第四任务执行消息触发执行第四任务。本发明第二具体实施例的技术方案虽然仅描述了包括四个不同任务的系统,50毫秒的定时周期、时间长度分别为50毫秒、150毫秒、100毫秒、200毫秒的定时时间,但并不意味本发明仅限于此,设计人员可以根据本发明第二实施例的技术方案,针对包括多个不同任务的系统,根据系统需要,对定时器进行设定,从而通过一个定时器对系统中的多个任务的执行进行管理。本发明的第一、第二具体实施例中的计数单元通过设定最大计数次数,以加l操作判断是否达到最大计数次数来发送任务执行消息,当然也可以通过设定最大计数次数,釆用减1操作判断计数次数是否已经减到0来发送任务执行消息。本发明实施例中的定时器不但可以是硬件形式的定时器还可以是软件形式的定时器,定时器的功能和类型可以根据需要进行设计,如具有线程功能的线性定时器,具有循环功能的循环定时器,具有条件触发功能的条件定时器等。本发明实施例所述的定时器及其实现方法,仅通过一个定时器实现对系统中多个任务的执行进行合理有序的管理,减少对系统资源的占用,提高系统执行效率,降低了对定时器进行测试和维护方面的难度。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1.一种定时器,应用于包括多个任务的系统,其特征在于,包括设定单元,用于设定所述多个任务的定时时间和计时起点;计时单元,用于根据所述定时时间设定定时周期;计数单元,用于根据所述定时时间和所述定时周期设定最大计时次数,并根据所述计时起点进行计数,在所述定时时间结束时,发送任务执行消息;执行单元,用于接收所述任务执行消息,并根据所述任务执行消息以预定方式触发执行与所述任务执行消息对应的任务。2.根据权利要求1所述的定时器,其特征在于,所述设定单元将初始时间点设定为所述计时起点。3.根据权利要求1所述的定时器,其特征在于,所述多个任务至少包括当前任务和与当前任务相邻的前一任务;所述设定单元将所述与当前任务相邻的前一任务的触发时间点设定为所述当前任务的所述计时起点。4.根据权利要求1所述的定时器,其特征在于,所述计数单元根据所述多个任务的所述定时时间计算最大公约数,将所述最大公约数设定为所述定时周期。5.根据权利要求1所述的定时器,其特征在于,所述预定方式为指针方式,其中,所述执行单元通过指针跳转找到与所述任务执行消息对应的任务的入口地址,根据入口地址指针触发中断执行与该入口地址对应的任务。6.—种定时器的实现方法,应用于包括多个任务的系统,其特征在于,包括设定所述多个任务的定时时间和计时起点;根据所述定时时间设定定时周期;根据所述定时时间和所述定时周期设定最大计时次数,并根据所述计时起点进行计数,在所述定时时间结束时,发送任务执行消息;接收所述任务执行消息,并根据所述任务执行消息触发执行与所述任务执行消息对应的任务。7.根据权利要求6所述的方法,其特征在于,所述设定多个任务的计时起点为将初始时间点设定为所述计时起点。8.根据权利要求6所述的方法,其特征在于,所述多个任务至少包括当前任务和与当前任务相邻的前一任务;所述设定多个任务的计时起点为将所述与当前任务相邻的前一任务的触发时间点设定为所述当前任务的所述计时起点。9.根据权利要求6所述的方法,其特征在于,所述根据多个任务的定时时间设定定时周期为根据所述多个任务的所述定时时间计算最大公约数,将所述最大公约数设定为所述定时周期。10.根据权利要求6所述的方法,其特征在于,所述预定方式为指针方式,其中,通过指针跳转找到与所述任务执行消息对应的任务的入口地址,根据入口地址指针触发中断执行与该入口地址对应的任务。全文摘要本发明提供了一种定时器及其实现方法,其应用于多任务系统中,该定时器包括设定单元,用于设定多个任务的定时时间和计时起点;计时单元,用于根据多个任务的定时时间设定定时周期;计数单元,用于根据多个任务的定时时间和定时周期设定最大计时次数,并根据计时起点进行计数,在定时时间结束时,发送任务执行消息;执行单元,用于接收任务执行消息,并根据任务执行消息以预定方式触发执行与任务执行消息对应的任务。本发明仅通过一个定时器实现对系统中多个任务的执行进行合理有序的管理,从而减少定时器对系统资源的占用,提高系统执行效率,降低对定时器进行测试和维护方面的难度。文档编号G06F9/46GK101320337SQ20081011674公开日2008年12月10日申请日期2008年7月16日优先权日2008年7月16日发明者国艾申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1