【STM32】FreeRTOS任务相关API
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相关推荐
- FreeRTOS学习笔记【六】——FreeRTOS 任务相关 API 函数
上一章我们学习了 FreeRTOS 的任务基础知识,本章就正式学习如何使用 FreeRTOS 中有关任务的 API 函数.本来本章想讲解 FreeRTOS 的任务原理知识的,但是很多初学者还没使用过 ...
- 【STM32】FreeRTOS 任务相关 API 函数
文章目录 1 任务创建和删除 API 函数 2 任务创建和删除实验(动态方法) 3 任务创建和删除实验(静态方法) 4 任务挂起和恢复 API 函数 5 任务挂起和恢复实验 1 任务创建和删除 API ...
- 2、FreeRTOS任务相关API函数
1.任务相关的API函数 函数存在于task.c中,主要的函数有: xTaskCreate():使用动态的方法创建一个任务: xTaskCreatStatic():使用静态的方法创建一个任务(用的非常 ...
- FreeRTOS任务相关API函数---查询/改变某个任务的优先级+获取全部/某个任务状态信息
本文是<ALIENTEK STM32F429 FreeRTOS 开发教程>第十一章学习笔记 第一章笔记–FreeRTOS简介与源码下载 第二章笔记–FreeRTOS在STM32F4上移植 ...
- 【STM32】FreeRTOS 其他任务 API 函数
文章目录 任务相关 API 函数预览 任务相关 API 函数预览 函数 描述 uxTaskPriorityGet() 查询某个任务的优先级. vTaskPrioritySet() 改变某个任务的任务优 ...
- 基于STM32+FreeRtos+ESP8266+MQTT连接阿里云
基于STM32+FreeRtos+DHT12+ESP8266+MQTT连接阿里云 1.概述 2.实现步骤 2.1.MQTT.fx模拟器与阿里云通信 2.2.STM32与阿里云通信 3. 搭建云平台 3 ...
- STM32 FreeRTOS (三) 软件定时器
简介: 基本概念 ReeRTOS中加入了软件定时器这个功能组件,是一个可选的.不属于freeRTOS内核的功能,由定时器服务(其实就是一个定时器任务)来提供. 软件定时器是当设定一个定时时间,当达到设 ...
- STM32 FreeRTOS CMSIS—OS
STM32 FreeRTOS CMSIS-OS 前言 1.关于 osThreadNew () 1.1 FreeRTOS线程与任务的关系 1.2 osThreadNew () 1.2.1 osThrea ...
- 关于STM32软硬件兼容性相关的知识
推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang Ⅰ.写在前面 ...
最新文章
- xp启动java设置_Windows XP快速启动经典六招
- 关于CSS中的下拉表单和文本域元素
- python中的time库安装步骤-Python中time模块的使用
- 导航狗IT周报-2018年05月18日
- 数据结构——查找:折半查找、二叉查找(排序)树、平衡二叉树
- UA SIE545 优化理论基础4 对偶理论简介4 求解对偶问题的割平面算法
- Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据
- C# ASP.NET Forms身份认证
- 汇总区间Python解法
- Linux Distribution Timeline for 2010(Linux 2010 年发行版时间线/族谱/发展图)
- linux命令:watch 、lsmod、mdadm 创建软RAID
- 微信小程序实战,用vue3实现每日浪漫情话推荐~
- 基于Python的串口调试工具
- 加权平均资本成本(Weighted Average Cost of Capital,WACC)
- python最佳身高_Python+sklearn使用线性回归算法预测儿童身高
- CC00260.CloudKubernetes——|KuberNetes中间件容器化及helm.V07|——|中间件.v07|redis.v5.0.4|custom-reso...
- js中关于字符串操作的命令
- 朝着先能干活的方向努力。。。奥利给!!!06
- 程序员常用mysql命令
- EMP平台简介(转载)
热门文章
- Mantis安装过程笔记
- nullnullGet previous business day
- Http Handler 介绍(转)
- 微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2
- 上海有哪些计算机技术专科学校,上海计算机专业大学排名,第一名居然是这所大学!...
- 交互 点击变色_明年旗舰机必将标配!电致变色技术解读
- ASP.NET MVC 后台传值前端乱码解决方案 富文本Ueditor编辑
- [转载]线上应用故障排查之一:高CPU占用
- Mysql Order By 注入总结
- 有关替换字符的代码问题