分享

Freertos之系统配置

 心不留意外尘 2016-08-06
http://bluefish.blog.51cto.com/214870/163430
2009

freeRTOS 配置在:FREERTOS_CONFIG.H 里面,条目如下:
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
/* Here is a good place to include header files that are required across your application. */
#include "something.h"
/* 是否配置成抢先先多任务内核,是1的时候,优先级高的任务优先执行。 为0任务就没有优先级之说,用时间片轮流执行 */
#define configUSE_PREEMPTION                1 
 
/* IDLE任务的HOOK函数,用于OS功能扩展,需要你自己编相应函数, 名字是void vApplicationIdleHook( void ) */
#define configUSE_IDLE_HOOK                   0    
 
/* SYSTEM TICK的HOOK函数,用于OS功能扩展,需要你自己编相应函数, 名字是 void vApplicationTickHook(void ) */
 #define configUSE_TICK_HOOK                 0 
 
/* 系统CPU频率,单位是Hz */
#define configCPU_CLOCK_HZ                  58982400 
 
/* 系统SYSTEM TICK每秒钟的发生次数, 数值越大系统反应越快,但是CPU用在任务切换的开销就越多 */
#define configTICK_RATE_HZ                      250 
/* 系统任务优先级数。5 说明任务有5级优先度。这个数目越大耗费RAM越多 */
#define configMAX_PRIORITIES                      5  
 
/* 系统最小堆栈尺寸,注意128不是128字节,而是128个入栈。比如ARM32位,128个入栈就是512字节 */ 
#define configMINIMAL_STACK_SIZE            128 
 
/* 系统可用内存。一般设成除了操作系统和你的程序所用RAM外的最大RAM。 比如20KRAM你用了2K,系统用了3K,剩下15就是最大HEAP 尺寸。你可以先设小然后看编译结果往大里加*/
#define configTOTAL_HEAP_SIZE                       10240
 
/* 任务的PC名字最大长度,因为函数名编译完了就不见了,所以追踪时不知道哪个名字。16表示16个char */
#define configMAX_TASK_NAME_LEN             16
 
/* 是否设定成追踪,由PC端TraceCon.exe记录,也可以转到系统显示屏上 */
#define configUSE_TRACE_FACILITY                  0
 
/* 就是SYSTEM TICK的长度,16是16位,如果是16位以下CPU, 一般选1;如果是32位系统,一般选0 */
#define configUSE_16_BIT_TICKS                          0
 
/* 简单理解以下就是和IDLE TASK同样优先级的任务执行情况。建议设成1,对系统影响不大 */
#define configIDLE_SHOULD_YIELD                     1
 
/* 是否用MUTEXES。 MUTEXES是任务间通讯的一种方式,特别是用于任务共享资源的应用,比如打印机,任务A用的时候就排斥别的任务应用,用完了别的任务才可以应用 */
#define configUSE_MUTEXES                                     0  
 
/*  确定是否用递归式的MUTEXES */
#define configUSE_RECURSIVE_MUTEXES              0
 
/* 是否用计数式的SEMAPHORES,SEMAPHORES也是任务间通讯的一种方式 */
#define configUSE_COUNTING_SEMAPHORES       0
 
/* 是否应用可切换式的API。freeRTOS 同一功能API有多个,有全功能但是需求资源和时间较多的,此项使能后就可以用较简单的API, 节省资源和时间,但是应用限制较多 */
#define configUSE_ALTERNATIVE_API                       0 
 
 
 /* 此项用于DEBUG,来看是否有栈溢出,需要你自己编相应检查函数void vApplicationStackOverflowHook(xTaskHandle *pxTask, signed portCHAR *pcTaskName )  */
#define configCHECK_FOR_STACK_OVERFLOW      0
/* 用于DEBUG,登记SEMAPHORESQ和QUEUE的最大个数,需要在任务用应用函数vQueueAddToRegistry()和vQueueUnregisterQueue()  */
#define configQUEUE_REGISTRY_SIZE                        10 
 /* 设定可以改变任务优先度 */
 #define INCLUDE_vTaskPrioritySet                               1
 
 /* 设定可以查询任务优先度 */
#define INCLUDE_uxTaskPriorityGet                              1
 
 /* 设定可以删除任务 */
 #define INCLUDE_vTaskDelete                                       1    
 
/* 据说是可以回收删除任务后的资源(RAM等)*/
 #define INCLUDE_vTaskCleanUpResources                 0 
 
/* 设置可以把任务挂起 */
#define INCLUDE_vTaskSuspend                                     1 
/* 设置可以从中断恢复(比如系统睡眠,由中断唤醒 */
#define INCLUDE_vResumeFromISR                                1 
 
 /* 设置任务延迟的绝对时间,比如现在4:30,延迟到5:00。时间都是绝对时间 */
#define INCLUDE_vTaskDelayUntil                                  1 
 
 /* 设置任务延时,比如延迟30分钟,相对的时间,现在什么时间,不需要知道 */
#define INCLUDE_vTaskDelay                                           1  
 
/* 设置 取得当前任务分配器的状态 */
#define INCLUDE_xTaskGetSchedulerState                      1
 
/* 设置当前任务是由哪个任务开启的 */
#define INCLUDE_xTaskGetCurrentTaskHandle              1 
 
/* 是否使能这一函数,还数的目的是返回任务执行后任务堆栈的最小未用数量,同样是为防止堆栈溢出 */
#define INCLUDE_uxTaskGetStackHighWaterMark       0 
/* 是用用协程。协程公用堆栈,节省RAM,但是没有任务优先级高,也无法和任务通讯 */
#define configUSE_CO_ROUTINES                                   0   
 
 /* 所有协程的最大优先级数,协程优先级永远低于任务。就是系统先执行任务,所有任务执行完了才执行协程。*/
#define configMAX_CO_ROUTINE_PRIORITIES          1 
 
/*  系统内核的中断优先级,中断优先级越低,越不会影响其他中断。一般设成最低 */
#define configKERNEL_INTERRUPT_PRIORITY            [dependent of processor] 
 
/* 系统SVC中断优先级,这两项都在在M3和PIC32上应用 */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY  [dependent on processor and application] 
#endif /* FREERTOS_CONFIG_H */
一般来说,如果用不上的功能都要设成0,可以减少代码和资源。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多