FreeRTOS入门知识(教你快速入门)
今天開始學FreeRTOS操作系統,下面整理了一些基礎的知識,以便日后來溫習。
FreeRTOS數據類型的重定義
#define portCHAR char #define portFLOAT float #define portDOUBLE double #define portLONG long #define portSHORT short #define portSTACK_TYPE uint32_t #define portBASE_TYPE longtypedef portSTACK_TYPE StackType_t; typedef long BaseType_t; typedef unsigned long UBaseType_t;#if( configUSE_16_BIT_TICKS == 1 ) typedef uint16_t TickType_t; #define portMAX_DELAY ( TickType_t ) 0xffff #else typedef uint32_t TickType_t; #define portMAX_DELAY ( TickType_t ) 0xffffffffUL在編程的時候,如果用戶沒有明確指定 char 的符號類型,那么編譯器會默認的指定char 型的變量為無符號或者有符號。正是因為這個原因,FreeRTOS 中,我們都需要明確的指定變量 char 是有符號的還是無符號的。在 keil 中,默認 char是無符號的,但是也可以配置為有符號的。
變量名
在 FreeRTOS 中,定義變量的時候往往會把變量的類型當作前綴加在變量上,這樣的好處是讓用戶一看到這個變量就知道該變量的類型。比如 char 型變量的前綴是 c,short 型變量的前綴是 s,long型變量的前綴是 l,portBASE_TYPE類型變量的前綴是 x。還有其他的數據類型,比如數據結構,任務句柄,隊列句柄等定義的變量名的前綴也是 x。如果一個變量是無符號型的那么會有一個前綴 u,如果是一個指針變量則會有一個前綴 p。因此,當我們定義一個無符號的 char 型變量的時候會加一個 uc 前綴,當定義一個char 型的指針變量的時候會有一個 pc 前綴。
函數名
函數名包含了函數返回值的類型、函數所在的文件名和函數的功能,如果是私有的函數則會加一個 prv(private)的前綴。特別的,在函數名中加入了函數所在的文件名,這大大的幫助了用戶提高尋找函數定義的效率和了解函數作用的目的,具體的舉例如下:
1.vTaskPrioritySet()函數的返回值為 void 型,在 task.c這個文件中定義。
2. xQueueReceive()函數的返回值為 portBASE_TYPE 型,在 queue.c 這個文件中定義。
3. vSemaphoreCreateBinary()函數的返回值為 void 型,在 semphr.h 這個文件中定義。
宏
宏均是由大寫字母表示,并配有小寫字母的前綴,前綴用于表示該宏在哪個頭文件定義,下面舉例說明:
這里有個地方要注意的是信號量的函數都是一個宏定義,但是它的函數的命名方法是遵循函數的命名方法而不是宏定義的方法。
在貫穿 FreeRTOS 的整個代碼中,還有幾個通用的宏定義我們也要注意下,都是表示 0和 1的宏。
格式
一個 tab 鍵盤等于四個空格鍵。我們在編程的時候最好使用空格鍵而不是使用 tab 鍵,當兩個編譯器的 tab 鍵設置的大小不一樣的時候,代碼移植的時候代碼的格式就會變亂,而使用空格鍵則不會出現這種問題。
學習RTOS的方法
1.最簡單的方法就是在別人移植好的系統上,看看RTOS里面的API使用說明,然后調用這些API實現自己想要的功能即可。
2.另一種就是深入學習一款RTOS的源碼,閱讀RTOS的源碼,深究內核和每一個組件的實現方式,這個過程是枯燥且痛苦的。
3.先從0到1實現內核,層層疊加,再看內核資源的實現方式。(最好的方法)
總結
以上是生活随笔為你收集整理的FreeRTOS入门知识(教你快速入门)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D
- 下一篇: 计算机应用技术和cad,计算机图形技术与