一、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。

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





