完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们曾经在公众号里给大家推送过关于freeRTOS在NXP kinetis KV4x上的移植,得到了猿友大量的反馈,很多猿友还是感觉对基础的一些东西不懂,今天我们就从基础的任务创建讲起,任务创建是RTOS学习中很重要的一步,因为你的应用就是基于大量的任务来实现的,那么在freeRTOS下如何来创建任务呢,首先打开任意一个移植好的例程或者我们移植的demo,找到task.h和tasks.c这两个文件里面定义声明了许多与任务相关的类型和函数。我们今天要讲的任务创建就来自这里。任务的创建主要有两个函数,先来看第一个
BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask ) 参数: pxTaskCode 任务函数入口的指针。 pcName 任务描述名,主要用来帮助调试,是一系列字符串,最大默认值为10,可以通过freeRTOSConfig.h中的宏#define configMAX_TASK_NAME_LEN来修改。 usStackDepth 指定任务堆栈大小的字数不是字节数,通过这个值可以计算出堆栈分配的大小,例如堆栈是16位宽,这个参数值是100,则分配给任务的堆栈大小就是200字节。 pvParameters 指针,可以被用来作为创建的任务的参数。 uxPriority 指定任务的优先级 pxCreatedTask 回传一个可以被创建任务参考的句柄,这个参数是可以被设置为NULL 返回值:如果任务成功创建,则返回pdPASS,否则返回errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY,如下图所示 另一个创建任务的函数是 TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode, const char * constpcName, constuint32_t ulStackDepth, void* const pvParameters, UBaseType_tuxPriority, StackType_t* const puxStackBuffer, StaticTask_t* const pxTaskBuffer ) 使用这个函数创建任务必须确保宏定义configSUPPORT_STATIC_ALLOCATION为1。这两种创建任务函数的不同在与,第一种的任务堆栈的RAM是自动分配的,而第二种是由创建者分配的。更多详细的关于这两种的介绍可以参考官方网站的介绍。 参数:这里我们只列出与第一种不同的两个参数 puxStackBuffer 指向至少具有ulStackDepth元素的用作任务堆栈的数组。 pxTaskBuffer 指向任务数据结构体。 顺便提一下任务的删除函数 void vTaskDelete(TaskHandle_t xTask ); 宏定义INCLUDE_vTaskDelete必须为1这个函数才能可用,主要用于将一个任务从内核任务管理中移除。 只有一个参数就是要移除的任务的句柄。源码中给出了一个例子可以参考如下: 评分 |
|
相关推荐
|
|
板凳听讲,等待下集。
|
|
|
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之设备树组成和结构
503 浏览 0 评论
【敏矽微ME32G070开发板免费体验】点亮WS2812B灯板
476 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-Linux内核移植之内核启动流程
744 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-TF卡烧录流程之烧写过程
1436 浏览 0 评论
2891 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12148 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-9 22:39 , Processed in 0.625895 second(s), Total 76, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号