首先要搞清楚任务.
任务就是功能模块,完成一定的功能,其载体是函数.
例如,一个任务A,
定义(伪码): void taskA() { while(1) { ....代码,
等待信号量;//执行到此处,停止执行,保存任务状态,跳转道ucos的任务调度模块,ucos检查本任务以及其他任务的运行条件,不满足运行条件,睡眠态,满足运行条件的任务进行排队,捡优先级最高的任务执行
继续执行代码,
延时,//同上,启动usos调度,运行其他任务,等待延时条件满足,并且没有更高优先极任务处于就绪态,就能再次执行 } }
除了任务自己放弃执行,从而启动ucos调度外,还有各种中断异步事件会随时启动ucos调度,从而导致当前任务暂停执行.
usos对任务的切换采取的是模拟中断的方式.(可以不必深究)
理解任务的执行过程是搞嵌入式os的基础. |