如题。
一直不太明白什么叫可裁剪。
今天学习了FreeRTOSConfig.h文件,也算是有一定的了解了。
这里面基本上都是一些宏定义,有“INCLUDE_”、"config"这两种开头的宏,要的功能定义为1不要的功能定义为0,就可以实现各种任务、队列、信号量函数内容的裁剪了。
说直接点,是利用条件编译进行裁剪。
拷贝了一下这些宏定义:
我目前还没有把所有的宏定义看完,所以具体的功能还不太明白,不过可以从字面意思上了解。
直接看下面这些吧。
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_xResumeFromISR 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1 (是否有)
#define INCLUDE_xTaskGetSchedulerState 1
#define INCLUDE_xTaskGetCurrentTaskHandle 1
#define INCLUDE_uxTaskGetStackHighWaterMark 0
#define INCLUDE_xTaskGetIdleTaskHandle 0
#define INCLUDE_eTaskGetState 0
#define INCLUDE_xEventGroupSetBitFromISR 1
#define INCLUDE_xTimerPendFunctionCall 0
#define INCLUDE_xTaskAbortDelay 0
#define INCLUDE_xTaskGetHandle 0
#define INCLUDE_xTaskResumeFromISR 1
#define configUSE_PREEMPTION 1 //使能/禁能 抢占式调度器
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 //优化优先级列表中要执行的最高优先级任务的算法,0:通用平台;1:专用平台
#define configUSE_TICKLESS_IDLE 0 //使能/禁能 低功耗模式
#define configCPU_CLOCK_HZ 60000000 //定义CPU主频率/
#define configTICK_RATE_HZ 250 //定义系统时钟节拍数
#define configMAX_PRIORITIES 5 //任务的最大优先级,根据需要修改
#define configMINIMAL_STACK_SIZE 128 //空闲任务的堆栈字(4字节)大小
#define configMAX_TASK_NAME_LEN 16 //任务名最大字符数
#define configUSE_16_BIT_TICKS 0 //系统节拍计数16位/32位(32位处理器禁止)
#define configIDLE_SHOULD_YIELD 1 //使能/禁能 空闲任务同优先级的任务
#define configUSE_TASK_NOTIFICATIONS 1 //使能/禁能 任务间的消息传递
#define configUSE_MUTEXES 0 //使能/禁能 互斥信号量
#define configUSE_RECURSIVE_MUTEXES 0 //使能/禁能 递归互斥信号量
#define configUSE_COUNTING_SEMAPHORES 0 //使能/禁能 计数信号量
#define configUSE_ALTERNATIVE_API 0 //建议不要用(新版本freeRTOS会删除此配置)
#define configQUEUE_REGISTRY_SIZE 10 //定义注册信号量和消息队列个数
#define configUSE_QUEUE_SETS 0 //使能/禁能 消息队列
#define configUSE_TIME_SLICING 0 //使能/禁能 时间片调度
#define configUSE_NEWLIB_REENTRANT 0 //使能/禁能 任务创建的时候将分配 Newlib 的重入结构体
#define configENABLE_BACKWARD_COMPATIBILITY 0 //使能/禁能 使能新版本对老版本的兼容特性
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5 //定义线程局部指针变量的个数
#define configSUPPORT_STATIC_ALLOCATION 1
#define configSUPPORT_DYNAMIC_ALLOCATION 1
#define configTOTAL_HEAP_SIZE 10240 /* 为FreeRTOS分配的内存,具体和选择的heap_x.c相关 */
#define configAPPLICATION_ALLOCATED_HEAP 1
#define configUSE_IDLE_HOOK 0 //使能/禁能 空闲任务的钩子函数
#define configUSE_TICK_HOOK 0 //使能/禁能 滴答定时器中断里面执行的钩子函数
#define configCHECK_FOR_STACK_OVERFLOW 0 //0:禁止栈溢出检测;1栈溢出检测使用方法一;2:栈溢出检测使用方法二
#define configUSE_MALLOC_FAILED_HOOK 0 //使能/禁能 动态内存申请失败时的钩子函数
#define configUSE_DAEMON_TASK_STARTUP_HOOK 0 //
/* Run time and task stats gathering related definitions. */
#define configGENERATE_RUN_TIME_STATS 0 //使能/禁能 任务运行状态参数统计
#define configUSE_TRACE_FACILITY 0 //使能/禁能 添加额外的结构体成员和函数
#define configUSE_STATS_FORMATTING_FUNCTIONS 0 //
#define configUSE_CO_ROUTINES 0 //使能/禁能 合作式调度相关函数
#define configMAX_CO_ROUTINE_PRIORITIES 1 //定义可供用户使用的最大的合作式任务优先级数
#define configUSE_TIMERS 1 //使能/禁能 软件定时器
#define configTIMER_TASK_PRIORITY 3 //配置软件定时器任务的优先级
#define configTIMER_QUEUE_LENGTH 10 //配置软件定时器命令队列的长度
#define configTIMER_TASK_STACK_DEPTH 10 //配置软件定时器任务的栈空间大小
#define configKERNEL_INTERRUPT_PRIORITY [dependent of processor]
#define configMAX_SYSCALL_INTERRUPT_PRIORITY [dependent on processor and application]
#define configMAX_API_CALL_INTERRUPT_PRIORITY [dependent on processor and application]
/* Define to trap errors during development. */
#define configASSERT( ( x ) ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )
/* FreeRTOS MPU specific definitions. */
#define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0