FreeRTOS 学习笔记(2)—— 系统配置

FreeRTOS的配置主要通过FreeRTOSConfig.h文件中的宏定义完成,包括“INCLUDE_”和“config”开头的宏。这些宏用于裁剪内核功能,如使能或禁用特定API,以及调整系统行为,如堆内存管理、堆栈溢出检测和中断优先级配置。此外,文章还介绍了如configAPPLICATION_ALLOCATED_HEAP、configASSERT、configCHECK_FOR_STACK_OVERFLOW等重要配置选项的作用和使用场景。

一、FreeRTOSConfig.h 文件 

在实际使用 FreeRTOS 的时候我们时常需要根据自己需求来配置 FreeRTOS,而且不同架构的 MCU 在使用的时候配置也不同。FreeRTOS 的系统配置基本是通过在 FreeRTOSConfig.h 中使用 “#define” 这样的语句来定义宏定义实现的。在此配置文件中可以完成 FreeRTOS 的裁剪和配置,这是非常重要的一个文件。在 FreeRTOS 的官方 demo 中,每个工程都有一个 FreeRTOSConfig.h 文件,我们在使用的时候可以参考这个文件,甚至直接复制粘贴使用。

二、“INCLUDE_” 开始的宏 

使用 “INCLUDE_” 开头的宏用来表示使能或除能 FreeRTOS 中相应的 API 函数,作用就是用来配置 FreeRTOS 中的可选 API 函数的。比如当宏 INCLUDE_vTaskPrioritySet 设置为 0 的时候表示不能使用函数 vTaskPrioritySet() ,当设置为 1 的时候就表示可以使用函数 vTaskPrioritySet() ,这个功能其实就是条件编译。

FreeRTOS 中的裁剪和配置就是这种用条件编译的方法来实现的,不止 FreeRTOS 这么干,很多的协议栈、RTOS 系统和 GUI 库等都是使用条件编译的方法来完成配置和裁剪的。条件编译的好处就是节省空间,不需要的功能就不用编译,这样就可以根据实际需求来减少系统占用的 ROM 和 RAM 大小,根据自己所使用的 MCU 来调整系统消耗,降低成本。

“INCLUDE_” 开始的宏和其功能如下:

1. INCLUDE_xSemaphoreGetMutexHolder

如果要使用函数 xQueueGetMutexHolder() 的话宏 INCLUDE_xSemaphoreGetMutexHolder 必须定义为 1。

2. INCLUDE_xTaskAbortDelay

如果要使用函数 xTaskAbortDelay() 的话将宏 INCLUDE_xTaskAbortDelay 定义为 1。

3. INCLUDE_vTaskDelay

如果要使用函数 vTaskDelay() 的话需要将宏 INCLUDE_vTaskDelay 定义为 1。

4. INCLUDE_vTaskDelayUntil

如果要使用函数 vTaskDelayUntil() 的话需要将宏 INCLUDE_vTaskDelayUntil 定义为 1。

5. INCLUDE_vTaskDelete

如果要使用函数 vTaskDelete()的话需要将宏 INCLUDE_vTaskDelete 定义为 1。

6. INCLUDE_xTaskGetCurrentTaskHandle

如果要使用函数 xTaskGetCurentTaskHandle() 的话需要将宏 INCLUDE_xTaskGetCurrentTaskHandle 定义为 1。

7. INCLUDE_xTaskGetHandle

如果要使用函数 xTaskGetHandle() 的话需要将宏 INCLUDE_xTaskGetHandle 定义为 1。

8. INCLUDE_xTaskGetIdleTaskHandle

如果要使用函数 xTaskGetIdleTaskHandle() 的话需要将宏 INCLUDE_xTaskGetIdleTaskHandle 定义为 1。

9. INCLUDE_xTaskGetSchedulerState

如果要使用函数 xTaskGetSchedulerState() 的话需要将宏 INCLUDE_xTaskGetSchedulerState 定义为 1。

10. INCLUDE_uxTaskGetStackHighWaterMark

如果要使用函数 uxTaskGetStackHighWaterMark() 的话需要将宏 INCLUDE_uxTaskGetStackHighWaterMark 定义为 1。

11. INCLUDE_uxTaskPriorityGet

如果要使用函数 uxTaskPriorityGet() 的话需要将宏 INCLUDE_uxTaskPriorityGet 定义为 1。

12. INCLUDE_vTaskPrioritySet

如果要使用函数 vTaskPrioritySet() 的话需要将宏 INCLUDE_vTaskPrioritySet 定义为 1。

13. INCLUDE_xTaskResumeFromISR

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小蟹总

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值