双任务延时原理与空闲任务
设计目标:提供一个任务延时接口,使得延时过程中可放弃CPU转而运行其他任务,提高CPU运行效率
任务延时原理:任务数量不限,而硬件计数器资源数量非常有限,不得不采用“软件计时器”
延时精度问题:精度有限
void tTaskSched()
{
if(currentTask == idleTask)
{
if(taskTable[0]->delayTicks == 0)
{
nextTask = taskTable[0];
}
else if(taskTable[1]->delayTicks == 0)
{
nextTask = taskTable[1];
}
else
{
return;
}
}
else
{
if(currentTask == taskTable[0])
{
if(taskTable[1]->delayTicks == 0)
{
nextTask = taskTable[1];
}
else if(currentTask->delayTicks != 0)
{
nextTask = idleTask;
}
else
{
return;
}
}
else if(currentTask == taskTable[1])
{
if(taskTable[1]->delayTicks == 0)
{
nextTask = taskTable[1];
}
else if(currentTask->delayTicks != 0)
{
nextTask = idle