1.概述
在任务中延时和任务挂起是嵌入式操作系统中的常规需求,bcos提供了任务延时和挂起的接口。用户调用任务延时接口和任务挂起任务挂起接口后调用这两个接口的任务会被系统调度到任务等待队列中,直到任务延时超时或用户调研任务恢复函数后才会重新被添加到就绪队列中调度执行。在正常的bcos的使用过程中每一个任务至少要有1ms的延时调用,否则该任务会一直占用cpu的执行权其他任务无法被调度执行。
2.任务延时、挂起、恢复接口
/*
* 系统延时函数,调研该函数会触发系统调度,当前任务会放弃cpu的占有权。
* 有两种情况不可以调用系统延时函数:
* 1.由于tasklet的处理函数在空闲任务中执行,当tasket的处理函数被执行时
* 就绪队列中只有空闲任务。系统无法放弃空闲任务的执行权,所以在tasklet
* 的处理函数中不允许调用系统延时函数。
* 2.在中断处理函数中也不允许调用系统延时函数,由于中断处理函数执行在特权模式
* 其栈指针是MSP,此时cpu不是执行在任务中。
*
* @tick£:系统滴答数,正常情况下一个系统滴答1ms
*/
void bcos_delay_ms(BC_OS_TICK tick);
/*
* 任务挂起
*
* 该接口以宏的形式实现
*/
#define bcos_task_suspend();
/*
* 任务恢复
*
* 该函数有两个功能:
* 1.该函数与bcos_task_suspend()操作相反,可以取消任务挂起;
* 2.该函数可以取消任务延时,让任务马上恢复执行;
* 该函数的执行会触发一次任务调度
*
* @param
* tcb:任务TCB指针
*/
void bcos_task_resume(bcos_tcb_t *tcb);