這篇部落格用來記錄我在看**過程中遇到的freertos相關函式。貼出來網路上的解釋、個人理解或是手冊上的官方注釋。因為個人學習記錄所以內容大部分源於其他的帖子、論壇且內容比較混雜。
貼乙個有絕大部分函式解析的部落格:
佇列相關——queue.c
vqueueaddtoregistry:為佇列命名,並加入佇列到登記管理中
void vqueueaddtoregistry(
xqueuehandle xqueue,
signed portchar *pcqueuename,
);
parameters:
xqueue 將要新增登記的佇列控制代碼
pcqueuename 為指定的佇列命名。 僅僅是文字串,方便除錯。
訊號量相關——semphr. h
xsemaphoretake:用於獲取訊號量的巨集。
xsemaphoretake(
xsemaphorehandle xsemaphore,
portticktype xblocktime
)
訊號量必須已經通過呼叫vsemaphorecreatebinary(), xsemaphorecreatemutex() 或 xsemaphorecreatecounting()來建立。
這個巨集不能在服務中斷程式中呼叫。如果有必要,可以呼叫xqueuereceivefromisr() 來在中斷服務程式中獲取訊號量,雖然這並不是一種正規的操作。
xsemaphoretake() 是乙個全功能任務間通訊api,
xsemaphorealttake() 是其等價的替代api 。這兩個版本均需要同樣的引數並返回同樣的值。
parameters:
xsemaphore: 將被獲得的訊號量控制代碼,此訊號量必須已經被建立
xblocktime: 等待訊號量可用的時鐘滴答次數,可以使用porttick_rate_ms巨集來轉換為實際的時間
。當為0時可以用於對訊號量進行輪詢(poll the semaphore)如果include_vtasksuspend置位「1」,則指定xblocktime為portmax_delay會導致任務阻塞時間不確定(不會超時)
返回:如果成功獲取訊號量則返回pdtrue,如果xblocktime超時而訊號量還未可用則返回pdfalse。
FreeRTOS學習記錄
freertos 核心原始碼檔案的編寫遵循 misra 規則。在 freertos 中,使用的資料型別雖然都是標準 c 裡面的資料型別,但是針對不同的處理器,對標準 c 的資料型別又進行了重定義。freertos 中詳細的資料型別重定義在 portmacro.h 這個標頭檔案中實現。具體如下表所示 ...
FreeRTOS歷史版本更新記錄
前言 本文會不定期更新,一方面freertos發布新版本時會第一時間跟進 另一方面,會慢慢補上v8.0之後的版本更新內容。核心更新 在freertos v9.0.0rc2版本中,xtaskcreatestatic 原型為 basetype txtaskcreatestatic taskfunctio...
freertos 不可重入函式
假設當任務a在正在向對佇列傳送資料時被打斷,進入任務b,也向同一對列傳送資料,那麼對列中的資料順序就是亂的。這個函式是所謂的不可重入函式。但是通過增加二值訊號量,給對列上一把鎖,就可以成為可重入函式。注意獲取訊號的方式是阻塞式的。void uart1 printf const char format...