freertos任务删除_挂起_恢复

任务删除:

void vTaskDelete( TaskHandle_t xTask );

参数:

xTask 待删除的任务的句柄。传递 NULL 将导致调用任务被删除。

此函数的作用为从 RTOS 内核管理中移除任务。被删除的任务将从所有的就绪、阻塞、挂起和事件的列表中移除。一般在进入主函数后创建新的任务,包括硬件的初始化,其他任务的创建等等一些操作,在最后将任务删除掉。

任务挂起:

void vTaskSuspend( TaskHandle_t xTaskToSuspend );

参数:

xTaskToSuspend 

被挂起的任务句柄。传递空句柄将导致调用任务被暂停。

必须将 INCLUDE_vTaskSuspend 定义为 1 才能使用此函数。

暂停任意任务。无论任务优先级如何,任务被暂停后将永远无法获取任何微控制器处理时间。

对 vTaskSuspend 的调用不会累积次数,例如:若在同一任务上调用 vTaskSuspend () 两次,将仍然仅需调用一次 vTaskResume (),即可准备完毕暂停的任务。

任务恢复:

void vTaskResume( TaskHandle_t xTaskToResume );

参数:

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);
    
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值