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,可以减少代码和资源。
|
|