吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

編碼風(fēng)格:μCOS vs FreeRTOS

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

不定期有讀者在問:

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

哪里有優(yōu)秀的代碼可以參考?

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

其實(shí),我們身邊到處都有優(yōu)秀的代碼可以借鑒,只是你沒有認(rèn)真去發(fā)現(xiàn)而已。裸機(jī)、RTOS、Linux等各類優(yōu)秀的開源代碼相信你一定見到過,還有一些優(yōu)秀的開源庫(kù)你也肯定接觸過。

想要寫出漂亮、優(yōu)秀的代碼,首先,你的代碼必須要有一套規(guī)范。

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

編碼標(biāo)準(zhǔn)

uC/OS 和FreeRTOS 都是遵循 MISRA C 編碼標(biāo)準(zhǔn),均支持 PC-Lint 靜態(tài)檢查,兩者官方文檔都有說明。

提示:

MISRA C 標(biāo)準(zhǔn),指的是汽車 C 語(yǔ)言開發(fā)標(biāo)準(zhǔn),可以參看之前分享的文章:MISRA C:2012 標(biāo)準(zhǔn)是什么?

1.uC/OS

uC/OS文章明確指出遵循MISRA C:2012標(biāo)準(zhǔn),也支持PC-Lint 的靜態(tài)檢查。

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

2.FreeRTOS

FreeRTOS也明確指出采用 MISRA C編碼標(biāo)準(zhǔn),但是不支持 C99 之后的標(biāo)準(zhǔn),也支持 PC-Lint 靜態(tài)檢查。

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

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

比如:

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

配置文件

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

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

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

標(biāo)頭

兩種RTOS標(biāo)頭的“內(nèi)容”有點(diǎn)類似,只是一個(gè)居中,一個(gè)靠左。

1.uC/OS

包含RTOS版本、版權(quán)說明、開源協(xié)議說明等:

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

2.FreeRTOS

包含RTOS版本、版權(quán)說明、開源協(xié)議說明、網(wǎng)址等,和uC/OS類似。

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

命名

兩種RTOS命名規(guī)則差別有點(diǎn)大,但都符合常規(guī)代碼命名規(guī)則。

1.文件名

uC/OS以【os_系統(tǒng)文件】方式,顯得更規(guī)范(體現(xiàn)了模塊化)。

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

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

2.宏

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

以“配置文件”為例:uC/OS以【OS_CFG_】開頭,F(xiàn)reeRTOS以【config】開頭。

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

3.數(shù)據(jù)類型

uC/OS定義的數(shù)據(jù)類型,相對(duì)更常見,也更適合新手。

FreeRTOS定義的數(shù)據(jù)類型,更“系統(tǒng)”一點(diǎn),適合老司機(jī),對(duì)新手相對(duì)沒那么友好。

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

4.函數(shù)名

兩者有點(diǎn)類似,前綴不一樣,后面都是以【大寫字母開頭】進(jìn)行區(qū)分。

比如:創(chuàng)建任務(wù)的函數(shù)名:

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

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

靜態(tài)(static)函數(shù)以 prv 為前綴。比如:prvIdleTask 函數(shù)。

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

注釋

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

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

這里主要說明一下,F(xiàn)reeRTOS在代碼中沒有相信注釋函數(shù)的功能、參數(shù)、返回值等信息。

還是以“創(chuàng)建任務(wù)”函數(shù)為例:

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

當(dāng)然,F(xiàn)reeRTOS的函數(shù)注釋信息,在手冊(cè)中有相信描述。

縮進(jìn)

這兩種RTOS縮進(jìn)方式一樣,都是采用 4 空格:

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

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

單詞縮寫

不同的領(lǐng)域,有不同的縮寫方式。在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

好了,本文就分享到這里。以上只是列舉了部分典型的編碼風(fēng)格,更多細(xì)節(jié),大家可以抽時(shí)間自行研究。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11345

    瀏覽量

    210409
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    957

    瀏覽量

    54954
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    819

    瀏覽量

    119890
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4828

    瀏覽量

    69059
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62399

原文標(biāo)題:編碼風(fēng)格:μCOS vs FreeRTOS

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HDL編碼風(fēng)格編碼

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

    編碼風(fēng)格編碼

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

    VS1053編碼

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

    FreeRTOS編碼標(biāo)準(zhǔn)如何命名

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

    Linux內(nèi)核編碼風(fēng)格(編程代碼風(fēng)格推薦)

    現(xiàn)編碼素質(zhì)的重要性。相反沒有良好的風(fēng)格的代碼讀起來難看、晦澀,甚至有時(shí)候一個(gè)括號(hào)沒對(duì)齊就能造成對(duì)程序的曲解或者不理解。我曾經(jīng)就遇見過這樣的情況,花費(fèi)了很多不必要的時(shí)間在程序的上下文對(duì)照上,還debug了
    發(fā)表于 08-24 09:45

    梳理一下FreeRTOS內(nèi)核代碼規(guī)范

    [導(dǎo)讀] 遇到些朋友感覺FreeRTOS內(nèi)核代碼看起來很不習(xí)慣,不習(xí)慣其編碼風(fēng)格,本文就來梳理一下其代碼規(guī)范,便于提高閱讀其代碼的效率。代碼基于FreeRTOS V10.4.3。Fre
    發(fā)表于 03-01 07:33

    Gowin HDL編碼風(fēng)格要求及編碼實(shí)現(xiàn)

    本手冊(cè)主要描述高云?HDL 編碼風(fēng)格要求及原語(yǔ)的 HDL 編碼實(shí)現(xiàn),旨在幫助用戶快速熟悉高云 HDL 編碼風(fēng)格和原語(yǔ)實(shí)現(xiàn),指導(dǎo)用戶設(shè)計(jì),提高
    發(fā)表于 09-29 06:23

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

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

    FreeRTOS編碼規(guī)則及風(fēng)格指南

    1.編碼標(biāo)準(zhǔn) FreeRTOS的核心源代碼遵從MISRA編碼標(biāo)準(zhǔn)指南。這個(gè)標(biāo)準(zhǔn)篇幅稍長(zhǎng),你可以在MISRA官方網(wǎng)站花少量錢買到,這里不再?gòu)?fù)制任何標(biāo)準(zhǔn)。 FreeRTOS源代碼不符合MI
    的頭像 發(fā)表于 01-10 11:00 ?2672次閱讀

    關(guān)于Linux的內(nèi)核代碼風(fēng)格

    編碼風(fēng)格錯(cuò)誤開始 曾經(jīng)在開發(fā)Linux內(nèi)核驅(qū)動(dòng)的時(shí)候,創(chuàng)建了一個(gè)補(bǔ)丁文件,但是在把補(bǔ)丁打到主分支的時(shí)候提示很多編碼風(fēng)格的錯(cuò)誤問題,后來重做了補(bǔ)丁才解決了問題,這也是沒有嚴(yán)格按照的Li
    的頭像 發(fā)表于 04-25 14:50 ?1861次閱讀

    一文帶你快速理解FreeRTOS代碼規(guī)范

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

    Sin/Cos編碼器與Sitara AM437x的連接參考設(shè)計(jì)

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

    Gowin HDL編碼風(fēng)格用戶指南

    本手冊(cè)主要描述高云?HDL 編碼風(fēng)格要求及原語(yǔ)的 HDL 編碼實(shí)現(xiàn),旨在 幫助用戶快速熟悉高云 HDL 編碼風(fēng)格和原語(yǔ)實(shí)現(xiàn),指導(dǎo)用戶設(shè)計(jì),
    發(fā)表于 09-15 16:02 ?0次下載
    Gowin HDL<b class='flag-5'>編碼</b><b class='flag-5'>風(fēng)格</b>用戶指南

    Verilog編碼風(fēng)格的建議

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

    阿里AliOS的編碼風(fēng)格

    其實(shí),我們身邊就有很多“好的資源”值得學(xué)習(xí),比如本文分享的 阿里 AliOS 的編碼風(fēng)格。
    發(fā)表于 06-02 09:26 ?273次閱讀
    百家乐单机版游戏下载| 百家乐官网赚钱方| 大发888在线娱乐城21点| 八卦罗盘24山图| 盐城市| 威尼斯人娱乐场 28| 属虎与属鼠做生意好吗| 百家乐官网乐城皇冠| 百家乐棋牌游戏币| 百家乐能战胜吗| k7百家乐官网最小投注| 帝王娱乐城开户| 百家乐在线洗码| 南宁百家乐官网的玩法技巧和规则 | 娱乐城网| 机器百家乐作弊| 百家乐官网翻天超清| 百家乐官网视频聊天游戏| 香港六合彩资料| 百家乐便利| 网络百家乐官网赚| 大发888优惠| 百家乐越长的路| 唐人街百家乐官网的玩法技巧和规则 | 百家乐官网游戏台| 星空棋牌舟山| 状元百家乐的玩法技巧和规则 | 和记国际网上娱乐| 真人百家乐官网套红利| 百家乐官网在线作弊| 大发888手机注册送钱| 致胜百家乐的玩法技巧和规则| 百家乐赢利策略| 迪威百家乐官网娱乐网| 百家乐官网稳赚秘籍| tt娱乐城官网| 百家乐扑克玩法| 百家乐官网游戏规范| 百家乐官网游戏平台排名| 应城市| 锦江国际娱乐|