- 任务挂起函数
void vTaskSuspend(TaskHandle_t xTaskToSuspend)
void vTaskSuspendAll(void)——挂起所有任务
其实就是将调度器锁定,直白点挂起所有的任务,就是挂起任务调度器,调度器被挂起后,就不可以进行上下文的切换,但是中断还是使能的。
当调度器被挂起的时候,如果有中断需要进行上下文切换,那么这个任务就会被挂起,再调度器恢复之后,才能执行任务的切换
注意:调用多少次挂起所有任务函数,就需要调用多少次恢复所有任务函数
- 任务恢复函数
任务恢复函数就是让挂起的任务重新进入就绪状态,恢复的任务会保留挂起前的信息,在恢复的时候根据挂起时的状态继续运行。(相当于恢复被挂起的任务后,这个任务会继续执行之前执行到的位置)
void vTaskResume(TaskHandle_t xTaskToResume)——适用于普通任务
BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume)——适用于中断任务
- 任务删除函数
void vTaskDelete( TaskHandle_t xTaskToDelete )
如果删除自己的话,传入NULL就可以,如果删除其他任务的话,传入其他任务的句柄。
注意:任务删除函数并不会释放对应的内存,因此,在使用任务删除函数之前,需要先将对应的内存释放掉,然后再进行删除任务。
- 任务延时函数
void vTaskDelay( const TickType_t xTicksToDelay )——相对延时函数
传递的参数为节拍(再配置文件中设置)
从执行这个函数开始算起需要延时的时间。
局限性:其他的任务,或中断服务也会影响这个函数延时的时间
void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
const TickType_t xTimeIncrement ); ——绝对延时函数
传递的参数(上一次的时钟节拍, 需要延时的时钟节拍)
这个函数延时的时间精确。