00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. xTaskCreate()函数
  • 03. xTaskCreateStatic()函数
  • 04. xTaskCreateRestricted()函数
  • 05. vTaskDelete()函数
  • 06. 附录
  • 07. 参考

01. 概述

FreeRTOS最基本的功能就是任务管理,而任务挂你最基本的操作就是创建和删除任务,FreeRTOS的任务创建和删除API函数如下表所示:

02. xTaskCreate()函数

BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,const char * const pcName,    const configSTACK_DEPTH_TYPE usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreatedTask )
功能:创建一个任务,任务需要RAM来保存与任务有关的状态信息(任务控制块),任务也需要一定的RAM来作为任务堆栈。如果使用函数xTaskCreate()来创建任务的话那么这些所需的RAM就会自动的从FreeRTOS的堆中分配。参数:pxTaskCode 任务函数pcName  任务名字,一般用于追踪和调试,任务名字长度不能超过configMax_TASK_NAME_LEN。usStackDepth 任务堆栈大小,注意实际申请到的堆栈是usStackDepth的4倍。其中空闲任务的任务堆栈大小为configMINIMAL_STACK_SIZE。pvParameters 传递给任务函数的参数uxPriority 任务优先级,范围0-configMAX_PRIORITIES-1pxCreatedTask 任务句柄,任务创建成功以后会返回此任务的任务句柄,这个句柄其实就是任务的任务堆栈。此参数就用来保存这个任务句柄。其它API函数可能会使用到这个句柄。    返回值:pdPASS 成功创建任务errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY 任务创建失败 因为堆内存不足     

应用示例

/* 创建任务. */
void vTaskCode( void * pvParameters )
{for( ;; ){/* 任务代码放在这里 */}
}/* 创建任务函数 */
void vOtherFunction( void )
{static unsigned char ucParameterToPass;xTaskHandlexHandle;/* 创建任务,存储句柄。注:传递的参数ucParameterToPass必须和任务具有相同的生存周期,因此这里定义为静态变量。如果它只是一个自动变量,可能不会有太长的生存周期,因为中断和高优先级任务可能会用到它。 */xTaskCreate( vTaskCode, "NAME", STACK_SIZE,&ucParameterToPass, tskIDLE_PRIORITY, &xHandle );/* 使用句柄删除任务. */if( xHandle !=NULL ){vTaskDelete( xHandle );}
}

03. xTaskCreateStatic()函数

TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode,const char * const pcName,const uint32_t ulStackDepth,void * const pvParameters,UBaseType_t uxPriority,StackType_t * const puxStackBuffer,StaticTask_t * const pxTaskBuffer ) 此函数和xTaskCreate()的功能相同,也是用来创建任务的,但是使用此函数创建的任务所需的RAM需要用户来提供。如果要使用该函数的话就需要将宏configSUPPORT_STATIC_ALLOCATION定义为1。参数:pxTaskCode 任务函数pcName  任务名字,一般用于追踪和调试,任务名字长度不能超过configMax_TASK_NAME_LEN。usStackDepth 任务堆栈大小,注意实际申请到的堆栈是usStackDepth的4倍。其中空闲任务的任务堆栈大小为configMINIMAL_STACK_SIZE。pvParameters 传递给任务函数的参数uxPriority 任务优先级,范围0-configMAX_PRIORITIES-1puxStackBuffer 任务堆栈 一般为数组,数组类型腰围StackType_t类型。pxTaskBuffer 任务控制块返回值:NULL 任务创建失败,puxStackBuffer或者pxTaskBuffer为NULL的时候会导致这个错误的发生。其它值 任务创建成功,返回任务的任务句柄

04. xTaskCreateRestricted()函数

BaseType_t xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition,TaskHandle_t * pxCreatedTask )
功能:创建任务,只不过此函数要求所使用的MCU有MPU内存保护单元,用此函数创建的任务会收到MPU的保护,其它的功能和函数xTAskCreate()一样。
参数:pxTaskDefinition 指向一个结构体TaskParameters_t,这个及饿哦固体描述了任务的任务函数,堆栈大小,优先级等。pxCreatedTask 任务句柄
返回值:pdPASS 任务创建成功其它值 任务为创建成功,很有可能是因为FreeRTOS的堆太小了。

05. vTaskDelete()函数

从RTOS内核管理器中删除一个任务。任务删除后将会从就绪、阻塞、暂停和事件列表中移除。在文件FreeRTOSConfig.h中,必须定义宏INCLUDE_vTaskDelete 为1,本函数才有效。

注:被删除的任务,其在任务创建时由内核分配的存储空间,会由空闲任务释放。如果有应用程序调用xTaskDelete(),必须保证空闲任务获取一定的微控制器处理时间。任务代码自己分配的内存是不会自动释放的,因此删除任务前,应该将这些内存释放。

void vTaskDelete( TaskHandle_t xTaskToDelete )
功能:删除一个用函数xTaskCreate()或者xTaskCreateStatic()创建的任务。
参数:xTaskToDelete 要删除的任务的任务句柄
返回值:无

06. 附录

6.1 【STM32】STM32系列教程汇总

网址:【STM32】STM32系列教程汇总

07. 参考

《FreeRTOS Reference Manual》

《Using the FreeRTOS Real Time Kernel -A Practical Guide》

《The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors,3rd Edition》

【STM32】FreeRTOS任务相关API相关推荐

  1. FreeRTOS学习笔记【六】——FreeRTOS 任务相关 API 函数

    上一章我们学习了 FreeRTOS 的任务基础知识,本章就正式学习如何使用 FreeRTOS 中有关任务的 API 函数.本来本章想讲解 FreeRTOS 的任务原理知识的,但是很多初学者还没使用过 ...

  2. 【STM32】FreeRTOS 任务相关 API 函数

    文章目录 1 任务创建和删除 API 函数 2 任务创建和删除实验(动态方法) 3 任务创建和删除实验(静态方法) 4 任务挂起和恢复 API 函数 5 任务挂起和恢复实验 1 任务创建和删除 API ...

  3. 2、FreeRTOS任务相关API函数

    1.任务相关的API函数 函数存在于task.c中,主要的函数有: xTaskCreate():使用动态的方法创建一个任务: xTaskCreatStatic():使用静态的方法创建一个任务(用的非常 ...

  4. FreeRTOS任务相关API函数---查询/改变某个任务的优先级+获取全部/某个任务状态信息

    本文是<ALIENTEK STM32F429 FreeRTOS 开发教程>第十一章学习笔记 第一章笔记–FreeRTOS简介与源码下载 第二章笔记–FreeRTOS在STM32F4上移植 ...

  5. 【STM32】FreeRTOS 其他任务 API 函数

    文章目录 任务相关 API 函数预览 任务相关 API 函数预览 函数 描述 uxTaskPriorityGet() 查询某个任务的优先级. vTaskPrioritySet() 改变某个任务的任务优 ...

  6. 基于STM32+FreeRtos+ESP8266+MQTT连接阿里云

    基于STM32+FreeRtos+DHT12+ESP8266+MQTT连接阿里云 1.概述 2.实现步骤 2.1.MQTT.fx模拟器与阿里云通信 2.2.STM32与阿里云通信 3. 搭建云平台 3 ...

  7. STM32 FreeRTOS (三) 软件定时器

    简介: 基本概念 ReeRTOS中加入了软件定时器这个功能组件,是一个可选的.不属于freeRTOS内核的功能,由定时器服务(其实就是一个定时器任务)来提供. 软件定时器是当设定一个定时时间,当达到设 ...

  8. STM32 FreeRTOS CMSIS—OS

    STM32 FreeRTOS CMSIS-OS 前言 1.关于 osThreadNew () 1.1 FreeRTOS线程与任务的关系 1.2 osThreadNew () 1.2.1 osThrea ...

  9. 关于STM32软硬件兼容性相关的知识

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang Ⅰ.写在前面 ...

最新文章

  1. xp启动java设置_Windows XP快速启动经典六招
  2. 关于CSS中的下拉表单和文本域元素
  3. python中的time库安装步骤-Python中time模块的使用
  4. 导航狗IT周报-2018年05月18日
  5. 数据结构——查找:折半查找、二叉查找(排序)树、平衡二叉树
  6. UA SIE545 优化理论基础4 对偶理论简介4 求解对偶问题的割平面算法
  7. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据
  8. C# ASP.NET Forms身份认证
  9. 汇总区间Python解法
  10. Linux Distribution Timeline for 2010(Linux 2010 年发行版时间线/族谱/发展图)
  11. linux命令:watch 、lsmod、mdadm 创建软RAID
  12. 微信小程序实战,用vue3实现每日浪漫情话推荐~
  13. 基于Python的串口调试工具
  14. 加权平均资本成本(Weighted Average Cost of Capital,WACC)
  15. python最佳身高_Python+sklearn使用线性回归算法预测儿童身高
  16. CC00260.CloudKubernetes——|KuberNetes中间件容器化及helm.V07|——|中间件.v07|redis.v5.0.4|custom-reso...
  17. js中关于字符串操作的命令
  18. 朝着先能干活的方向努力。。。奥利给!!!06
  19. 程序员常用mysql命令
  20. EMP平台简介(转载)

热门文章

  1. Mantis安装过程笔记
  2. nullnullGet previous business day
  3. Http Handler 介绍(转)
  4. 微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2
  5. 上海有哪些计算机技术专科学校,上海计算机专业大学排名,第一名居然是这所大学!...
  6. 交互 点击变色_明年旗舰机必将标配!电致变色技术解读
  7. ASP.NET MVC 后台传值前端乱码解决方案 富文本Ueditor编辑
  8. [转载]线上应用故障排查之一:高CPU占用
  9. Mysql Order By 注入总结
  10. 有关替换字符的代码问题