性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

小麥大叔
認(rèn)證:普通會(huì)員
所在專題目錄 查看專題
基于CubeIDE快速整合FreeRTOS創(chuàng)建第一個(gè)任務(wù)
【FreeRTOS學(xué)習(xí)02】源碼結(jié)構(gòu)/數(shù)據(jù)類型/命名規(guī)則總結(jié)
【FreeRTOS學(xué)習(xí)03】Task Management 任務(wù)管理基本概念介紹
【FreeRTOS學(xué)習(xí)04】Queue Management 消息隊(duì)列使用詳解
【FreeRTOS學(xué)習(xí)05】深度解剖FreeRTOSConfig.h實(shí)現(xiàn)對(duì)系統(tǒng)的自定義剪裁
【FreeRTOS學(xué)習(xí)06】深度解剖中斷與任務(wù)之間同步的具體使用場(chǎng)景
作者動(dòng)態(tài) 更多
一款輕量級(jí)的開源GUI項(xiàng)目——SimpleGUI,可以完美適配單色屏
02-22 09:47
看到這100多個(gè)軟硬件開源項(xiàng)目,真是爽爆了
2024-11-30 14:12
推薦一個(gè)高效,可靠,安全的串口通訊開源方案
2024-11-27 11:17
推薦一款開源hack硬件平臺(tái)工具
2024-11-26 13:58
新手學(xué)STM32的話,先學(xué)標(biāo)準(zhǔn)庫(kù)還是HAL庫(kù)?
2024-10-18 15:09

【FreeRTOS學(xué)習(xí)02】源碼結(jié)構(gòu)/數(shù)據(jù)類型/命名規(guī)則總結(jié)

個(gè)人不是很喜歡FreeRTOS的編程風(fēng)格,但是沒辦法,這里先簡(jiǎn)單總結(jié)一下;

相關(guān)文章

【FreeRTOS實(shí)戰(zhàn)匯總】小白博主的RTOS學(xué)習(xí)實(shí)戰(zhàn)快速進(jìn)階之路(持續(xù)更新)

1 源碼結(jié)構(gòu)

下載或者克隆源碼,可以看到頂層的源碼結(jié)構(gòu)如下圖所示;

  • FreeRTOS:實(shí)時(shí)系統(tǒng)的源文件,主要是這部分;
  • FreeRTOS-Plus:這里主要基于FreeRTOS的demo,比如iot-lib,tcp等等;

下面重點(diǎn)看一下FreeRTOS,具體如下所示;

  • ① portable:是一個(gè)文件夾,里面包括了各個(gè)平臺(tái)移植所需要的文件;
  • ② MenMang:內(nèi)存管理的文件,基本包括heap_1.cheap_2.c,heap_3.c,heap_4.cheap_5.c,以后再深入了解;

下面是幾個(gè)比較核心的文件,前面有簡(jiǎn)單提到過(guò),簡(jiǎn)單介紹如下:

  • list.c 基本的數(shù)據(jù)結(jié)構(gòu),雙鏈表的實(shí)現(xiàn),是很多函數(shù)的底層文件, 使用FreeRTOS必須要包含的文件;
  • tasks.c 任務(wù)塊,任務(wù)調(diào)度,創(chuàng)建,刪除等等接口都在這個(gè)文件中,也是必須要包含的文件;
  • queue.c 這個(gè)文件同時(shí)提供消息隊(duì)列和信號(hào)量服務(wù),作為任務(wù)間同步基本離不開它,所以這個(gè)文件幾乎也是必須包含的;
  • timers.c 這個(gè)文件提供軟件計(jì)時(shí)器功能。如果需要實(shí)際使用軟件計(jì)時(shí)器的功能,則應(yīng)該將它包括到構(gòu)建工程中;
  • event_groups.c 這個(gè)文件提供了事件組功能。如果需要事件組,則需要將它包含到工程中;
  • croutine.c 這個(gè)文件實(shí)現(xiàn)FreeRTOS協(xié)同例程功能,協(xié)同例程用于非常小的微控制器,現(xiàn)在很少使用,看情況添加;

具體如下所示;

  • FreeRTOSConfig.h 這個(gè)文件可以有用戶創(chuàng)建,當(dāng)然在源碼的demo路徑下可以找到現(xiàn)成的文件,根據(jù)自己需求配置FreeRTOSConfig.h的宏定義,從而實(shí)現(xiàn)對(duì)FreeRTOS的剪裁。

2 數(shù)據(jù)類型

FreeRTOS的數(shù)據(jù)類型基本上都定義在portmacro.h文件中,比如在FreeRTOS\Source\portable\RVDS\ARM_CM3下就可以找到這個(gè)文件;除此之外,FreeRTOS中還有兩個(gè)特定的數(shù)據(jù)類型;

  • BaseType_t 這個(gè)類型被定義為架構(gòu)中最有效的數(shù)據(jù)類型;比如32位體系結(jié)構(gòu)使用32 bit數(shù)據(jù)類型/int32_t,16位架構(gòu)使用16 bit數(shù)據(jù)類型/int16_t,8位架構(gòu)上使用8 bit數(shù)據(jù)類型/int8_t。 BaseType_t 適用于數(shù)據(jù)范圍比它小的類型的值,所以也適用于pdTRUE/pdFALSE類型的布爾值;
  • TickType_t FreeRTOS配置一個(gè)稱為tick interrupt的定時(shí)中斷;兩次滴答中斷之間的時(shí)間稱為滴答中斷周期;所以tick number是指定滴答中斷周期的倍數(shù),TickType_t是用來(lái)保存滴答計(jì)數(shù)值和to的數(shù)據(jù)類型指定時(shí)間。

32位機(jī)上數(shù)據(jù)類型定義如下所示,和具體的平臺(tái)相關(guān);

3 命名規(guī)則

3.1 常見命名規(guī)則

  • 匈牙利命名法:廣泛應(yīng)用于Microsoft Windows這類環(huán)境中;

  • 駝峰命名法:近年來(lái)越來(lái)越流行。 駝峰命名法,正如它的名稱所表示的那樣,指的是混合使用大小寫字母來(lái)構(gòu)成標(biāo)識(shí)符的名字。其中第一個(gè)單詞首字母小寫,余下的單詞首字母大寫。 例如: printEmployeePaychecks(); 函數(shù)名中每一個(gè)邏輯斷點(diǎn)都有一個(gè)大寫字母來(lái)標(biāo)記。

  • 帕斯卡(Pascal)命名法:與駝峰命名法類似。 只不過(guò)駝峰命名法是第一個(gè)單詞首字母小寫,而帕斯卡命名法則是第一個(gè)單詞首字母大寫。因此這種命名法也有人稱之為“大駝峰命名法”。 例如: DisplayInfo(); UserName 都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和駱駝命名法居多。事實(shí)上,很多程序設(shè)計(jì)者在實(shí)際命名時(shí)會(huì)將駝峰命名法和帕斯卡結(jié)合使用,例如變量名采用駝峰命名法,而函數(shù)采用帕斯卡命名法。

  • 下劃線命名法: 下劃線法是隨著C語(yǔ)言的出現(xiàn)流行起來(lái)的,在UNIX/LIUNX這樣的環(huán)境,以及GNU代碼中使用非常普遍。^1

3.2 FreeRTOS的規(guī)則

  • 變量名 前綴cchar; 前綴sint16_t; 前綴p:指針變量; 大寫lint32_t; 小寫x:表示類型為BaseType_t:其他非標(biāo)準(zhǔn)類型(結(jié)構(gòu)任務(wù)句柄、隊(duì)列句柄等等);

如果一個(gè)變量是無(wú)符號(hào)的,那么它也以“u”為前綴。如果一個(gè)變量是一個(gè)指針,它也是帶前綴的,例如,類型為uint8_t的變量將前綴為uc

  • 函數(shù)名 FreeRTOS函數(shù)名的前綴表示它們返回的類型,也包括它們?cè)谄渲卸x的文件;
    • vTaskPrioritySet():前綴v表示返回類型為viod,Task表示在tasks.c中定義;
    • xQueueReceive():前綴x表示返回BaseType_t類型數(shù)據(jù),Queue表示該函數(shù)在queue.c中定義;
    • pvTimerGetTimerID():前綴pv表示返回void類型指針,Timer表示該函數(shù)在timer.c.中定義;
    • prv:前綴prv表示作用范圍為當(dāng)前的文件;
  • 宏定義 FreeRTOS的大多數(shù)宏都是用大寫字母寫的,并以小寫字母作為前綴來(lái)表示 定義了宏,如下所示;

4 總結(jié)

本文總結(jié)了FreeRTOS源碼結(jié)構(gòu)和數(shù)據(jù)類型,為以后移植系統(tǒng)和源碼閱讀打下一丟丟基礎(chǔ)。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 3
收藏 4
關(guān)注 144
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧