freertos 源码详解三 创建任务函数

本文详细介绍了FreeRTOS中创建任务的xTaskCreate函数及其内部调用的prvInitialiseNewTask函数。首先,xTaskCreate负责申请堆栈和任务控制块内存,然后将堆栈地址保存到任务控制块,并调用prvInitialiseNewTask进行初始化。prvInitialiseNewTask主要任务是填充堆栈、设置栈顶指针、保存任务名、优先级以及初始化任务列表项。最后,任务被添加到就绪列表中,任务句柄也被正确地保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

一、xTaskCreate函数

**

main函数中的start_task:

xTaskCreate((TaskFunction_t )start_task,            //任务函数
            (const char*    )"start_task",          //任务名称
            (uint16_t       )START_STK_SIZE,        //任务堆栈大小
            (void*          )NULL,                  //传递给任务函数的参数
            (UBaseType_t    )START_TASK_PRIO,       //任务优先级
            (TaskHandle_t*  )&StartTask_Handler);   //任务句柄    

xTaskCreate的原型:
xTaskCreate( TaskFunction_t pxTaskCode,
const char * const pcName,
const uint16_t usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask )

1。申请堆栈内存。
pxStack = ( StackType_t * ) pvPortMalloc( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */

2.申请任务控制块内存
pxNewTCB = ( TCB_t * ) pvPortM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值