当前位置: 首页 > news >正文

FreeRTOS函数说明

4.1.1动态创建任务函数

1)函数说明

BaseType_t xTaskCreate
(TaskFunction_t pxTaskCode,                  /* 指向任务函数的指针 */const char * const pcName,                  /* 任务名字,最大长度configMAX_TASK_NAME_LEN */const configSTACK_DEPTH_TYPE usStackDepth,  /* 任务堆栈大小,默认单位4字节 */void * const pvParameters,                  /* 传递给任务函数的参数 */UBaseType_t uxPriority,                     /* 任务优先级,范围:0 ~ configMAX_PRIORITIES - 1 */TaskHandle_t * const pxCreatedTask          /* 任务句柄,就是任务的任务控制块 */
) 

返回值说明如下:
pdPASS:任务创建成功。
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY:任务创建失败。
2)动态创建任务步骤
(1)将宏configSUPPORT_DYNAMIC_ALLOCATION 配置为 1。
(2)定义函数入口参数。
(3)编写任务函数。
此函数创建的任务会立刻进入就绪态,由任务调度器调度运行。

3)动态创建任务函数内部实现

(1)申请堆栈内存&任务控制块内存。
(2)TCB结构体成员赋值。
(3)添加新任务到就绪列表中。
任务控制块结构体成员介绍。

typedef struct tskTaskControlBlock       
{volatile StackType_t * pxTopOfStack; /* 任务栈栈顶,必须为TCB的第一个成员 */ListItem_t xStateListItem;                  /* 任务状态列表项 */ListItem_t xEventListItem;                  /* 任务事件列表项 */UBaseType_t uxPriority;                     /* 任务优先级,数值越大,优先级越大 */StackType_t * pxStack;                      /* 任务栈起始地址 */char pcTaskName[ configMAX_TASK_NAME_LEN ]; /* 任务名字 */  …省略很多条件编译的成员
} tskTCB;

4.1.2静态创建任务函数

1)函数说明

TaskHandle_t xTaskCreateStatic
( TaskFunction_t pxTaskCode,          /* 指向任务函数的指针 */const char * const pcName,          /* 任务函数名 */const uint32_t ulStackDepth,        /* 任务堆栈大小,单位是4字节 */void * const pvParameters,          /* 传递的任务函数参数 */UBaseType_t uxPriority,             /* 任务优先级 */StackType_t * const puxStackBuffer, /* 任务堆栈,一般为数组,由用户分配 */StaticTask_t * const pxTaskBuffer   /* 任务控制块指针,由用户分配 */
)

返回值如下:
NULL:用户没有提供相应的内存,任务创建失败。
其他值:任务句柄,任务创建成功。

2)静态创建任务步骤
(1)将宏configSUPPORT_STATIC_ALLOCATION 配置为 1。
(2)定义空闲任务&定时器任务的任务堆栈及TCB。
(3)实现接口函数:
vApplicationGetIdleTaskMemory()

vApplicationGetTimerTaskMemory()(如果开启软件定时器)
(4)定义函数入口参数。
(5)编写任务函数。
此函数创建的任务会立刻进入就绪态,由任务调度器调度运行。
3)静态创建内部实现
(1)TCB结构体成员赋值
(2)添加新任务到就绪列表中

http://www.dtcms.com/a/577692.html

相关文章:

  • 营销软件网站建设陕西省建设网官网首页
  • 网站团购功能怎么做wordpress移除工具栏
  • 确定性革命:从观察宇宙到编程现实
  • 【模板】二维前缀和 (牛客)
  • 品牌网站设计公司哪家好百度seo整站优化公司
  • wordpress做单页销售网站西部网站管理助手 伪静态
  • 如何用faiss强化基于mysql的文本检索
  • C++面试4-线程同步
  • 【LeetCode热题100(62/100)】搜索二维矩阵
  • 并发编程、锁、线程池知识整理<1>
  • 11种方法解决iPhone上共享相册不显示的问题[2025]
  • php网站制作教程美食网站开发的技术简介
  • Spring整合单元测试
  • 深入浅出理解克尔效应(Kerr Effect)及 MATLAB 仿真实现
  • 【区块链】二、案例1:汽车供应链区块链
  • 影刀RPA一键批量上传商品视频!AI智能处理,效率提升2000%[特殊字符]
  • 安卓/IOS工具开发基础教程:按键精灵一个简单的文字识别游戏验证
  • Python爬虫实战:澳元-人民币汇率历史数据获取与趋势分析
  • 网站开发属于大学那个专业网页设计题材
  • 图书馆网站建设的项目报告网站svg使用
  • 基于大数据的短视频流量数据分析与可视化
  • OT83211_VC1:4通道 ASRC OTG(44.1kHz~192kHz)音频采样率转换器产品介绍
  • 性能测试需求分析详解
  • Redis-面试问题
  • 小型网站开发用什么语言大型h5手游平台
  • 徐州网站建设工作室中国建筑官网首页
  • MyBatis注解的运用于条件搜索实践
  • 搭建网站 软件下载吴忠市建设局官方网站
  • 工厂方法模式:从理论到实战指南
  • 微信小程序 点击地图后弹出一个模态框