FreeRTOS常用API接口函数

FreeRTOS知识及常用API函数(更新中) 1、简介RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性,例如打游戏和回复信息,不需要等某一件事做完,可每间隔1ms(一个时间片时钟节拍),然后交替做这两件 事,因为速度很快,从宏观的意义上来看,类似同步执行! 阅读详情

提示:FreeRTOS常用API接口函数:并对部分参数附上自己的解释,后面继续补充


TaskHandle_t 任务句柄的类型
XXXXType_t 都可以输入数字为uint32
函数名的前缀有2部分:返回值类型、在哪个文件定义。
在这里插入图片描述

1.任务相关的API

TaskHandle_t    task1;//任务句柄  表示任务
TaskHandle_t * const pxCreatedTask//    应该传入  &task1  

1.1 创建任务:xTaskCreate

BaseType_t xTaskCreate( 	TaskFunction_t pxTaskCode,//对应任务函数
                            const char * const pcName, //给任务取名字 字符串
                 			//FreeRTOS中有限制任务取名字最大长度为configMAX_TASK_NAME_LEN
                            const configSTACK_DEPTH_TYPE usStackDepth,//为该任务分配的栈大小,单位为word,10表示40字节
                            void * const pvParameters,//调用任务函数时传入的参数
                            UBaseType_t uxPriority,//任务优先级
                            TaskHandle_t * const pxCreatedTask )// 以后使用它来操作这个任务
//返回值:

1.2 开启任务调度器函数:vTaskStartScheduler

void vTaskStartScheduler( void );

1.3 任务的删除:vTaskDelete

功能:删除任务

void vTaskDelete( TaskHandle_t 任务句柄P );//删除任务句柄代表的任务
//任务句柄P来指定任务,值为NULL时,表示暂停自己。

1.3 任务的挂起:vTaskSuspend

功能:挂起任务

void vTaskSuspend( TaskHandle_t 任务句柄P );//挂起任务句柄代表的任务
//用任务句柄P来指定任务,值为NULL时,表示暂停自己。

1.3 任务的恢复:vTaskResume & xTaskResumeFromISR

功能:重新启动被Suspend(挂起)的任务

void vTaskResume( TaskHandle_t 任务句柄P );//恢复 任务句柄P代表的任务
//使用任务句柄P来指定任务,值为NULL时,表示暂停自己。

1.3获取任务的任务句柄:xTaskGetHandle

xTaskGetHandle("创建任务是取的名字:字符串")

2.优先级的API

2.1 获得任务的优先级:uxTaskPriorityGet

UBaseType_t uxTaskPriorityGet( const TaskHandle_t 任务句柄P );
//使用参数xTask来指定任务,设置为NULL表示获取自己的优先级。

2.2 设置任务的优先级:uxTaskPrioritySet

void vTaskPrioritySet( TaskHandle_t xTask,
                       UBaseType_t uxNewPriority );
//使用参数xTask来指定任务,设置为NULL表示获取自己的优先级。   
//参数uxNewPriority表示新的优先级,取值范围是0~(configMAX_PRIORITIES – 1)                

3.阻塞延迟函数

3.1 相对延迟函数:vTaskDelay

void vTaskDelay( const TickType_t xTicksToDelay ); /* xTicksToDelay: 等待多少给Tick */
//vTaskDelay(100);100个tick
//vTaskDelay(pdMS_TO_TICKS(100)); // 延迟 100 毫秒

3.2 绝对延迟函数:xTaskDelayUntil

BaseType_t xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
                            const TickType_t xTimeIncrement );
/* pxPreviousWakeTime: 上一次被唤醒的时间
 * xTimeIncrement: 要阻塞到(pxPreviousWakeTime + xTimeIncrement)
 * 单位都是Tick Count
 * vTaskDelayUntil(&preTime, 500)
 */

示例代码:需要配合 xTaskGetTickCount()使用

void LcdPrintTask(void *params)
{
	//变量的定义和初始化
	struct TaskPrintInfo *pInfo = params;
	uint32_t cnt = 0;
	int len;
	BaseType_t preTime;
	uint64_t t1, t2;
	preTime = xTaskGetTickCount();//###################关键点,第一次进入循环时候记录
	//FreeRTOS调度器启动之后,任务会在循环里面一直运行,其实调度器启动后调用过一次该任务函数,只是在频繁切换任务,任务函数从头到尾就运行过一次,为了防止任务函数停止,需要在里面加入死循环while(1){};
	//why:
	while (1)//while里面为真正的业务代码。
	{
		/* 打印信息 */
		if (g_LCDCanUse)
		{
			g_LCDCanUse = 0;
			len = LCD_PrintString(pInfo->x, pInfo->y, pInfo->name);
			len += LCD_PrintString(len, pInfo->y, ":");
			LCD_PrintSignedVal(len, pInfo->y, cnt++);
			g_LCDCanUse = 1;
			mdelay(cnt & 0x3);
		}
		
		t1 = system_get_ns();
		//vTaskDelay(500);  // 500000000
		
		vTaskDelayUntil(&preTime, 500);///关键代码
		t2 = system_get_ns();
		
		LCD_ClearLine(pInfo->x, pInfo->y+2);
		LCD_PrintSignedVal(pInfo->x, pInfo->y+2, t2-t1);
	}
}

4.队列

队列(queue)可以用于"任务到任务"、“任务到中断”、"中断到任务"直接传输信息。

在这里插入图片描述
在这里插入图片描述

4.1创建队列 xQueueCreate

QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize );
//uxQueueLength:队列长度,最多能存放多少个数据(item)
//uxItemSize:以字节为单位
//返回值:非0:成功,返回句柄,以后使用句柄来操作队列 NULL:失败,因为内存不足

4.1复位队列 xQueueReset

队列刚被创建时,里面没有数据;使用过程中可以调用 xQueueReset() 把队列恢复为初始状态

/*  pxQueue : 复位哪个队列;
 * 返回值: pdPASS(必定成功)
*/
BaseType_t xQueueReset( QueueHandle_t pxQueue);

4.1删除队列 xQueueDelete

删除队列的函数为 vQueueDelete() ,只能删除使用动态方法创建的队列,它会释放内存。

void vQueueDelete( QueueHandle_t xQueue );

4.1写队列

可以把数据写到队列头部,也可以写到尾部,这些函数有两个版本:在任务中使用、在ISR中使用。

4.1队列尾部写入数据:xQueueSend & xQueueSendToBackFromISR(中断)

/* 等同于xQueueSendToBack
 * 往队列尾部写入数据,如果没有空间,阻塞时间为xTicksToWait
 */
BaseType_t xQueueSend(
QueueHandle_t    xQueue,//队列句柄
const void       *pvItemToQueue,//数据指针,这个数据的值会被复制进队列, 复制多大的数据?在创建队列时已经指定了数据大小
TickType_t       xTicksToWait//如果队列满则无法写入新数据,可以让任务进入阻塞状态, xTicksToWait表示阻塞的最大时间(Tick Count)。 如果被设为0,无法写入数据时函数会立刻返回; 如果被设为portMAX_DELAY,则会一直阻塞直到有空间可写
);
/* 
 * 往队列尾部写入数据,此函数可以在中断函数中使用,不可阻塞
 */
BaseType_t xQueueSendToBackFromISR(
QueueHandle_t xQueue,//队列句柄
const void *pvItemToQueue,//数据指针,这个数据的值会被复制进队列, 复制多大的数据?在创建队列时已经指定了数据大小
BaseType_t *pxHigherPriorityTaskWoken//处中断前,是否执行比当前任务更高优先级的任务
//设置为TRUE 表示出中断时,立刻切换该函数
//设置为Flase 表示出中断时,在下一个tick处,在切换该函数
                                      
                                   );
FreeRTOS应用开发常用函数汇总 阅读详情

相关推荐

【RTOS】快速体验FreeRTOS所有常用API(11)打印空闲栈、CPU占用比

是一个 FreeRTOS 函数,用于获取系统中每个任务的运行时间统计信息。这个函数允许你了解每个任务在系统中的运行时间百分比,以及每个任务实际运行的时钟滴答数。此外,FreeRTOS 还提供了与空闲任务关联的钩子函数,空闲任务的循环每执行一次,就会调用一次钩子函数。在FreeRTOS中,要打印任务的空闲栈(空余空间),可以使用任务状态查询函数。要打印所有任务的栈信息,你可以使用FreeRTOS的任务列表查询函数。FreeRTOS 中的空闲任务是一个特殊的任务,优先级为0。

xifan的博客 2935

FreeRTOS简介及API函数使用方法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

园长QwQ 4252

FreeRTOS基础(十):FreeRTOS任务状态查询API函数介绍

此函数用于获取指定任务的任务优先级,使用该函数需将宏置12.2.2 改变某个任务的任务优先级此函数用于改变某个任务的任务优先级,使用该函数需将宏为12.2.3 获取系统中任务的任务数量此函数用于获取系统中任务的任务数量。

weixin_47040031的博客 2184

FreeRTOS相关API函数

FreeRTOS相关API函数

weixin_45969007的博客 3265

【Flink cdc】Data row is smaller than a column index, internal schema representation is probably xxx

翻译一下:当scan.startup.mode=EARLIEST_OFFSET时,如果在最早的offset之后表结构有过变化就无法支持。原因应该是在binlog 的earliest_offset之后,表结构被修改过。我的解决方案:source配置中使用。mysql source配置使用。,以时间戳为消费依据。

integrity 2085

智能循迹小车之PID控制算法

从光电传感器获取信号确认小车和黑线的偏离角度,通过PID算法算出左右车轮速度,控制小车前进或者后退。

yzj199921的博客 4640

FreeRTOS操作系统常用函数接口

FreeRTOS操作系统常用函数接口

一年之内毫无半点成绩,想起来做人真是没趣。 575

C# 实现鼠标轨迹录制与回放自动化功能(附源码)

通过本文的介绍,相信大家已经掌握了鼠标轨迹录制与回放功能的实现方式。该功能在自动化测试和重复性工作中具有重要应用价值。后续可以进一步优化,增加更多扩展功能,形成一个完整的自动化工具。

weixin_72139050的博客 1756

FreeRTOS常用API函数

freeRTOS学习笔记

2301_76950640的博客 1623

echarts 生成中国陕西省份(或其他省份)的地图,大屏使用

效果图: 一、首先第一步需要下载echarts和获取到陕西身份的地图信息。 1.下载echarts链接(官网): Apache ECharts 2.生成指定省份的地图数据信息,数据可以在阿里云获取。 DataV.GeoAtlas地理小工具系列 如图,点击左圈需要的省份,这里我选择的是陕西省,然后点击右圈复制下载链接,得到一个json格式的数据,可以在json转换网站转成js格式。 Json在线解析格式化-Json在线校验Json格式化压缩-Jsons在线工具 转成js格.

PrimaryColor 3890

【CT/电镜 重建教程 1.1】层析成像的精确实空间迭代重建算法(RESIRE)

在此,我们报告了RESIRE算法的发展用于准确的断层重建。与实空间迭代算法相比,RESIRE使用傅里叶切片定理或Radon变换作为正向投影,使用线性变换作为反向投影,两者都具有高精度。与EST和GENFIRE相比,RESIRE是一种实空间迭代算法,可以在并行计算中实现快速运行时间。

2401_87064292的博客 1062

【FreeRTOS】消息队列——简介、常用API函数、注意事项、项目实现

队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息。

Goforyouqp的博客 3644

基于 MATLAB BP 神经网络的财务预测

通过基于 MATLAB BP 神经网络的财务预警模型,我们可以对企业的财务风险进行有效地识别和预测。在具体实现过程中,需要注意对财务数据的预处理、模型参数的调整以及结果的解释等问题。MLP模型的输入层、输出层和隐含层之间均为全连接,每个神经元都是上一层神经元的加权求和再加偏置后的非线性变换。其中,输入层接受财务数据,输出层输出财务预测结果,隐含层则对输入数据进行处理和抽象。其中,X’是标准化后的值,X是原始值,μ_i 和σ_i 分别是指标 i 在样本中的均值和标准差。其中,X’是标准化后的值,X是原始值。

TechPulseZ的博客 922

FreeRTOS常用API

FreeRTOS常用API 一、任务[task.h] 1、任务创建 如果任务成功创建并加入就绪列表函数返回pdPASS,否则函数返回错误码,具体参见projdefs.h。 xTaskCreate((TaskFunction_t) master_task_main, /* 任务入口函数 */ “MASTER”, /* 任务名字 */ 64*1024, /* 任务栈大小 */ NULL,

qq_40604302的博客 1856

Nmap源码分析(端口扫描)

端口扫描是Nmap的核心功能,用于确定目标机的端口状态(开放、关闭、过滤等),也为Nmap的服务与版本扫描、OS扫描、脚本扫描提供基本的指引信息。所以,深入理解端口扫描的实现对分析其他的扫描方式很有帮助。 1简单回顾   首先简要回顾一下端口扫描的原理以及命令行选项。 1.1扫描原理   Nmap提供的10多种类型的端口扫描方法,如TCP SYN/ACK/FIN/Xmas/NULL/ Windows/Connect,FTP Bounce, Idle scan, UDP port u...

墨痕诉清风的博客 1597

华为OD机考2025C卷 - 精准核酸检测(Java & Python& JS & C++ & C语言)

华为OD机考2025C卷 - 精准核酸检测,提供在线OJ Java & Python& JS & C++ & C

算法大师! 2882

Freertos中其他常用的API

补充FREERTOS相关API函数

weixin_45854148的博客 1048

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【RTOS】快速体验FreeRTOS所有常用API(1)工程创建

使用STM32CubeMX,可以手工添加任务、队列、信号量、互斥锁、定时器等等。FreeRTOS的参数包括时基频率、任务堆栈大小、是否使能互斥锁等等,需要开发者根据自己对FreeRTOS的了解以及项目开发的需求,来定制参数。添加MCU-F103等用户自己的代码,包含LED、UART、OLED驱动等。修改 默认任务 的代码为下图,用于测试LED、UART、OLED程序。选择下载器类型,我用的是DAP。该代码尽量做到最简,不添加多余的、不规范的代码。这次用的外设有:LED、串口调试、OLED显示。

xifan的博客 2232

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

FreeRTOS常用接口函数

任务删除:。任务暂停:。任务恢复:。任务切换:taskYIELD。任务统计:。任务调度:。任务延时:vTaskDelay。创建队列:。队列入队:xQueueSend。队列出队:xQueuePeekxQueuePeekFromISR二值信号量创建:。技术信号量创建:。互斥信号量创建:。递归互斥信号量创建:。信号量释放:。信号量获取:。信号量删除:。软件定时器创建:。软件定时器复位:。软件定时器开启:。软件定时器停止:

corlin6688的博客 518

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

04_FreeRTOS任务信息常用API

主要对任务的优先级、数量、状态等信息进行配置与查询。

Zero_092的博客 1399

FREERTOS笔记(二) 中断及常用任务api

FREERTOS笔记(二) 文章目录FREERTOS笔记(二)一、freertos中断二、freertos任务优先级三、创建一个最简单的任务四、其它常见基础任务api使用(持续更新中) 一、freertos中断 关于中断freertos还是较为复杂的,主要还和m3/m4内核有关,这里主要讲关键一些的(用户有必要了解的),过于底层的就跳过。 //FreeRTOSConfig.h /* The highest interrupt priority that can be used by any interru

gxt_kt的博客 1517

Freertos 实用API汇总

——————————————————————————————————————————— 作者:soupllen 一、任务创建与删除 任务的创建 任务的删除 二、系统内核控制函数 三、其他任务 API 函数 四、时间管理(延迟) 五、消息队列 创建队列 发送队列消息 接收队列消息 六、信号量 定义信号量句柄 创建信号量 释放和等待互斥量 七、定时器 创建定时器 启动定时器 获取定时器ID,根据ID进行任务回调使用 八、 调 度 锁、临界段、任务控制 (..

weixin_42895086的博客 6711

FreeRTOS之其他常用API函数

•。

luoyanglook的博客 860

FreeRTOS常用API函数详细说明使用(FreeRTOS从入门到放弃)

1. 任务的创建与删除 2. 任务调度 3. 队列 4. 二值信号量 5. 计数型信号量 6. 互斥量 7. 事件标志位 8. 任务通知(可以用来模拟) 9. 延迟函数 10. 软件定时器 11. 中断管理 12. STM32小车+FreeRTOS

m0_63211938的博客 5276

FreeRTOS API速查

FreeRTOS API速查

qq_53381910的博客 1398
上一篇: 温湿度传感器 Datasheet SHT20 (I2C)
下一篇: 关于FreeRTOS知识点总结
物语系列
博客等级 码龄6年 582粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值