1、資料類型
每一個Port有一個獨特的頭檔案'portmacro.h', 它包含兩個特殊的資料類型:TickType_t and BaseType_t。
TickType_t
它可以是16-bit或者32-bit兩種類型,由FreeRTOSConfig.h中的configUSE_16_BIT_TICKS決定,定義為1表示為uint16_t,定義為0表示為uint32_t。在8-bit和16-bit處理上使用uint16_t;在32-bit上使用uint32_t。
BaseType_t
與處理器相關,8-bit處理器使用uint8_t;16-bit處理器使用uint16_t;32-bit處理器使用uint32_t。
2、變量名
變量字首:char:‘c';int16_t(short):‘s’;int32_t(long):‘l’;BaseType_t和其它非标準的:‘x’;
無符号型再在其前面加上‘u’;如果是指針,再加上‘p’。
例如:uint8_t類型字首為‘uc’;字串指針類型字首為:‘pc’。
3、函數名
函數字首由傳回值類型和檔案決定。例如:
- vTaskPrioritySet()傳回void,定義上task.c中。
- pvTimerGetTimerID()傳回一個指向void的指針,定義在timers.c中。
- xQueueReceive()傳回一個BaseType_t類型,定義在queue.c中。
4、宏定義
大多數宏定義都是大寫,字首小定。例如:
prefix | Location of macro definition |
port(for example, portMAX_DELAY) | portable.h or portmacro.h |
task(for example, taskENTER_CRITICAL()) | task.h |
pd(for example, pdTRUE) | projdefs.h |
config(for example, configUSE_PREEMPTION) | FreeRTOSConfig.h |
err(for example, errQUEUE_FULL) | projdefs.h |
Macro | Value |
pdTRUE | 1 |
pdFALSE | |
pdPASS | 1 |
pdFAIL |
5、合理的類型轉換
由于FreeRTOS可以被多個不同的編譯器紡譯,不同編譯器産生的警告和時間都有所不同,為保證編譯的正确性,往往需要更多的類型轉換。