新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2017-5-15
- 在线时间
- 3 小时
|
10金钱
请帮我看看下面的程序代码?请详细点,谢谢
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<MAX_TASKS;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() */
|
最佳答案
查看完整内容[请看2#楼]
结构体申明那里没注释吗?从你贴出的代码来看,这个结构体应该是类似于操作系统的任务控制块,ptrTask就是任务函数的指针,别的应该是周期、是否执行任务……。 dispatchTask()就是用来调度的,判断哪些任务该执行。但是应该还有别的地方也参与函数的调度,很有可能是在定时器中断那里,你再仔细看一下
|