任务删除:
void vTaskDelete( TaskHandle_t xTask );
参数:
xTask | 待删除的任务的句柄。传递 NULL 将导致调用任务被删除。 |
此函数的作用为从 RTOS 内核管理中移除任务。被删除的任务将从所有的就绪、阻塞、挂起和事件的列表中移除。一般在进入主函数后创建新的任务,包括硬件的初始化,其他任务的创建等等一些操作,在最后将任务删除掉。
任务挂起:
void vTaskSuspend( TaskHandle_t xTaskToSuspend );
参数:
xTaskToSuspend | 被挂起的任务句柄。传递空句柄将导致调用任务被暂停。 |
必须将 INCLUDE_vTaskSuspend 定义为 1 才能使用此函数。
暂停任意任务。无论任务优先级如何,任务被暂停后将永远无法获取任何微控制器处理时间。
对 vTaskSuspend 的调用不会累积次数,例如:若在同一任务上调用 vTaskSuspend () 两次,将仍然仅需调用一次 vTaskResume (),即可准备完毕暂停的任务。
任务恢复:
参数:
xTaskToResume | 要恢复的任务句柄。 |
必须将 INCLUDE_vTaskSuspend 定义为 1 才能使用此函数。
恢复已挂起的任务。由一次或多次调用 vTaskSuspend () 而挂起的任务可通过单次调用 vTaskResume () 重新运行。
任务挂起与恢复通常在一起使用,保护共享资源。
static void app_task1(void *parameter)
{
while(1)
{
vTaskSuspend(app_task2_handle);
printf("task1 is running...\r\n");
vTaskResume(app_task2_handle);
//任务延时1000个节拍
vTaskDelay(1000);
}
}
static void app_task2(void *parameter)
{
while(1)
{
vTaskSuspend(app_task1_handle);
printf("task2 is running...\r\n");
vTaskResume(app_task1_handle);
vTaskDelay(1000);
}
}