FreeRTOSConfig.h的作用
FreeRTOSConfig.h
是 FreeRTOS 实时操作系统的核心配置文件,开发者通过修改此文件中的宏定义,可以定制 FreeRTOS 的功能、资源分配和调度行为。它是 FreeRTOS 的“中枢神经”,直接影响内核的编译选项和运行时行为。
调度策略配置
-
configUSE_PREEMPTION
启用(1)或禁用(0)抢占式调度。-
抢占式:高优先级任务可中断低优先级任务。
-
协作式:任务需主动释放 CPU(如调用
taskYIELD()
)。
-
-
configUSE_TIME_SLICING
启用(1)或禁用(0)时间片轮转调度。-
同优先级任务共享 CPU,按固定时间片轮流执行。
-
-
configMAX_PRIORITIES
定义系统支持的最大任务优先级数(通常设置为 5~32)。-
优先级 0 为最低,数值越大优先级越高。
-
内存管理配置
-
configTOTAL_HEAP_SIZE
定义 FreeRTOS 动态内存堆的总大小(字节)。-
动态内存用于任务栈、队列、信号量等对象的分配。
-
需根据任务数量和资源需求合理分配(如
(20 * 1024)
表示 20KB)。
-
-
configSUPPORT_STATIC_ALLOCATION
启用(1)或禁用(0)静态内存分配。-
若启用,需用户手动分配任务栈和 TCB(如
StaticTask_t
)。
-
内核功能裁剪
-
configUSE_QUEUES
启用(1)或禁用(0)队列功能。 -
configUSE_MUTEXES
启用(1)或禁用(0)互斥锁功能。 -
configUSE_TIMERS
启用(1)或禁用(0)软件定时器功能。 -
configUSE_IDLE_HOOK
启用(1)或禁用(0)空闲任务钩子函数,用于低功耗模式或后台任务。
调试与统计
-
configUSE_TRACE_FACILITY
启用(1)或禁用(0)调试追踪功能,支持任务状态查询。 -
configGENERATE_RUN_TIME_STATS
启用(1)或禁用(0)任务运行时间统计(需实现portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
)。
硬件适配
-
configCPU_CLOCK_HZ
定义 CPU 主频(如80000000
表示 80MHz)。 -
configTICK_RATE_HZ
定义系统节拍(Tick)频率(如 1000Hz 表示 1ms 一个 Tick)。
典型配置
/* FreeRTOSConfig.h */// 调度配置
#define configUSE_PREEMPTION 1 // 启用抢占式调度
#define configUSE_TIME_SLICING 1 // 启用时间片轮转
#define configMAX_PRIORITIES 5 // 最大优先级数// 内存配置
#define configTOTAL_HEAP_SIZE (20 * 1024) // 堆大小20KB
#define configSUPPORT_STATIC_ALLOCATION 1 // 启用静态内存分配// 功能模块
#define configUSE_QUEUES 1 // 启用队列
#define configUSE_MUTEXES 1 // 启用互斥锁
#define configUSE_TIMERS 1 // 启用软件定时器// 调试与统计
#define configUSE_TRACE_FACILITY 1 // 启用调试追踪
#define configGENERATE_RUN_TIME_STATS 1 // 启用运行时间统计// 硬件适配
#define configCPU_CLOCK_HZ 80000000 // CPU频率80MHz
#define configTICK_RATE_HZ 1000 // 系统Tick频率1kHz