FreeRTOS学习:任务创建和删除

注:在使用大多数功能时,FreeRTOS都要将对应的宏置为1,具体的需要查看FreeRTOS官方文档。

任务的创建包括两种,静态和动态创建,区别在于在进行任务创建时,任务控制块(TCB),栈空间内存等是否由FreeRTOS自动分配,静态是由自己手动分配内存。

函数基础

创建任务(动态)

1.xTaskCreate():

1 | xTaskCreate(taskFunction, taskName, stackSize, parameters, priority, taskHandle)


参数

  • taskFunction:任务函数,即任务的入口函数。
  • taskName:任务的名称。
  • stackSize:任务堆栈的大小。
  • parameters:传递给任务函数的参数。
  • priority:任务的优先级。
  • taskHandle:任务句柄,用于引用创建的任务。

     返回值:如果任务创建成功,则返回pdPASS,否则返回errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY。

使用步骤:

1.将对应宏置为 1

2.定义函数的入口参数

3.编写任务函数

删除任务

2.xTaskDelete():

void vTaskDelete(TaskHandle_t xTaskToDelete)

参数

  • xTaskToDelete:待删除任务的任务句柄

当传入参数为NULL表示删除自身。

函数的内部实现

函数的内部实现如果需要详细了解,建议查看源码。

任务创建

prvInitialiseNewTask()

        内部重要函数为pxPortInitialiseStack(),该函数的作用是利用指针将对应的值从上到下写入到对应的地址中(压栈),这主要是在后面出栈时,将对应的值写入对应的寄存器中,用于保护上下文。

prvAddNewTaskToReadyList(pxNewTCB)

该函数的作用是把新创建的任务加入到就绪列表中,函数在任务创建内部。

任务删除

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值