• 方案介紹
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

21.3 FreeRTOS項目實戰(zhàn)-啟動流程、編碼風格、系統(tǒng)配置、文件組成

02/10 08:56
1947
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

聯(lián)系方式.txt

共1個文件

21.3-啟動流程、編碼風格(了解)

啟動流程

第一種啟動流程(我們就使用這個):

在main函數(shù)中將硬件初始化、RTOS系統(tǒng)初始化,同時創(chuàng)建所有任務,再啟動RTOS調度器。

第二種啟動流程:

在main函數(shù)中將硬件初始化、RTOS系統(tǒng)初始化,只創(chuàng)建一個啟動任務,再啟動RTOS調度器。 之后,在啟動任務中創(chuàng)建各種應用任務,當所有任務創(chuàng)建完成,啟動任務把自己刪除。

文件組成和編碼風格(了解)

0、文件組成

FreeRTOS文件組成

核心文件

  • 包含核心內核功能的實現(xiàn),是 FreeRTOS 的主要組成部分,通常包括:
    • tasks.c:實現(xiàn)任務管理的核心文件,包含任務創(chuàng)建、調度、刪除等核心功能。
    • queue.c:實現(xiàn)消息隊列,用于任務間的數(shù)據通信和同步。
    • list.c:實現(xiàn)內核中的鏈表操作,是任務調度和管理的重要數(shù)據結構。
    • timers.c:實現(xiàn)軟件定時器的創(chuàng)建和管理。
    • event_groups.c:實現(xiàn)事件組,用于多任務間的事件控制和同步。
    • croutine.c:協(xié)程支持文件(不常用),用于非常小的內存占用需求下實現(xiàn)輕量級的任務。

配置文件

  • 包括用戶根據項目需求調整的配置項:
    • FreeRTOSConfig.h:定義系統(tǒng)行為、資源限制等配置項。用戶可以在這個文件中設置堆大小、任務優(yōu)先級數(shù)量、時間片長度、鉤子函數(shù)等。

硬件抽象層 (HAL) 和移植文件

  • 這些文件用來確保 FreeRTOS 能夠在各種硬件架構上運行,主要包括:
    • portable/:不同硬件平臺的移植文件夾,包含各架構的匯編實現(xiàn)、上下文切換、堆管理等文件。
    • port.cportmacro.h:不同架構的特定實現(xiàn)文件,比如 ARM Cortex M 系列、AVR、PIC 等不同芯片的實現(xiàn)。

CMSIS-RTOS 接口文件通常包括:
在這里插入圖片描述
這些文件里的宏定義、數(shù)據類型、函數(shù)名稱等前綴都是"os"。原理上來說,這些函數(shù)和數(shù)據類型的名稱與具體的RTOS無關,他們是CMSIS-RTOS標準定義。具體實現(xiàn),列如前綴"os"的函數(shù)調用具體移植的RTOS實現(xiàn)函數(shù),例如,如果移植FreeRTOS,"os"里面的任務創(chuàng)建函數(shù),調用的是FreeRTOS的具體任務創(chuàng)建函數(shù),如果uc/OS-II,"os"函數(shù)就調用uc/OS-II的具體任務創(chuàng)建函數(shù)。

  1. cmsis_os.h
    • 這是 CMSIS-RTOS API 的頭文件,定義了 CMSIS-RTOS 所需的所有函數(shù)接口。它包含了任務管理、定時器、信號量、互斥鎖、消息隊列等操作。通過這些標準接口,應用程序可以不依賴具體的 RTOS 實現(xiàn)。
  2. cmsis_os.c
    • 該文件實現(xiàn)了 CMSIS-RTOS API 中的函數(shù)接口,將這些接口與 FreeRTOS 的內核 API 關聯(lián)起來。也就是說,通過在這個文件中調用 FreeRTOS 的 API,cmsis_os.c 能夠使得應用程序使用 CMSIS-RTOS API 控制 FreeRTOS。
1、數(shù)據類型

FreeRTOS使用的數(shù)據類型雖然都是標準C的數(shù)據類型,但都進行了重定義,取了個新名字。
在這里插入圖片描述char數(shù)據類型可以通過keil指定了有符號或者無符號,默認為無符號。
在這里插入圖片描述

2、變量名!!!(值得學習)

在FreeRTOS中,定義變量時,把變量的類型作為前綴,方便用戶通過變量即可知道變量的類型。

變量名=變量類型簡寫+變量的英文意思

比如

char cTemp;

unsigned char ucTemp

unsigned char* pucTemp

char變量的前綴c、short變量的前綴是s、long變量的前綴是l。

其它比如結構體、任務句柄等是x。

如果是無符號類型的,前綴再加u;

如果是指針變量,前綴再加p,比如"pc" 表示char * 類型

3、函數(shù)名

函數(shù)名包含了函數(shù)返回值的類型、函數(shù)所在的文件名以及函數(shù)的功能,如果是私有的函數(shù),還會加prv前綴。 這種命名方式方便尋找函數(shù)定義并了解函數(shù)作用,值得借鑒。

舉例:

xTaskCreate()函數(shù)的返回值為任務句柄,在Task.c中定義,作用是創(chuàng)建任務;

vTaskPrioritySet()函數(shù)的返回值為void,在Task.c中定義,作用是設置優(yōu)先級;

CMSIS-RTOS相關文件中定義的函數(shù)前綴都是"os",不包括包括返回值類型和所在文件的前綴,例如cmsis_os2.h中的函數(shù)osDelay,等

4、宏定義

在FreeRTOS中,宏用大寫字母表示,并配有小寫字母作為前綴, 前綴用于指示該宏在哪個頭文件定義。

舉例:

portMAX_DELAY, 位于portable.h;

  • 聯(lián)系方式.txt
    下載

相關推薦