http://bluefish.blog.51cto.com/214870/163430 2009 轉(zhuǎn)自:http://www./html/42/t-2642.html
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" /* 是否配置成搶先先多任務(wù)內(nèi)核,是1的時候,優(yōu)先級高的任務(wù)優(yōu)先執(zhí)行。 為0任務(wù)就沒有優(yōu)先級之說,用時間片輪流執(zhí)行 */
#define configUSE_PREEMPTION 1
/* IDLE任務(wù)的HOOK函數(shù),用于OS功能擴展,需要你自己編相應(yīng)函數(shù), 名字是void vApplicationIdleHook( void ) */
#define configUSE_IDLE_HOOK 0
/* SYSTEM TICK的HOOK函數(shù),用于OS功能擴展,需要你自己編相應(yīng)函數(shù), 名字是 void vApplicationTickHook(void ) */
#define configUSE_TICK_HOOK 0
/* 系統(tǒng)CPU頻率,單位是Hz */
#define configCPU_CLOCK_HZ 58982400
/* 系統(tǒng)SYSTEM TICK每秒鐘的發(fā)生次數(shù), 數(shù)值越大系統(tǒng)反應(yīng)越快,但是CPU用在任務(wù)切換的開銷就越多 */
#define configTICK_RATE_HZ 250
/* 系統(tǒng)任務(wù)優(yōu)先級數(shù)。5 說明任務(wù)有5級優(yōu)先度。這個數(shù)目越大耗費RAM越多 */
#define configMAX_PRIORITIES 5
/* 系統(tǒng)最小堆棧尺寸,注意128不是128字節(jié),而是128個入棧。比如ARM32位,128個入棧就是512字節(jié) */
#define configMINIMAL_STACK_SIZE 128
/* 系統(tǒng)可用內(nèi)存。一般設(shè)成除了操作系統(tǒng)和你的程序所用RAM外的最大RAM。 比如20KRAM你用了2K,系統(tǒng)用了3K,剩下15就是最大HEAP 尺寸。你可以先設(shè)小然后看編譯結(jié)果往大里加*/
#define configTOTAL_HEAP_SIZE 10240
/* 任務(wù)的PC名字最大長度,因為函數(shù)名編譯完了就不見了,所以追蹤時不知道哪個名字。16表示16個char */
#define configMAX_TASK_NAME_LEN 16
/* 是否設(shè)定成追蹤,由PC端TraceCon.exe記錄,也可以轉(zhuǎn)到系統(tǒng)顯示屏上 */
#define configUSE_TRACE_FACILITY 0
/* 就是SYSTEM TICK的長度,16是16位,如果是16位以下CPU, 一般選1;如果是32位系統(tǒng),一般選0 */
#define configUSE_16_BIT_TICKS 0
/* 簡單理解以下就是和IDLE TASK同樣優(yōu)先級的任務(wù)執(zhí)行情況。建議設(shè)成1,對系統(tǒng)影響不大 */
#define configIDLE_SHOULD_YIELD 1
/* 是否用MUTEXES。 MUTEXES是任務(wù)間通訊的一種方式,特別是用于任務(wù)共享資源的應(yīng)用,比如打印機,任務(wù)A用的時候就排斥別的任務(wù)應(yīng)用,用完了別的任務(wù)才可以應(yīng)用 */
#define configUSE_MUTEXES 0
/* 確定是否用遞歸式的MUTEXES */
#define configUSE_RECURSIVE_MUTEXES 0
/* 是否用計數(shù)式的SEMAPHORES,SEMAPHORES也是任務(wù)間通訊的一種方式 */
#define configUSE_COUNTING_SEMAPHORES 0 /* 是否應(yīng)用可切換式的API。freeRTOS 同一功能API有多個,有全功能但是需求資源和時間較多的,此項使能后就可以用較簡單的API, 節(jié)省資源和時間,但是應(yīng)用限制較多 */
#define configUSE_ALTERNATIVE_API 0
/* 此項用于DEBUG,來看是否有棧溢出,需要你自己編相應(yīng)檢查函數(shù)void vApplicationStackOverflowHook(xTaskHandle *pxTask, signed portCHAR *pcTaskName ) */
#define configCHECK_FOR_STACK_OVERFLOW 0 /* 用于DEBUG,登記SEMAPHORESQ和QUEUE的最大個數(shù),需要在任務(wù)用應(yīng)用函數(shù)vQueueAddToRegistry()和vQueueUnregisterQueue() */
#define configQUEUE_REGISTRY_SIZE 10
/* 設(shè)定可以改變?nèi)蝿?wù)優(yōu)先度 */
#define INCLUDE_vTaskPrioritySet 1
/* 設(shè)定可以查詢?nèi)蝿?wù)優(yōu)先度 */
#define INCLUDE_uxTaskPriorityGet 1 /* 設(shè)定可以刪除任務(wù) */
#define INCLUDE_vTaskDelete 1
/* 據(jù)說是可以回收刪除任務(wù)后的資源(RAM等)*/
#define INCLUDE_vTaskCleanUpResources 0
/* 設(shè)置可以把任務(wù)掛起 */
#define INCLUDE_vTaskSuspend 1
/* 設(shè)置可以從中斷恢復(fù)(比如系統(tǒng)睡眠,由中斷喚醒 */
#define INCLUDE_vResumeFromISR 1
/* 設(shè)置任務(wù)延遲的絕對時間,比如現(xiàn)在4:30,延遲到5:00。時間都是絕對時間 */
#define INCLUDE_vTaskDelayUntil 1
/* 設(shè)置任務(wù)延時,比如延遲30分鐘,相對的時間,現(xiàn)在什么時間,不需要知道 */
#define INCLUDE_vTaskDelay 1 /* 設(shè)置 取得當前任務(wù)分配器的狀態(tài) */
#define INCLUDE_xTaskGetSchedulerState 1
/* 設(shè)置當前任務(wù)是由哪個任務(wù)開啟的 */
#define INCLUDE_xTaskGetCurrentTaskHandle 1
/* 是否使能這一函數(shù),還數(shù)的目的是返回任務(wù)執(zhí)行后任務(wù)堆棧的最小未用數(shù)量,同樣是為防止堆棧溢出 */
#define INCLUDE_uxTaskGetStackHighWaterMark 0
/* 是用用協(xié)程。協(xié)程公用堆棧,節(jié)省RAM,但是沒有任務(wù)優(yōu)先級高,也無法和任務(wù)通訊 */
#define configUSE_CO_ROUTINES 0
/* 所有協(xié)程的最大優(yōu)先級數(shù),協(xié)程優(yōu)先級永遠低于任務(wù)。就是系統(tǒng)先執(zhí)行任務(wù),所有任務(wù)執(zhí)行完了才執(zhí)行協(xié)程。*/
#define configMAX_CO_ROUTINE_PRIORITIES 1
/* 系統(tǒng)內(nèi)核的中斷優(yōu)先級,中斷優(yōu)先級越低,越不會影響其他中斷。一般設(shè)成最低 */
#define configKERNEL_INTERRUPT_PRIORITY [dependent of processor]
/* 系統(tǒng)SVC中斷優(yōu)先級,這兩項都在在M3和PIC32上應(yīng)用 */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY [dependent on processor and application]
#endif /* FREERTOS_CONFIG_H */
一般來說,如果用不上的功能都要設(shè)成0,可以減少代碼和資源。
|
|