Ⅰ
寫(xiě)在前面
關(guān)于FreeRTOSConfig.h配置文件里面的內(nèi)容除了“通用配置”之外,其他配置的內(nèi)容初學(xué)者用的相對(duì)較少,理解起來(lái)也相對(duì)難一點(diǎn)。為了讓初學(xué)者有一個(gè)大概的了解,本文依然繼續(xù)講述關(guān)于FreeRTOSConfig.h配置的內(nèi)容,后期會(huì)結(jié)合應(yīng)用更進(jìn)一步講述關(guān)于FreeRTOSConfig.h的內(nèi)容。
Ⅰ
TIMER即定時(shí)器,在RTOS中的TIMER屬于軟件定時(shí)。FreeRTOS的定時(shí)器精度不高,會(huì)隨著定時(shí)的增加而改變,特別是TIMER任務(wù)優(yōu)先級(jí)較低,高優(yōu)先級(jí)占用資源的情況下。
若要使用高精度的定時(shí),還是最后使用硬件的定時(shí)器(現(xiàn)在處理器一般都有多個(gè)硬件TIMER)。
1.configUSE_TIMERS
是否使用軟件定時(shí)器
配置為0:不使用
配置為1:使用
其他許多相關(guān)的功能都需要結(jié)合該配置才能使用,使用時(shí)需要注意是否關(guān)聯(lián)。
2.configTIMER_TASK_PRIORITY
軟件定時(shí)器任務(wù)優(yōu)先級(jí)
軟件定時(shí)器其實(shí)也是需要?jiǎng)?chuàng)建一個(gè)任務(wù),創(chuàng)建方式和我們常規(guī)的一樣,只是它是有系統(tǒng)內(nèi)核完成,不用我們自己寫(xiě)創(chuàng)建任務(wù)代碼。
這里的這個(gè)優(yōu)先級(jí)就是定時(shí)器任務(wù)的優(yōu)先級(jí)。
3.configTIMER_QUEUE_LENGTH
軟件定時(shí)器命令隊(duì)列長(zhǎng)度
關(guān)于TIMER的命令隊(duì)列牽涉的知識(shí)相對(duì)復(fù)雜點(diǎn),后期進(jìn)一步講述,可看下圖:
4.configTIMER_TASK_STACK_DEPTH
分配給軟件定時(shí)器的堆棧空間
Ⅲ
CO_ROUTINES配置
CO_ROUTINES這個(gè)不好翻譯,網(wǎng)上都叫協(xié)同程序,或者合作程序,理解為協(xié)同一起使用的程序,后期結(jié)合應(yīng)用講述。
1.configUSE_CO_ROUTINES
是否使用CO_ROUTINES
配置為0:不使用
配置為1:使用
2.configMAX_CO_ROUTINE_PRIORITIES
CO_ROUTINE優(yōu)先級(jí)
Ⅳ
MEMORY配置
內(nèi)存分配相關(guān)的配置,這里的配置與heap_x.c有關(guān),后面會(huì)再次進(jìn)行講述。
1.configSUPPORT_STATIC_ALLOCATION
是否支持靜態(tài)分配
配置為0:不支持
配置為1:支持
2.configSUPPORT_DYNAMIC_ALLOCATION
是否支持動(dòng)態(tài)分配
配置為0:不支持
配置為1:支持
3.configTOTAL_HEAP_SIZE
分配給系統(tǒng)的堆棧
創(chuàng)建任務(wù),堆棧,靜態(tài)、動(dòng)態(tài)都分配的內(nèi)存都來(lái)自這里。
4.configAPPLICATION_ALLOCATED_HEAP
APP使用哪里分配的堆
配置為0:使用系統(tǒng)分配的堆
配置為1:使用外部分配的堆
默認(rèn)使用系統(tǒng)分配的堆,見(jiàn)下面定義:
#if(configAPPLICATION_ALLOCATED_HEAP == 1 )
extern uint8_t ucHeap[configTOTAL_HEAP_SIZE];
#else
static uint8_t ucHeap[configTOTAL_HEAP_SIZE];
#endif
Ⅴ
RUN_TIME_STATS配置
運(yùn)行時(shí)信息統(tǒng)計(jì)配置
1.configGENERATE_RUN_TIME_STATS
是否生成統(tǒng)計(jì)信息
配置為0:否
配置為1:是
2.configUSE_TRACE_FACILITY
是否協(xié)助執(zhí)行可視化和跟蹤
配置為0:否
配置為1:是
這里會(huì)添加額外的結(jié)構(gòu)體來(lái)實(shí)現(xiàn)。
3.configUSE_STATS_FORMATTING_FUNCTIONS
是否統(tǒng)計(jì)相關(guān)的功能
配置為0:否
配置為1:是
設(shè)置宏configUSE_TRACE_FACILITY和configUSE_STATS_FORMATTING_FUNCTIONS為1會(huì)編譯vTaskList()和vTaskGetRunTimeStats()函數(shù)。如果將這兩個(gè)宏任意一個(gè)設(shè)置為0,上述兩個(gè)函數(shù)不會(huì)被編譯。
Ⅵ
其他配置
這里簡(jiǎn)單綜合講述一下各項(xiàng)配置
1.configASSERT
斷言配置
2.Interrupt相關(guān)
configKERNEL_INTERRUPT_PRIORITY:內(nèi)核中斷優(yōu)先級(jí)
configMAX_SYSCALL_INTERRUPT_PRIORITY:系統(tǒng)調(diào)用最大的優(yōu)先級(jí)
configMAX_API_CALL_INTERRUPT_PRIORITY:API調(diào)用的最大優(yōu)先級(jí)
這一節(jié)與(Cortex)內(nèi)核硬件中斷有關(guān)。
3.INCLUDE配置
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
這里很好理解,是否包含這一些內(nèi)容,在UCOS中比較常見(jiàn)。
-
定時(shí)器
+關(guān)注
關(guān)注
23文章
3246瀏覽量
114721 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62144 -
config
+關(guān)注
關(guān)注
0文章
15瀏覽量
4625
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論