在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

編碼風格:μCOS vs FreeRTOS

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2023-01-11 10:14 ? 次閱讀

不定期有讀者在問:

怎么才能寫出漂亮的代碼?

哪里有優秀的代碼可以參考?

怎樣才能提高自己編碼水平?

其實,我們身邊到處都有優秀的代碼可以借鑒,只是你沒有認真去發現而已。裸機、RTOS、Linux等各類優秀的開源代碼相信你一定見到過,還有一些優秀的開源庫你也肯定接觸過。

想要寫出漂亮、優秀的代碼,首先,你的代碼必須要有一套規范。

今天就給大家分享一下我們身邊熟知的RTOS的編碼規范,以目前(2023-01-10)最新版本的uC/OS-III V3.08.02和 FreeRTOS V10.5.1為例:

編碼標準

uC/OS 和FreeRTOS 都是遵循 MISRA C 編碼標準,均支持 PC-Lint 靜態檢查,兩者官方文檔都有說明。

提示:

MISRA C 標準,指的是汽車 C 語言開發標準,可以參看之前分享的文章:MISRA C:2012 標準是什么?

1.uC/OS

uC/OS文章明確指出遵循MISRA C:2012標準,也支持PC-Lint 的靜態檢查。

1c42b474-90df-11ed-bfe3-dac502259ad0.png

2.FreeRTOS

FreeRTOS也明確指出采用 MISRA C編碼標準,但是不支持 C99 之后的標準,也支持 PC-Lint 靜態檢查。

1c8b4752-90df-11ed-bfe3-dac502259ad0.png

FreeRTOS在源代碼中有大量說明(注釋)對PC-Lint靜態檢查可能會引起異常的代碼,這一點在 uC/OS 源代碼中是沒有的。

比如:

1cb834ce-90df-11ed-bfe3-dac502259ad0.png

配置文件

兩種RTOS配置文件(也就是所謂的“裁剪”文件)的“內容”有點類似,也是進行了分類。

不過,uC/OS的分類和注釋更人性化,更適合初學者理解。

1.uC/OS

uC/OS的配置文件通常是:os_cfg.h

1ce32904-90df-11ed-bfe3-dac502259ad0.gif

2.FreeRTOS

FreeRTOS的配置文件通常是:FreeRTOSConfig.h

1f23769c-90df-11ed-bfe3-dac502259ad0.gif

標頭

兩種RTOS標頭的“內容”有點類似,只是一個居中,一個靠左。

1.uC/OS

包含RTOS版本、版權說明、開源協議說明等:

1f44df30-90df-11ed-bfe3-dac502259ad0.png

2.FreeRTOS

包含RTOS版本、版權說明、開源協議說明、網址等,和uC/OS類似。

1f61fb1a-90df-11ed-bfe3-dac502259ad0.png

命名

兩種RTOS命名規則差別有點大,但都符合常規代碼命名規則。

1.文件名

uC/OS以【os_系統文件】方式,顯得更規范(體現了模塊化)。

FreeRTOS就比較直接,這個可能是剛才是命名的時候沒有長期規劃,然后為了兼容,一直沿用至今。(這種更容易引起文件重名)

1f8fde22-90df-11ed-bfe3-dac502259ad0.png

2.宏

兩者有共同之處:下劃線隔開大寫字母,但是開頭(前綴)有一定區別。

以“配置文件”為例:uC/OS以【OS_CFG_】開頭,FreeRTOS以【config】開頭。

1fbb08a4-90df-11ed-bfe3-dac502259ad0.png

3.數據類型

uC/OS定義的數據類型,相對更常見,也更適合新手。

FreeRTOS定義的數據類型,更“系統”一點,適合老司機,對新手相對沒那么友好。

20304cd6-90df-11ed-bfe3-dac502259ad0.png

4.函數名

兩者有點類似,前綴不一樣,后面都是以【大寫字母開頭】進行區分。

比如:創建任務的函數名:

204ed174-90df-11ed-bfe3-dac502259ad0.png

FreeRTOS的前綴官方有這樣的描述:

靜態(static)函數以 prv 為前綴。比如:prvIdleTask 函數。

API 函數以其返回類型為前綴,void 類型以v為綴。比如:vTaskDelete 函數。

注釋

// /* */ 是兩種最常見注釋的方法,但這兩種 RTOS 基本以【/* */】注釋居多。

注釋的位置也是有講究,通常在代碼所在行上一行,或者在代碼所在行(代碼后面)。

這里主要說明一下,FreeRTOS在代碼中沒有相信注釋函數的功能、參數、返回值等信息。

還是以“創建任務”函數為例:

2074f1ce-90df-11ed-bfe3-dac502259ad0.png

當然,FreeRTOS的函數注釋信息,在手冊中有相信描述。

縮進

這兩種RTOS縮進方式一樣,都是采用 4 空格:

20a495fa-90df-11ed-bfe3-dac502259ad0.png

這里要提醒一下,切記不要 Tab 和空格兩者混用,不然代碼就是一片亂。(在不少新手,或者初級工程中就經常出現這種,代碼簡直不敢看)

單詞縮寫

不同的領域,有不同的縮寫方式。在RTOS中也有一些常見的縮寫單詞,比如:

縮寫 原意
Addr Address
Blk Block
Chk Check
Clr Clear
Cnt Count
Ctr Counter
Ctx Context
Cur Current
Del Delete
Dly Delay
Err Error
OS Operating System??
CPU Center Processing Unit

好了,本文就分享到這里。以上只是列舉了部分典型的編碼風格,更多細節,大家可以抽時間自行研究。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210411
  • 編碼
    +關注

    關注

    6

    文章

    957

    瀏覽量

    54954
  • RTOS
    +關注

    關注

    22

    文章

    819

    瀏覽量

    119890
  • 代碼
    +關注

    關注

    30

    文章

    4828

    瀏覽量

    69059
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62399

原文標題:編碼風格:μCOS vs FreeRTOS

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HDL編碼風格編碼

    本帖最后由 mr.pengyongche 于 2013-4-30 02:58 編輯 HDL編碼風格編碼
    發表于 08-12 12:09

    編碼風格編碼

    本帖最后由 mr.pengyongche 于 2013-4-30 02:56 編輯 編碼風格編碼
    發表于 08-17 09:34

    VS1053編碼

    VS1053怎么將音頻ADC采集的值編碼輸出?
    發表于 07-24 22:18

    FreeRTOS編碼標準如何命名

    初學FreeRTOS,感覺函數和變量等相關的命名比較頭疼看著,遂去查閱了一番,發現有一套很科學的體系在里面,磨刀不誤砍柴功,希望能有跟我一樣的初學者來了解一下命名規則。把網上的講解保存了一下,發上來,供和我一樣的初學者方便查閱。FreeRTOS
    發表于 06-10 04:36

    Linux內核編碼風格(編程代碼風格推薦)

    編碼素質的重要性。相反沒有良好的風格的代碼讀起來難看、晦澀,甚至有時候一個括號沒對齊就能造成對程序的曲解或者不理解。我曾經就遇見過這樣的情況,花費了很多不必要的時間在程序的上下文對照上,還debug了
    發表于 08-24 09:45

    梳理一下FreeRTOS內核代碼規范

    [導讀] 遇到些朋友感覺FreeRTOS內核代碼看起來很不習慣,不習慣其編碼風格,本文就來梳理一下其代碼規范,便于提高閱讀其代碼的效率。代碼基于FreeRTOS V10.4.3。Fre
    發表于 03-01 07:33

    Gowin HDL編碼風格要求及編碼實現

    本手冊主要描述高云?HDL 編碼風格要求及原語的 HDL 編碼實現,旨在幫助用戶快速熟悉高云 HDL 編碼風格和原語實現,指導用戶設計,提高
    發表于 09-29 06:23

    如何使用VS Code和PlatformIO更好的Arduino編碼

    使用VS Code和PlatformIO為Arduino編碼帶來了新鮮的空氣。由于Visual Studio的Live Share功能,它還使遠程協作變得更加容易。
    的頭像 發表于 11-29 09:30 ?1.9w次閱讀

    FreeRTOS編碼規則及風格指南

    1.編碼標準 FreeRTOS的核心源代碼遵從MISRA編碼標準指南。這個標準篇幅稍長,你可以在MISRA官方網站花少量錢買到,這里不再復制任何標準。 FreeRTOS源代碼不符合MI
    的頭像 發表于 01-10 11:00 ?2672次閱讀

    關于Linux的內核代碼風格

    編碼風格錯誤開始 曾經在開發Linux內核驅動的時候,創建了一個補丁文件,但是在把補丁打到主分支的時候提示很多編碼風格的錯誤問題,后來重做了補丁才解決了問題,這也是沒有嚴格按照的Li
    的頭像 發表于 04-25 14:50 ?1861次閱讀

    一文帶你快速理解FreeRTOS代碼規范

    [導讀] 遇到些朋友感覺FreeRTOS內核代碼看起來很不習慣,不習慣其編碼風格,本文就來梳理一下其代碼規范,便于提高閱讀其代碼的效率。代...
    發表于 01-25 19:37 ?0次下載
    一文帶你快速理解<b class='flag-5'>FreeRTOS</b>代碼規范

    Sin/Cos編碼器與Sitara AM437x的連接參考設計

    電子發燒友網站提供《Sin/Cos編碼器與Sitara AM437x的連接參考設計.zip》資料免費下載
    發表于 09-06 11:31 ?1次下載
    Sin/<b class='flag-5'>Cos</b><b class='flag-5'>編碼</b>器與Sitara AM437x的連接參考設計

    Gowin HDL編碼風格用戶指南

    本手冊主要描述高云?HDL 編碼風格要求及原語的 HDL 編碼實現,旨在 幫助用戶快速熟悉高云 HDL 編碼風格和原語實現,指導用戶設計,
    發表于 09-15 16:02 ?0次下載
    Gowin HDL<b class='flag-5'>編碼</b><b class='flag-5'>風格</b>用戶指南

    Verilog編碼風格的建議

    良好的編碼風格,有助于代碼的閱讀、調試和修改。雖然 Verilog 代碼可以在保證語法正確的前提下任意編寫,但是潦草的編碼風格往往是一錘子買賣。
    的頭像 發表于 06-01 16:27 ?760次閱讀
    Verilog<b class='flag-5'>編碼</b><b class='flag-5'>風格</b>的建議

    阿里AliOS的編碼風格

    其實,我們身邊就有很多“好的資源”值得學習,比如本文分享的 阿里 AliOS 的編碼風格。
    發表于 06-02 09:26 ?273次閱讀
    主站蜘蛛池模板: 韩国一区二区三区视频 | 在线色资源 | 欧美三级 欧美一级 | 天天爽天天 | 激情五月亚洲 | 干天天| 色偷偷伊人 | 色资源窝窝全色 | 国产人成精品香港三级古代 | 在线视频三区 | 天天摸夜夜添狠狠添2018 | 1024国产基地永久免费 | 亚洲深夜 | 奇米影视亚洲四色8888 | 亚洲已满18点击进入在线观看 | 国产一区二区三区毛片 | 好色999| 国产午夜视频在永久在线观看 | 欧美1314www伊人久久香网 | 欧美日韩性高爱潮视频 | 在线观看免费国产 | 精品久久看 | 天天干天天插天天射 | 花怜write. as| 欧美成人鲁丝片在线观看 | 免费永久视频 | 午夜剧场一级片 | 狠狠se| 91国内在线观看 | 成人影院在线观看 | 成人欧美网站 | 2018天天干天天射 | 美国激情ap毛片 | 日本特级淫片免费 | 国产网红主播chinese | 亚洲日本色图 | 国产国产人免费人成免费视频 | 性欧美黑人 | 日本一本一道久久香蕉免费 | 亚洲二区在线 | 视色4se视频在线观看 |