FreeRTOS學習記錄

2021-10-25 20:07:09 字數 1194 閱讀 9735

freertos 核心原始碼檔案的編寫遵循 misra **規則。

在 freertos 中,使用的資料型別雖然都是標準 c 裡面的資料型別,但是針對不同的處理器,對標準 c 的資料型別又進行了重定義。

freertos 中詳細的資料型別重定義在 portmacro.h 這個標頭檔案中實現。具體如下表所示:

新定義的資料型別

c標準型別

portchar

char

portshort

short

portlong

long

portticktype

unsigned shortint

portbase_type

long

unsigned int

ticktype_t:如果使用者使能了巨集定義 configuse_16_bit_ticks,那ticktype_t 定義的就是 16 位無符號數,如果沒有使能那麼 ticktype_t 定義的就是 32 位無符號數。

basetype_t:根據系統架構的位數而定,對於 32 位架構,basetype_t 定義的是 32 位有符號數,對於16位架構,basetype_t 定義的是 16 位有符號數。

ubasetype_t: basetype_t 型別的無符號版本。

stacktype_t:棧變數資料型別定義,數量型別由系統架構決定,對於 16 位系統架構,stacktype_t 定義的是16 位變數,對於 32 位系統架構,stacktype_t 定義的是 32 位變數。

在 freertos 中,定義變數的時候往往會把變數的型別當作字首加在變數上:

變數型別

字首char

cshort

slong

lbasetype_t /ticktype_t

x無符號變數

u指標變數

p函式名 = 函式返回值型別+函式所在的檔名+函式功能。如果是私有的函式則會加乙個 prv的字首。

例:xqueuereceive() 函式的返回值為 portbase_type 型在 queue.c 這個檔案中定義。

巨集均是由大寫字母表示,並配有小寫字母的字首,字首用於表示該巨集在哪個標頭檔案定義。字首要小寫。其餘部分全部大寫同時用下劃線分開。

例:configuse_preemption 是定義在檔案 freertosconfig.h 裡面。 巨集定義中的 config 就是檔名中的 config。

FreeRTOS函式記錄

這篇部落格用來記錄我在看 過程中遇到的freertos相關函式。貼出來網路上的解釋 個人理解或是手冊上的官方注釋。因為個人學習記錄所以內容大部分源於其他的帖子 論壇且內容比較混雜。貼乙個有絕大部分函式解析的部落格 佇列相關 queue.c vqueueaddtoregistry 為佇列命名,並加入佇...

FreeRTOS歷史版本更新記錄

前言 本文會不定期更新,一方面freertos發布新版本時會第一時間跟進 另一方面,會慢慢補上v8.0之後的版本更新內容。核心更新 在freertos v9.0.0rc2版本中,xtaskcreatestatic 原型為 basetype txtaskcreatestatic taskfunctio...

FreeRTOS學習筆記( )

任務管理 portbase type xtaskcreate pdtask code pvtaskcode,指向任務函式的指標 const portchar const pcname,任務的文字名字,只會在除錯中用到 unsigned portshort usstackdepth,棧深度 void ...