1. 程式人生 > 實用技巧 >FreeRTOS筆記篇:第一章 描述

FreeRTOS筆記篇:第一章 描述

FREERTOSY一級目錄解釋

在這裡插入圖片描述
下載的版本為10.4.1
在這裡插入圖片描述
包含一個原始碼+程式碼案例

程式碼結構

在這裡插入圖片描述
在這裡插入圖片描述

  • tasks.c && list.c

  • queue.c 提供佇列和訊號量服務

  • timers.c 提供了軟體計時器功能

  • event_groups.c 提供了事件組功能

  • croutine.c 實現了FreeRTOS協同例程功能 (很少使用)

因為檔案多了會有衝突 ,所以將C和H放在一個資料夾裡面。

portable

特定於FreeRTOS埠的原始檔包含在FreeRTOS/Source/portable目錄中。
在這裡插入圖片描述

MemMang–FreeRTOS 記憶體分配案例

例項堆分配方案包含在FreeRTOS\Source\portable\MemMang

在這裡插入圖片描述

編譯必須要包含的3個頭檔案

  • FreeRTOS/Source/include.(核心FreeRTOS標頭檔案的路徑)
  • FreeRTOS/Source/portable/[compiler]/[architecture].(你所使用晶片編譯器+架構)
  • FreeRTOSConfig.h(配置標頭檔案)

程式碼案例

  • 提供一個工作和預配置專案的示例,其中包含正確的檔案,並設定了正確的編譯器選項。
  • 以最小的設定或先驗知識進行“開箱即用”實驗。
  • 以演示FreeRTOS API的使用方法
  • 作為建立實際應用程式的基礎。

FreeRTOS/Demo/Common/Minimal directory

常見的演示任務純粹是為了演示如何使用FreeRTOS API——它們沒有實現任何特別有用的功能

在這裡插入圖片描述

如何建一個新的工程-和linux的很像

建議通過調整其中一個現有專案來建立新的專案
可以從一下幾個步驟

  • 開啟提供的演示專案,確保按照預期構建和執行。

  • 刪除定義演示任務的原始檔。目錄中的任何檔案演示/公共目錄可以從專案中刪除。

  • 刪除main()中的所有函式呼叫,prvSetupHardware()vTaskStartScheduler()除外,如清單1所示。
    在這裡插入圖片描述

  • 檢查仍在構建的專案(再編譯一下)。

創造一個全新的專案

  • 使用您選擇的工具鏈,建立一個尚未包含任何工具鏈的新專案
    FreeRTOS原始檔
  • 確保可以構建、下載到目標硬體並執行新專案。
  • 只有當您確定您已經有一個工作專案時,才將表1中詳細說明的FreeRTOS原始檔新增到專案中。
    在這裡插入圖片描述
  • 將演示專案為使用中的埠提供的FreeRTOSConfig.h標頭檔案複製到專案目錄中。
  • 新增標頭檔案資訊
    1 。 FreeRTOS/Source/include
    2 。 FreeRTOS/Source/portable/[compiler]/[architecture] (where [compiler] and [architecture] are correct for your chosen port)
    3。The directory containing the FreeRTOSConfig.h header file
  • 從相關的參考程式碼專案複製編譯器設定。
  • 安裝任何FreeRTOS中斷處理程式可能是必要的。使用描述正在使用的埠的web頁面,以及為正在使用的埠提供的演示專案作為參考。
    注意!!!版本比9.0要老的必須要建立heap.c 檔案

資料型別和程式設計風格

TickType_t

時鐘資料型別 可以定義為16(short) 或者是32位(int)的型別
上面的定義取決於 configUSE_16_BIT_TICKS
這個的資料型別配置是在
source -》portable-> xxx ->prtmacro.h
在這裡插入圖片描述
使用16位型別可以大大提高8位和16位架構的效率但是嚴重限制了可以指定的最大塊週期。沒有理由在32位架構上使用16位型別.

BaseType_t

BaseType_t通常用於返回型別,這些型別只能佔用非常有限的值範圍,並且用於pd TRUE/pd FALSE型別Booleans。

變數名稱定義規則

  • 變數是無符號的 就是用u 作為字首
  • 如果變數是指標,那麼就是使用p作為字首
  • 如果是uint8_t 就已uc作為字首
  • 如果是有符號的 就pc作為字首。

函式名稱定義規則

函式的字首包括它們返回的型別和定義它們的檔案

  • vTaskPrioritySet() returns a void and is defined within task.c
  • xQueueReceive() returns a variable of type BaseType_t and is defined within queue.c.
  • pvTimerGetTimerID() returns a pointer to void and is defined within timers.c
  • 檔案作用域(私有)函式的字首是’ prv ’
  • 一個選項卡總是設定為等於四個空格。
  • 巨集命令規則: 大多數巨集都以大寫形式編寫,並以小寫字母作為字首,這些字母指示巨集定義的位置。
    在這裡插入圖片描述
    在這裡插入圖片描述

陌生單詞

aims
在這裡插入圖片描述
orientate
在這裡插入圖片描述
structure
在這裡插入圖片描述
approximately
在這裡插入圖片描述
compilers
在這裡插入圖片描述
implements
在這裡插入圖片描述
clashes
在這裡插入圖片描述
allocation
在這裡插入圖片描述
respectively
在這裡插入圖片描述
dynamic
在這裡插入圖片描述
Occasionally
在這裡插入圖片描述
hierarchy
在這裡插入圖片描述
mentioned
在這裡插入圖片描述
prefixed
在這裡插入圖片描述
semaphore
在這裡插入圖片描述

陌生語句

  • Each supported combination of compiler and processor is considered to be a separate FreeRTOS port.
    注意:of 的話要先翻譯後面的 編譯器處理器的結合
    每個支援的編譯器和處理器組合都被認為是一個獨立的FreeRTOS埠