请帮我看看下面的程序代码?请详细点,谢谢
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() */
2020-5-25 13:38:26
结构体申明那里没注释吗?从你贴出的代码来看,这个结构体应该是类似于操作系统的任务控制块,ptrTask就是任务函数的指针,别的应该是周期、是否执行任务……。 dispatchTask()就是用来调度的,判断哪些任务该执行。但是应该还有别的地方也参与函数的调度,很有可能是在定时器中断那里,你再仔细看一下
结构体申明那里没注释吗?从你贴出的代码来看,这个结构体应该是类似于操作系统的任务控制块,ptrTask就是任务函数的指针,别的应该是周期、是否执行任务……。 dispatchTask()就是用来调度的,判断哪些任务该执行。但是应该还有别的地方也参与函数的调度,很有可能是在定时器中断那里,你再仔细看一下
举报
2020-5-25 13:51:57
咋了啊?帮我说两句啊、task结构体是什么东东,没见啊!
咋了啊?帮我说两句啊、task结构体是什么东东,没见啊!
举报
2020-5-25 14:00:39
结构体什么没有注释,只有/* Global Variables*/这一句话,我去看看定时器中断,谢谢啦
结构体什么没有注释,只有/* Global Variables*/这一句话,我去看看定时器中断,谢谢啦
举报