CoOS中,任务有四种状态,分别是:就绪态、运行态、等待态、休眠态。
为什么要分不同的状态?
目的就为了把CPU让给更有需要的任务,比如,你打开一个浏览器,又打开一个游戏(需要全屏),这样在你玩游戏的时候,就让浏览器这个任务挂起,以进入等待状态。
然后整个CPU都在为游戏服务,而不会出现卡顿现象。
同样的原理,也能运用在单片机当中。
1、CoGetCurTaskID(),获得任务ID号
OS_TID CoGetCurTaskID(void);
这个函数,只能用在任务内部,获得任务ID号之后,就可以让任务进入不同的状态了。
成功获得ID号的话,返回OS_TID变量。
2、CoSuspendTask(),挂起任务
StatusType CoSuspendTask(OS_TID taskID);
3、CoAwakeTask(),唤醒任务
StatusType CoAwakeTask(OS_TID taskID);
任务A挂起之后,它自己不能进入就绪态的,必须等其它任务唤醒它。