嵌入式学习小组
直播中

李贞

7年用户 149经验值
私信 关注

请帮我***的程序代码是怎么进行时间调度

请帮我看看下面的程序代码?请详细点,谢谢
ps:我不懂,该程序明明没有进行操作系统移植,可是它有个task.c源文件,看不懂是怎么进行时间调度的(编程人说task.c是时间调度器源文件)
TASK tasks[MAX_TASKS];
void delTask(uint16_t taskIndex)
{
    tasks[taskIndex].ptrTask=0;
    tasks[taskIndex].delay=0;  
    tasks[taskIndex].period=0;  //
    tasks[taskIndex].runMe=0;
    tasks[taskIndex].co_op=0;
}/* end of delTask() */
void addTask(void(*ptr)(),uint16_t delay,uint16_t period,uint16_t co_op)
{
    uint16_t index=0;
    while((tasks[index].ptrTask != 0)&(index < MAX_TASKS)) index++;
    tasks[index].ptrTask=ptr;
    tasks[index].delay=delay;
    tasks[index].period=period;
    tasks[index].co_op=co_op;
    tasks[index].runMe=0;
}/* end of addTask() */
void dispatchTask(void)  //
{
    uint16_t index;
    for(index=0;index         if((tasks[index].co_op) & (tasks[index].runMe > 0)){
            (*tasks[index].ptrTask)();
            tasks[index].runMe--;
            if(tasks[index].period==0) tasks[index].ptrTask=0;
        }
    }
}/* end of dispatchTask() */

回帖(6)

孔朱磊

2020-5-25 13:38:26
结构体申明那里没注释吗?从你贴出的代码来看,这个结构体应该是类似于操作系统的任务控制块,ptrTask就是任务函数的指针,别的应该是周期、是否执行任务……。 dispatchTask()就是用来调度的,判断哪些任务该执行。但是应该还有别的地方也参与函数的调度,很有可能是在定时器中断那里,你再仔细看一下
举报

方春晓

2020-5-25 13:46:30
你这....
举报

赵群山

2020-5-25 13:51:57
咋了啊?帮我说两句啊、task结构体是什么东东,没见啊!
举报

肖锋

2020-5-25 14:00:39
结构体什么没有注释,只有/* Global Variables*/这一句话,我去看看定时器中断,谢谢啦
举报

更多回帖

发帖
×
20
完善资料,
赚取积分