1.一种高精度时钟辅助任务执行的方法,其特征在于,所述方法包括:构建一个中断服务公共链表的步骤、任务执行的步骤及高精度时钟中断服务的步骤;其中,该中断服务公共链表的结构包括子任务的程序地址;
该高精度时钟辅助任务执行的步骤包括如下子步骤:任务中若有需要请求高精度时钟中断服务的子任务,则构建子任务信息;检测该中断服务公共链表是否加锁,若加锁,继续等待并检测,直到解锁;将该中断服务公共链表加锁,将子任务信息加入到该中断服务公共链表中,然后将该中断服务公共链表解锁;及等到该子任务执行完成后加锁该中断服务公共链表,然后删除该子任务信息,并将该中断服务公共链表解锁;
高精度时钟中断服务包括如下子步骤:当产生时钟中断后,高精度时钟中断服务模块关闭该时钟中断;检测该中断服务公共链表是否加锁;若没有加锁,则加锁并访问该中断服务公共链表,根据该子任务的程序地址执行该子任务;及该子任务执行完毕后,将该中断服务公共链表解锁,清除时钟中断标志,打开时钟中断,等待下次时钟中断的到来;其中,该高精度时钟辅助任务执行的步骤具体如下:S1:构建一个中断服务公共链表,该中断服务公共链表的结构包括子任务的程序地址、参数个数、参数区、返回数据区及执行完成标志;该中断服务公共链表中的子程序按照请求高精度时钟中断服务的先后顺序依次排列,然后在执行高精度时钟中断服务时按照该子程序排列的先后顺序依次进行;
S2:高精度时钟辅助任务A执行的子步骤包括:
S21:任务A若有需要提升执行等级,不被其他时间片或任务打断的子任务,即任务A中若需要请求高精度时钟中断服务的子任务,则构建如该中断服务公共链表的结构的子任务信息,将执行完成标志初始设置为“0”;
S22:检测该中断服务公共链表是否加锁,如加锁,继续等待并检测,直到解锁;
S23:将该中断服务公共链表加锁,将子任务信息加入到该中断服务公共链表中,然后将该中断服务公共链表解锁;
S24:检测执行完成标志的值是否为“1”,若不为“1”,继续检测,直到为“1”;
S25:加锁该中断服务公共链表,若有返回数据,则从该中断服务公共链表的该返回数据区中取出该返回数据,然后删除该子任务信息,并将该中断服务公共链表解锁;
S26:任务A执行其他子任务;
S3:高精度时钟中断服务的步骤,其包括如下子步骤:
S31:当产生时钟中断后,该高精度时钟中断服务模块关闭该时钟中断;
S32:检测该中断服务公共链表是否加锁;
S33:若该中断服务公共链表加锁,则说明有任务在向该中断服务公共链表中加入信息或删除信息,使得该中断服务公共链表有变动,则取消此次高精度时钟中断服务,跳转到S31步骤;
S34:若该中断服务公共链表没有加锁,则高精度时钟中断服务模块将该中断服务公共链表加锁并访问该中断服务公共链表,从该中断服务公共链表中获取排在最前面的子任务,然后根据最前面的子任务的程序地址,执行该子任务;
S35:任务执行完毕,若有返回值,则将该返回值放入该返回数据区,将执行完成标志设置为“1”;
S36:将该中断服务公共链表解锁,清除时钟中断标志,打开时钟中断,等待下次时钟中断的到来。