第四篇:只有延时服务的协作式的内核——OSStartTask
#define OS_TASKS 2 //设定运行任务的数量
struct TaskCtrBlock //任务控制块
{
unsigned int OSTaskStackTop; //保存任务的堆栈顶
unsigned int OSWaitTick; //任务延时时钟
} TCB[3];
unsigned char Stack2[100]; //系统调度任务,始终在空闲时运行,也是最先启动的任务
//开始任务调度,从最低优先级的任务的开始
void OSStartTask()
{
OSTaskRunningPrio=OS_TASKS;
SP=TCB[OS_TASKS].OSTaskStackTop+17;
__asm__ __volatile__( "reti" "\n\t" );
}