freeRTOS是一个可裁剪的小型RTOS系统

如题。

一直不太明白什么叫可裁剪。

今天学习了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

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值