CN114090215A - 一种任务处理的方法及相关设备 - Google Patents
一种任务处理的方法及相关设备 Download PDFInfo
- Publication number
- CN114090215A CN114090215A CN202111426409.6A CN202111426409A CN114090215A CN 114090215 A CN114090215 A CN 114090215A CN 202111426409 A CN202111426409 A CN 202111426409A CN 114090215 A CN114090215 A CN 114090215A
- Authority
- CN
- China
- Prior art keywords
- task
- delay
- interrupt
- processing
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种任务处理的方法及相关设备,包括:确定待处理的第一任务;根据所述第一任务确定目标延时;处理所述第一任务,启动延时计时和中断;进入中断,处理第二任务并停止处理所述第一任务;在第二任务处理完毕时,判断是否满足第一任务延时处理条件;若满足,则继续进入中断,处理第三任务并停止处理所述第一任务;若不满足,则继续处理所述第一任务并重新启动延时计时和中断。本申请能利用目标延时时长执行其余程序,解决程序的阻塞问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种任务处理的方法及相关设备。
背景技术
随着计算机网络的快速发展,电子设备的运用越来越普及,对计算机程序执行的性能效率的要求越来越高,通常执行计算机程序需要相应的时间,在执行计算机程序时,若出现程序的延时,会影响到后续程序的运行,传统的单片机延时算法一般都是通过配置寄存器、设置重装载值、设置计数方式等方法,等待计时达到设置的延时时间后结束退出,以达到延时效果,但是整个延时时长取决于延时函数的延时时间,程序进入延时函数时,在延时时长内,系统无法执行其余程序,受到了延时的影响,程序存在阻塞现象,处理任务的总效率低下。
发明内容
本申请实施例公开了一种任务处理的方法及相关设备,通过在延时函数中设置中断,解决了程序运行时的阻塞问题。
第一方面,本申请实施例提供了一种任务处理的方法,该方法包括:
确定待处理的第一任务;
根据所述第一任务确定目标延时;
处理所述第一任务,启动延时计时和中断;
进入中断,处理第二任务并停止处理所述第一任务;
在第二任务处理完毕时,判断是否满足第一任务延时处理条件;
若满足,则继续进入中断,处理第三任务并停止处理所述第一任务;
若不满足,则继续处理所述第一任务并重新启动延时计时和中断。
在上述方法中,根据第一任务确定目标延时,确定第一任务的程序的目标延时时长,在第一任务进入中断后,停止处理第一任务并开始处理第二任务,而不是等待第一任务的延时时长结束之后才开始处理第二任务,因此在未达到第一任务的延时处理条件时,在第一任务的目标延时时长内可进入多次中断,每一次中断都能执行一次任务,无需等待目标延时时长结束之后才能处理其余任务,可以尽早执行其余任务,因此,本申请能够在目标延时时长内执行其余任务,避免了等待延时时长结束才能执行其余任务,解决了程序造成的阻塞现象。
在第一方面的一种可能的实现方式中,在所述根据所述第一任务确定目标延时之前,该方法还包括:
获取待处理的全部任务类型和对应执行任务时长;
构建任务类型与对应执行任务时长的映射关系。
需要说明的是,获取在目标延时时长内可执行的全部任务类型和对应任务的执行时长,也就是获取目标延时时长内可执行的全部任务类型和执行每一次任务需要的时间。在上述方法中,根据确定的全部任务类型及其对应执行任务时长形成映射关系,从而在第一任务的目标延时时长内尽可能地执行更多的其余任务,让延时时长得到充分的利用。
在第一方面的又一种可能的实现方式中,所述进入中断,处理第二任务并停止处理所述第一任务,包括:
进入中断,确定待处理的第二任务和对应的执行任务时长;
判断所述第二任务的执行任务时长是否大于所述第一任务的目标延时的剩余延时;
若所述第二任务的执行任务时长小于或等于所述第一任务的目标延时的剩余延时,则处理第二任务并停止处理所述第一任务。
需要说明的是,在第一任务的目标延时时长内,每进入一次中断则执行一次任务,该任务对应的执行任务时长小于或等于目标延时的剩余延时,例如也就是说,在刚进入目标延时的中断执行第二任务时,第二任务的对应执行任务时长小于或等于目标延时时长(此时第一任务目标延时时长的剩余延时等于第一任务的目标延时时长),在执行完第二任务后,会有第二任务的延时时长,但此时可以进入中断,确定此时进入中断的执行的任务(例如第三任务),第三任务的对应执行时长应小于或等于第一任务的目标延时的剩余延时时长(进入第三任务的时间点与目标延时时长结束点之间的时间),若判断目标任务的对应执行时长大于第一任务的目标延时的剩余延时,则换取对应执行时长小于或等于目标延时的剩余延时的目标任务去执行。在上述方法中,选择执行对应执行时长小于或等于目标延时的剩余延时的任务类型,能保证任务类型在目标延时时长内执行,以防造成程序紊乱的现象出现。
在第一方面的又一种可能的实现方式中,所述第一任务延时处理条件包括:延时计时未达到所述目标延时。
在上述方法中,当中断的延时计时到达目标延时之后,停止执行其余任务类型,重新执行第一任务,也就是说,利用第一任务的目标延时时长执行其余任务类型,能够在目标延时时长结束时,结束执行其余任务,回到执行第一任务,保证了第一任务的执行不被其余任务打断。
在第一方面的又一种可能的实现方式中,所述中断的中断源包括外部中断,定时器中断或串行口中断。
需要说明的是,中断的中断源也可以是通过外部中断设置目标中断参数,例如周期性地上升沿触发或者下降沿触发,可以是定时器中断,例如可以是通过设定时钟周期计数,也可以是串口行中断,例如可以是发送一串数据触发中断,本申请在此对中断的方式不做限定。
第二方面,本申请实施例提供了一种任务处理的电子设备,该电子设备包括:
确定待处理的第一任务;
根据所述第一任务确定目标延时;
处理所述第一任务,启动延时计时和中断;
进入中断,处理第二任务并停止处理所述第一任务;
在第二任务处理完毕时,判断是否满足第一任务延时处理条件;
若满足,则继续进入中断,处理第三任务并停止处理所述第一任务;
若不满足,则继续处理第一任务并重新启动延时计时和中断。
可以看出,根据第一任务确定目标延时,确定第一任务的程序的目标延时时长,在第一任务进入中断后,停止处理第一任务并开始处理第二任务,而不是等待第一任务的延时时长结束之后才开始处理第二任务,因此在未达到第一任务的延时处理条件时,在第一任务的目标延时时长内可进入多次中断,每一次中断都能执行一次任务,无需等待目标延时时长结束之后才能处理其余任务,可以尽早执行其余任务,因此,本申请能够在目标延时时长内执行其余任务,避免了等待延时时长结束才能执行其余任务,解决了程序造成的阻塞现象。
在第二方面的一种可能的实现方式中,所述处理器还用于,在所述处理器在所述根据所述第一任务确定目标延时之前,
获取待处理的全部任务类型和对应执行任务时长;
构建任务类型与对应执行任务时长的映射关系。
需要说明的是,获取在目标延时时长内可执行的全部任务类型和对应任务的执行时长,也就是获取目标延时时长内可执行的全部任务类型和执行每一次任务需要的时间。在上述方法中,根据确定的全部任务类型及其对应执行任务时长形成映射关系,从而在第一任务的目标延时时长内尽可能地执行更多的其余任务,让延时时长得到充分的利用。
在第二方面的又一种可能的实现方式中,在所述进入中断,处理第二任务并停止处理所述第一任务方面,所述处理器用于:
进入中断,确定待处理的第二任务和对应的执行任务时长;
判断所述第二任务的执行任务时长是否大于所述第一任务的目标延时的剩余延时;
若所述第二任务的执行任务时长小于或等于所述第一任务的目标延时的剩余延时,则处理第二任务并停止处理所述第一任务。
需要说明的是,在第一任务的目标延时时长内,每进入一次中断则执行一次任务,该任务对应的执行任务时长小于或等于第一任务的目标延时的剩余延时,例如也就是说,在刚进入目标延时的中断执行第二任务时,第二任务的对应执行任务时长小于或等于目标延时时长(此时第一任务的目标延时时长等于第一任务目标延时时长的剩余延时),在执行完第二任务后,会有第二任务的延时时长,但此时可以进入中断,确定此时进入中断的执行的任务(例如第三任务),第三任务的对应执行时长应小于或等于第一任务的目标延时的剩余延时时长(进入第三任务的时间点与第一任务的目标延时时长结束点之间的时间),若判断目标任务的对应执行时长大于目标延时的剩余延时,则换取对应执行时长小于或等于目标延时的剩余延时的目标任务去执行。在上述方法中,选择执行对应执行时长小于或等于目标延时的剩余延时的任务类型,能保证任务类型在目标延时时长内执行,以防造成程序紊乱的现象出现。
第三方面,本申请实施例提供了一种计算机程序,在处理器上运行计算机程序时,其中,所述计算机程序为本申请实施例第一方面,或者第一方面的任意一种实现方式提供的基于任务处理方法中所描述的计算机程序。
第四方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,该计算机程序被处理器执行时,实现本申请实施例第一方面,或者第一方面的任意一种实现方式提供的任务处理的方法。
附图说明
以下对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种电子设备的结构示意图。
图2是本申请实施例提供的一种电子设备的结构示意图。
图3是本申请实施例提供的一种电子设备的结构示意图。
图4是本申请实施例提供的一种基于处理任务的方法的流程图。
图5是本申请实施例提供的一种任务执行的场景示意图。
图6是本申请实施例提供的一种任务执行的场景示意图。
图7是本申请实施例提供的一种定时器计时结构示意图。
图8是本申请实施例提供了一种寄存器结构示意图。
图9是本申请实施例提供了一种寄存器结构示意图。
图10是本申请实施例提供的一种定时器中断响应的场景示意图。
图11是本申请实施例提供的又一种基于定时器中断的延时方法的流程示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行更详细地描述。本申请实施例的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
请参见图1,图1是本申请实施例提供的一种电子设备的结构示意图,其中,该电子设备包括处理器101和存储器102,存储器102存储相关计算机程序,该处理器101需要执行主任务程序,例如第一任务,在执行第一任务时,第一任务存在目标延时时长,通常在目标延时时长结束之前,处理器无法执行任何任务,需要等待目标延时时长结束之后才能执行其余任务,整段延时时长没有被利用,造成系统的延时阻塞。
在此背景下,本申请实施例对电子设备10进行了改进,从而优化了延时函数的使用,具体来说,在延时函数中增加中断程序,例如可以为定时器中断、外部中断,串口行中断类型的中断,在电子设备10中增加中断设备201,请参见图2,图2为本申请实施例提供的一种电子设备的结构示意图,电子设备20包括处理器101、存储器102和中断设备201,在处理器101执行第一任务之后,在第一任务的目标延时时长内进入一次或多次中断,每一次中断可以执行根据第一任务确定的任务类型,例如第二任务,第三任务,第四任务等,通常第三任务或第四任务可以和第二任务相同,也可以为其余类型的任务,并且每执行一次中断之前,需要判断是否满足第一任务延时处理条件(即未到达目标延时时长),若满足条件,则可以继续进入中断处理根据第一任务确定的任务类型,若未满足,则停止处理其余任务,回到执行第一任务的程序。在目标延时时长内就能执行其余任务,无需等待目标延时结束才执行其余任务,
具体地,当电路板需要执行任务程序,例如手机的拍照程序、麦克风的音频信号采集程序等,这些任务程序在执行的过程中需要用到延时函数,此时假设第一任务为电路板向开发板发送低频信号,第二任务为开发板向传感器回复高频信号,通常在延时函数的目标延时时长未到达之前,该电路板无法接收到传感器(比如图像传感器、麦克风等)反馈的高频信号(第二任务),导致任务程序执行过程中的时延浪费。假设电路板执行的任务程序为手机拍照程序,手机中的电路板向传感器连续发送低频信号(第一任务),在延时函数的延时时长结束之后传感器才能回复电路板高频信号,导致目标延时时长造成浪费,在延时函数的延时时长内,任务程序受到阻塞。
假设第一任务为电路板向开发板发送低频信号,第二任务为开发板向传感器回复高频信号,对电子设备10进行改进,请参见图3所示,图3是本申请实施例提供的一种电子设备的结构示意图,该电子设备30包括电路板31和传感器32,其中,电路板31包括低频信号生成器301、低频信号发射器302、信号接收器303、中断设备304、处理器305,其中:低频信号生成器,具体可以为电路板中的基于单片机的函数信号生成器,用于生成低频信号,信号发射器,具体可以为电路板中的基于单片机的函数信号发射器,用于电路板31向传感器32发送低频信号,信号接收器,具体可以为蓝牙接收器,用于接收所述传感器发送的高频信号,处理器,具体可以为开发板的中央处理器,用于执行任务程序,例如第一任务或第二任务等。本申请实施例中,电路板31可以为开发板,或者线路板等电子元器件的连接载体。当电路板31向传感器32发送低频信号时,执行完发送低频信号这个任务之后会存在目标延时的时长,在目标延时时长内可以通过运行中断程序进入中断,执行传感器32向电路板31回复高频的任务,并且在回复高频信号之后,处理器能执行第三任务306,该第三任务306可以与传感器回复开发板高频信号的任务相同,也可以为其余任务,本申请在此不做限定。在延时函数的延时时长内传感器就能回复电路板高频信号,无需等待延时函数的延时时长结束再执行回复高频信号任务,解决了程序的阻塞问题。
请参见图4,图4是本申请实施例提供的一种基于处理任务的方法的流程图,该方法可以基于图2所示的电子设备20的结构图来实现,该方法包括但不限于如下步骤:
S401:确定待处理的第一任务。
第一任务可以是计算机程序中存在延时的任意任务,例如可以为电路板向传感器发送低频信号,也可以为基站收集用户的手机信号。
S402:根据第一任务确定目标延时。
处理器确定待处理的第一任务之后,获取第一任务的目标延时时长,不同的任务有对应不同的目标延时时长,例如第一任务为基站接收手机信号时,获取其目标延时的延时时长可以为60ms,第一任务为电路板向传感器发送低频信号时,获取其目标延时的延时时长可以为50ms。另外,在延时函数中设置中断程序,能利用目标延时执行其余类型的任务,通过控制中断的延时时长来确定延时函数的延时时长,在目标延时时长内,每进入一次中断能执行一次任务,通常中断的方式可以为定时器中断、外部中断、串口行中断,例如当中断方式为定时器中断时,若系统时钟的晶振频率Fosc=12MHz,则时钟周期T=1/12μs、机器周期T0=12*1/12=1ms,假设延时函数的延时时长H=50ms,在延时函数的目标延时时长内进入定时器中断的次数N=50/T0=50次,即当以时间间隔T0=1ms进入一次定时器中断时,在延时函数的延时时长50ms内,处理器能通过定时器在目标延时时长内进入中断的最大次数为50次。
在一些实施例中,第一任务的目标延时时长内处理的任务类型是根据第一任务确定的,不同的第一任务对应目标延时时长内处理的不同的任务类型。例如第一任务为电路板向传感器发送低频信号,此时目标延时时长内处理的第二任务可以为传感器向电路板反馈高频信号,第三任务也可以为传感器向电路板反馈高频信号,或者根据第一任务确定的其余任务类型。又例如第一任务为基站收集用户的手机信号,此时目标延时时长内处理的第二任务可以为用户的手机向基站发送定位信号,第三任务也可以为用户的手机向基站发送定位信号,或者可以为根据第一任务确定的其余任务类型,例如可以为用户的手机向基站发送蓝牙信号。目标延时时长内执行的任务数量不限于3个,本申请在此不做限定。
在一些实施例中,获取第一任务的目标延时时长内的其余任务类型时,同时获取其余任务类型的对应执行时长,构建任务类型、对应执行任务时长的映射关系,也就是说,确定目标延时时长内执行的任务类型其对应执行任务时长也随之确定。例如第一任务为电路板向传感器发送低频信号,此时目标延时时长内处理的第二任务可以为传感器向电路板发送高频信号,获取第二任务的对应执行时长可以为5ms,若第三任务也为传感器向电路板发送高频信号,获取第三任务的对应执行时长可以为5ms。也就是说,处理器根据第一任务确定其余任务的类型之后,能同时获取其余任务类型及其对应的执行时长。
需要说明的是,第二任务的总时长包括第二任务对应的执行任务时长及其第二任务的对应延时,由于第二任务在第一任务的目标延时时长内执行,在目标延时时长内能进入多次中断,在第二任务对应的执行时长结束后,能进入中断执行第三任务(而不是进入第二任务的延时),为了加以区别,因此在本申请实施例的叙述中不提及其余任务类型的延时,提及到其余任务类型对应的执行任务时长,例如第二任务对应的执行任务时长、第三任务对应的执行任务时长等。
在一些实施例中,根据任务类型确定进入任务时目标延时的剩余延时,目标延时的剩余延时即是开始执行任务的时间点到第一任务的目标延时结束的时间点之间的时间,例如目标延时时长为50ms,假设第二任务对应的执行任务时长为5ms,则第二任务的目标延时的剩余延时为50ms,在执行完第二任务后开始执行第三任务,该第三任务的目标剩余延时为45ms。
在一些实施例中,进入中断,选择执行第二任务,判断第二任务的对应的执行任务时长是否大于第一任务的目标延时的剩余延时,若第二任务的对应执行任务时长小于或等于第一任务的目标延时的剩余延时,则执行第二任务。也就是说,在进入任务(也就是进入一次中断)之前,将对应执行任务时长与第一任务的目标延时的剩余延时进行比较,执行的任务类型的对应执行任务时长应小于或等于目标延时的剩余延时。举例来说,如图5所示,图5是本申请实施例示出的一种任务执行的场景示意图,A点为目标延时进入一次中断执行第二任务的开始时间点,在进入A点时,将第二任务的对应执行任务时长与第一任务的目标延时的剩余延时(也就是目标延时时长)相比较,第二任务的对应执行任务时长的50ms等于第一任务的目标延时时长50ms,处理器在A点进入中断时判断第二任务可执行。又例如,如图6所示,图6是本申请实施例示出的一种任务执行的场景示意图。其中A点为目标延时进入一次中断执行第二任务的开始时间点,在进入A点时,将第二任务的对应执行任务时长与第一任务的目标延时的剩余延时(也就是目标延时时长)相比较,第二任务的对应执行任务时长20ms等于目标延时的剩余延时50ms,处理器判断第二任务可执行,在第二任务执行完毕之后进入B点,B点为进入第三任务开始的时间点,将第三任务的对应执行任务的时长与目标延时的剩余延时相比较,第三任务的对应执行任务时长的5ms小于第一任务的目标延时的剩余延时30ms,因此处理器判断第三任务可执行。也就是说,在每进入一次中断执行一次任务之前,需要将对应执行任务时长与第一任务的目标延时的剩余延时进行比较,执行的任务类型的对应执行任务时长应小于或等于目标延时的剩余延时,以防执行任务的对应执行任务时长大于目标延时的剩余时间造成程序紊乱。
S403:处理第一任务,启动延时计时和中断。
第一任务执行之后,对应确定第一任务存在的目标延时时长,目标延时时长为在延时函数内进入中断的延时时间之和,处理器处理第一任务,并启动延时计时和中断,第一任务的总时长包括执行第一任务的时长和目标延时时长,在目标延时时长内可以进入一次或多次中断,例如图5所示的在目标延时时长内50ms内在A点进入一次中断,进入一次中断执行第二任务,又例如图6所示的多次进入中断,也即目标延时时长50ms内的中断A、中断B、中断C、中断D、中断E等,进入中断的次数本申请在此不做限定。需要说明的是,在第一任务的总时长内,执行完第一任务之后,存在第一任务的目标延时时长,在目标延时时长内每进入一个中断,就执行一次其余任务,例如进入中断A则执行第二任务,在第二任务对应执行时长结束后,进入中断B则执行第三任务,依次类推。
S404:进入中断,处理第二任务并停止处理所述第一任务。
在进入目标延时时长后,相当于在延时函数中进行中断延时,此时停止处理第一任务,处理第一任务确定的其余任务类型,假设处理器为双核,在进入中断时,仍可以处理第一任务,因此在本实施例中,进入目标延时时长内停止处理第一任务,但在本申请中,第一任务可以执行也可以不执行,本申请在此不做限定。
在一些实施例中,进入中断的方式有多种,可以为定时器中断、外部中断、串口行中断。
在一些实施例中,假设第一任务为电路板向传感器发送低频信号,第二任务为传感器向开发板回复高频信号时,以中断为定时器中断为例,对目标延时时长内的中断和目标中断参数的设置进行说明。
举例来说,请参见图7所示,图7是本申请实施例提供的一种定时器计时结构示意图,计数器/定时器开关(counter/timer,C/T,或者称为定时器开关)用于选择定时器的工作模式,选择C/T 802置0,此时定时器选择系统时钟计时功能的12个时钟周期为1个机器周期,程序调用延时函数时将定时器T0的开定时器位TR0 902置1,此时定时器T0开始计时。
在一些实施例中,若系统时钟的晶振频率Fosc=12MHz,则时钟周期T=1/12μs、机器周期T0=12*1/12=1μs,假设执行如图6所示的第一任务,延时函数的延时时长H=50ms,在延时函数的延时时长内定时器的计数次数N=50*1000/T0=50000次,即当定时器的预设时间间隔为T0=1μs时,在第一任务的延时函数的目标延时时长50ms内,可以每经过1μs就能进入一次中断,在目标延时时长内能进行50000次中断,进入一次中断后就开始执行任务,在执行任务时不进入别的中断。举例来说,如图6所示,在目标延时时长50ms内能以1μs就能进入一次中断,一共能进入50000次中断,在A点进入第一次中断,执行第二任务,若第二任务对应的时延为20ms,则在执行第二任务时,不进入别的中断,当第二任务结束时,在B点判断是否进入第二次中断。可以看出,采用这种方式,能以一次机器周期进入一次中断,进入中断后执行其余任务,在执行其余任务时不进入别的中断,防止程序紊乱。
在一些实施例中,若系统时钟的晶振频率Fosc=12KHZ,则时钟周期T=1/12ms,机器周期T0=12*1/12=1ms,假设仍执行图6所示的第一任务,延时函数的延时时长H=50ms,在延时函数的延时时长内定时器的计数次数N=50/T0=50次,即当定时器的预设时间间隔为T0=1ms时,在延时函数的延时时长50ms内,可以每经过1ms就能进入一中断,在目标延时时长内能进行50次中断,但进入一次中断后就开始执行任务,在执行任务时不进入别的中断,原理与机器周期为1μs时类似,在此不再赘述。
在上述实施例中,如果延时函数要设置成毫秒级别的延时那么定时器中断设置成微秒进入一次,单位不同时第一任务的目标延时时长内的进入中断的次数的数量级较大(例如50000次中断),如果延时函数要设置成毫秒级别的延时那么定时器中断设置成毫秒进入一次,单位相同时第一任务的目标延时时长内的进入中断的次数的数量级较小(例如50次中断),本申请中若要求定时器进行较小频次的中断,则不需要在第一任务的目标延时时长内进行较大频次的中断,频繁地进入中断会对定时器造成磨损和耗能,因此通常选择延时函数的延时时长与定时器的计数时长单位相同时,延时时长内进入中断的次数较小,降低了定时器的损耗。例如也就是说,根据第一任务确定的其余任务类型及其对应执行任务时长确定出中断的频次,如果频次较低,则选择定时器进行频次较低的中断,设置频次较低的进入中断的次数。
S405:在第二任务处理完毕时,判断是否满足第一任务延时处理条件。
第一任务延时处理条件为延时计时未达到所述目标延时,也就是说,在目标延时时长内执行其余任务,目标延时时长结束时,停止执行其余任务。
可选地,根据第一任务确定全部任务类型、对应执行任务时长和第一任务的目标延时的剩余延时之后,定时器以一次机器周期进入中断的步骤如下,包括定时器计时的溢出过程的步骤和定时器中断的响应步骤:
请参见图8所示,图8是本申请实施例提供了一种寄存器结构示意图。定时器模式控制寄存器(Timer/Counter Mode Control Register,TMOD)的低四位控制定时器T0的工作,低四位中的M1803和M0804控制定时器的工作模式,假设选择M1=0、M0=1时的情况进行分析,此时定时器T0的工作模式为如图7所示的模式1的16位定时,此时C/T802控制定时器工作模式,选择当C/T置0时的定时器为计时模式,假设门控制GATE 801为0,请参见图9,图9是本申请实施例提供了一种寄存器结构示意图。此时仅由如图9所示的定时器控制寄存器(Timer Control Register,TCON)中的开定时器位TR0 902启动定时器T0,当TR0 902置1时表示定时器开始计时,定时器溢出标志位TF0 901为1时,表示定时器的计数时长达到延时函数的延时时长,此时定时器停止计时,目标延时时长结束,处理器停止处理其余任务,响应中断之后,开始处理第一任务,需要说明的是,此处的第一任务也可以为其余任务,可以不与第一任务相同。在本实施例中,确定目标延时时长结束并响应中断之后,开始处理的任务是第一任务。
下面对定时器计时到达延时时长的溢出过程进行步骤介绍:
具体地,定时器的计数次数计满到达延时时长的溢出过程,可以理解为目标延时时长结束停止执行其余任务的过程。请参见图7所示,此时定时器的工作模式为模式1的16位定时,TL0为定时器控制寄存器TCON的低八位,其取值范围为00000000~11111111,TH0为定时器控制寄存器TCON的高八位,其取值范围为00000000~11111111,当TL0和TH0的16位计数计满时,定时器T0的定时器控制寄存器TCON的溢出标志位TF0置1,当溢出标志位TF0置1时表示定时器的计数时长到达了延时函数的延时时长,此时处理器停止处理其余任务,响应中断之后,开始执行第一任务。
在一些实施例中,若根据第一任务确定进入中断的次数的数量级较大时,例如在上述系统时钟的晶振频率Fosc=12MHz的情况下,在目标延时时长50ms内,定时器能进入中断的次数为N=50000次,但所述TL0和TH0的16位计数计满时的次数为216即65536次,即当定时器的计数次数达到65536次时溢出标志位TF0才能置1,才能到达目标延时,停止执行其余任务,并开始执行第一任务。因此需要对TL0和TH0进行计数初值的设定,才能在定时器计数次数达到50000次时定时器的溢出标志位TF0置1,计数初值TH0=(65536-50000)/256=0x3c(表示方式为16进制),TL0=(65536-50000)%256=0xb0(表示方式为16进制),即当计数初值TH0=0x3c,TL0=0xb0时,定时器以晶振频率12MHz计数计满50000次,定时器T0的定时器控制寄存器TCON的溢出标志位TF0置1,表示定时器的计数时长到达延时函数的延时时长50ms,目标延时结束,停止执行其余任务,响应中断之后,开始执行第一任务。
在一些实施例中,若根据第一任务确定进入中断的次数的数量级较小时,在目标延时时长50ms内,在上述系统时钟的晶振频率Fosc=12kHz的情况下,定时器能进入中断的次数为N=50次,但TL0和TH0的16位计数计满时的次数为216即65536次,即当定时器的计数次数达到65536次时溢出标志位TF0才能置1,此时需要对TL0和TH0进行计数初值的设定,才能在定时器计数次数达到50次时定时器的溢出标志位TF0置1,计数初值TH0=(65536-50)/256=0xff(表示方式为16进制),TL0=(65536-50)%256=0xce(表示方式为16进制),即当计数初值TH0=0xff,TL0=0xce时,定时器以晶振频率12kHz计数计满50次,定时器T0的定时器控制寄存器TCON的溢出标志位TF0置1,表示定时器的计数时长到达延时函数的延时时长50ms,目标延时结束,停止执行其余任务。
在上述实施例中,若目标延时时长内的中断次数较多,则选择进入中断次数数量级较大的情况,反之则选择进入中断次数较小的情况,两种情况下的定时器T0的TL0和TH0的初始值的设置不相同,当定时器进入中断的次数的数量级较大(例如50000次)时,TL0和TH0的初始值的设置较小,当定时器进入中断的慈湖的数量级较小(例如50000次)时,TL0和TH0的初始值的设置较大。
下面介绍定时器中断的响应步骤:
目标延时时长结束时,定时器的溢出标志位TF0置1,此时需要响应该中断,开始执行第一任务。请参照图10所示,图10是本申请实施例提供的一种定时器中断响应的场景示意图。当处理器判断目标延时时长内到达进入中断的次数时,目标延时时长结束,此时定时器T0的定时器控制寄存器TCON溢出标志位TF0 901置1,中断允许控制寄存器(InterruptEnable,IE)的中断允许位ET0置1、总允许EA置1,在中断优先级控制寄存器(InterruptPriority,IP)中选择自然优先级高或自然优先级低的中断响应顺序,假设此时选择自然优先级高的中断响应,响应定时器T0的中断之后,开始执行第一任务。此时TF0重新被置0,开始等待进入下一个第一任务的目标延时。
S406:若不满足,则继续进入中断,处理第三任务并停止处理所述第一任务。
在每进入一次中断之前,需要判断该任务类型对应执行任务时长小于或等于第一任务的目标延时的剩余延时,具体如上述实施例所述,不再赘述。
S407:若满足,则继续处理第一任务并重新启动延时计时和中断。
在定时器中断溢出之后,到达目标延时时长,处理器开始停止执行其余任务,在响应定时器中断之后,开始执行第一任务。此时TF0重新被置0,开始等待进入下一个第一任务的目标延时。具体过程如上述实施例所述,不再赘述。
举例来说,上述方法的具体流程图可以为如图11所示的情况,图11是本申请实施例提供的又一种基于定时器中断的延时方法的流程示意图,主程序中的函数初始化,设置中断函数(例如计数标志位参数),开启定时器中断,在第一任务功能运行结束之后,第一任务对应产生目标延时时长,在进入目标延时时长时,执行第二任务,若进入多次中断,在执行完第二任务之后,需要进入下一个中断执行下一个任务(而不是进入第二任务的对应延时),每进入下一次中断都需要判断计数时长是否到达目标延时的延时时长,若到达,则延时结束,定时器中断停止计数,停止执行其余任务并开始执行第一任务,若未到达,则继续进入定时器中断继续计数,并开始执行其余的任务,需要说明的是,图11中所示的第二任务、第三任务,第四任务的对应执行任务时长均小于或等于第一任务的目标延时的剩余延时,第三任务可以与第二任务相同,也可以与第二任务不同,也就是说,未到达目标延时时长进入下一次中断时,可以返回第二任务(执行又一个第二任务)。上述方法利用中断的延时作为进入第一任务的目标延时时长,可以执行其余任务,无需等待目标延时时长结束再执行其余任务,因此,采用本申请实施例既能够达到延时功能,又能够保证程序不出现阻塞。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的电子设备。
请参见图2,图2是本申请实施例提供的一种电子设备的示意图。电子设备20包括处理器101、存储器102和中断设备201,其中所述存储器102用于存储程序代码,所述处理器101调用所述程序代码,具体的过程详细描述如下:
确定待处理的第一任务;
根据所述第一任务确定目标延时;
处理所述第一任务,启动延时计时和中断;
进入中断,处理第二任务并停止处理所述第一任务;
在第二任务处理完毕时,判断是否满足第一任务延时处理条件;
若满足,则继续进入中断,处理第三任务并停止处理所述第一任务;
若不满足,则继续处理所述第一任务并重新启动延时计时和中断。
可以看出,根据第一任务确定目标延时,确定第一任务的程序的目标延时时长,在第一任务进入中断后,停止处理第一任务并开始处理第二任务,而不是等待第一任务的延时时长结束之后才开始处理第二任务,因此在未达到第一任务的延时处理条件时,在第一任务的延时时长内可进入多次中断,每一次中断都能执行一次任务,无需等待目标延时时长结束之后才能处理其余任务,可以尽早执行其余任务,因此,本申请能够在目标延时时长内执行其余任务,避免了等待延时时长结束才能执行其余任务,解决了程序造成的阻塞现象。
在一种可选的方案中,处理器101还用于,处理器101在所述根据所述第一任务确定目标延时之前,
获取待处理的全部任务类型和对应执行任务时长;
构建任务类型与对应执行任务时长的映射关系。
需要说明的是,获取在目标延时时长内可执行的全部任务类型和对应任务的执行时长,也就是获取目标延时时长内可执行的全部任务类型和执行每一次任务需要的时间,在上述方法中,根据确定的全部任务类型及其对应执行任务时长与目标延时的剩余延时之间形成映射关系,从而在第一任务的目标延时时长内尽可能地执行更多的其余任务,让延时时长得到充分的利用。
在又一可选的方案中,所述进入中断,处理第二任务并停止处理所述第一任务,包括:
进入中断,确定待处理的第二任务和对应的执行任务时长;
判断所述第二任务的执行任务时长是否大于所述第一任务的目标延时的剩余延时;
若所述第二任务的执行任务时长小于或等于所述第一任务的目标延时的剩余延时,则处理第二任务并停止处理所述第一任务。
需要说明的是,在第一任务的目标延时时长内,每进入一次中断则执行一次任务,该任务对应的执行任务时长小于或等于目标延时的剩余延时,例如也就是说,在刚进入目标延时的中断执行第二任务时,第二任务的对应执行任务时长小于或等于目标延时时长(此时第一任务目标延时时长的剩余延时等于第一任务的目标延时时长),在执行完第二任务后,会有第二任务的延时时长,但此时可以进入中断,确定此时进入中断的执行的任务(例如第三任务),第三任务的对应执行时长应小于或等于第一任务的目标延时的剩余延时时长(进入第三任务的时间点与目标延时时长结束点之间的时间),若判断目标任务的对应执行时长大于第一任务的目标延时的剩余延时,则换取对应执行时长小于或等于目标延时的剩余延时的目标任务去执行。在上述方法中,选择执行对应执行时长小于或等于目标延时的剩余延时的任务类型,能保证任务类型在目标延时时长内执行,以防造成程序紊乱的现象出现。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在处理器上运行时,实现图4或图11所示的方法流程。
本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,实现图4或图11所示的方法流程。
综上所述,通过实施本申请实施例,在延时函数中设置定时器中断并进行计数,电路板通过定时器按照预设时间间隔周期性的向传感器发送低频信号,传感器可以在延时函数的延时时长内接收多个低频信号并针对这多个低频信号进行响应(即返回高频信号),无需在延时函数整个结束后再做响应,由于传感器能够在延时函数整个结束之前就做响应,因此电路板在收到传感器的高频信号的回应时,就可以尽早执行目标程序,因此,采用本申请实施例既能够达到延时功能,又能够保证程序不出现阻塞。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来计算机程序相关的硬件完成,该计算机程序可存储于计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:只读存储记忆体ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储计算机程序代码的介质。
Claims (10)
1.一种任务处理的方法,其特征在于,所述方法包括:
确定待处理的第一任务;
根据所述第一任务确定目标延时;
处理所述第一任务,启动延时计时和中断;
进入中断,处理第二任务并停止处理所述第一任务;
在第二任务处理完毕时,判断是否满足第一任务延时处理条件;
若满足,则继续进入中断,处理第三任务并停止处理所述第一任务;
若不满足,则继续处理所述第一任务并重新启动延时计时和中断。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述第一任务确定目标延时之前,所述方法还包括:
获取待处理的全部任务类型和对应执行任务时长;
构建任务类型与对应执行任务时长的映射关系。
3.根据权利要求2所述的方法,其特征在于,所述进入中断,处理第二任务并停止处理所述第一任务,包括:
进入中断,确定待处理的第二任务和对应的执行任务时长;
判断所述第二任务的执行任务时长是否大于所述第一任务的目标延时的剩余延时;
若所述第二任务的执行任务时长小于或等于所述第一任务的目标延时的剩余延时,则处理第二任务并停止处理所述第一任务。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一任务延时处理条件包括:延时计时未达到所述目标延时。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述中断的中断源包括外部中断,定时器中断或串行口中断。
6.一种任务处理的电子设备,其特征在于,包括处理器、存储器和中断设备;其中所述存储器用于存储程序代码,所述处理器调用所述程序代码,用于执行如下操作:
确定待处理的第一任务;
根据所述第一任务确定目标延时;
处理所述第一任务,启动延时计时和中断;
进入中断,处理第二任务并停止处理所述第一任务;
在第二任务处理完毕时,判断是否满足第一任务延时处理条件;
若满足,则继续进入中断,处理第三任务并停止处理所述第一任务;
若不满足,则继续处理所述第一任务并重新启动延时计时和中断。
7.根据权利要求6所述的电子设备,其特征在于,所述处理器还用于,在所述处理器在所述根据所述第一任务确定目标延时之前,
获取待处理的全部任务类型和对应执行任务时长;
构建任务类型与对应执行任务时长的映射关系。
8.根据权利要求7所述的电子设备,其特征在于,在所述进入中断,处理第二任务并停止处理所述第一任务方面,所述处理器用于:
进入中断,确定待处理的第二任务和对应的任务周期时长;
判断所述第二任务的执行任务是否大于所述第一任务的目标延时的剩余延时;
若所述第二任务的执行任务时长小于所述第一任务的目标延时的剩余延时,则处理第二任务并停止处理所述第一任务。
9.一种计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现权利要求1-5项中任一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1-5项中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111426409.6A CN114090215A (zh) | 2021-11-27 | 2021-11-27 | 一种任务处理的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111426409.6A CN114090215A (zh) | 2021-11-27 | 2021-11-27 | 一种任务处理的方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090215A true CN114090215A (zh) | 2022-02-25 |
Family
ID=80305284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111426409.6A Pending CN114090215A (zh) | 2021-11-27 | 2021-11-27 | 一种任务处理的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090215A (zh) |
-
2021
- 2021-11-27 CN CN202111426409.6A patent/CN114090215A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109921915B (zh) | 测试实时时钟模块唤醒功能的方法、装置及电子设备 | |
WO2014055198A1 (en) | Method for preemptively restarting software in a multisubsystem mobile communication device to increase mean time between failures | |
US20170329632A1 (en) | Device scheduling method, task manager and storage medium | |
EP2551767B1 (en) | Method and device for adjusting clock interrupt cycle | |
CN107506240A (zh) | 后台应用程序管控方法、装置、存储介质及电子设备 | |
CN107133065B (zh) | 一种开启软件功能的方法及装置 | |
CN112199170A (zh) | 实时操作系统的定时处理方法、装置、设备及存储介质 | |
CN111552614A (zh) | 一种cpu使用率的统计方法及装置 | |
US7120718B2 (en) | Method for generating interrupt commands in a microprocessor system and relative priority interrupt controller | |
US8863135B2 (en) | Preemptive smart card access and data transfer based on application priority | |
CN110262920B (zh) | Linux系统外置看门狗间接喂狗方法、看门狗喂狗代理驱动模块、看门狗系统 | |
CN114090215A (zh) | 一种任务处理的方法及相关设备 | |
CN112840309B (zh) | 命令调度方法、装置及存储介质 | |
CN101593047B (zh) | 一种滚球的实现方法 | |
CN110703897B (zh) | 控制方法、装置、芯片与设备 | |
CN101593046B (zh) | 一种滚球的实现方法 | |
CN111494938A (zh) | 测速方法、装置、存储介质及电子装置 | |
CN101593048B (zh) | 一种滚球的实现方法 | |
CN115658156A (zh) | 一种基于linux系统的定时任务实现方法和装置 | |
CN115658446A (zh) | 一种wdt仿真验证方法、装置、设备及介质 | |
CN102752774A (zh) | 非实时业务流量监控时间设定方法及系统 | |
CN111367702A (zh) | 一种多任务软件看门狗处理方法及装置 | |
CN101593049A (zh) | 一种滚球的实现方法 | |
KR20060088929A (ko) | 리눅스 기반의 시스템에서 하드웨어 인터럽트 처리 장치및 방법 | |
US8381011B2 (en) | Adjusting period of clock interruption that triggers processing of processes in run queue at plural threshold depth levels |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |