一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

安芯教育科技 ? 來源:安芯教育科技 ? 作者:朱工 ? 2021-01-10 11:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

FreeRTOS的核心源代碼遵從MISRA編碼標(biāo)準(zhǔn)指南。這個(gè)標(biāo)準(zhǔn)篇幅稍長(zhǎng),你可以在MISRA官方網(wǎng)站花少量錢買到,這里不再復(fù)制任何標(biāo)準(zhǔn)。

FreeRTOS源代碼不符合MISRA標(biāo)準(zhǔn)的項(xiàng)目如下所示:

  • 有兩個(gè)API函數(shù)有多個(gè)返回點(diǎn)。MISRA編碼標(biāo)準(zhǔn)強(qiáng)制規(guī)定:一個(gè)函數(shù)在其結(jié)尾應(yīng)該有單一的返回點(diǎn)。
  • 指針?biāo)銛?shù)運(yùn)算,在創(chuàng)建任務(wù)時(shí),為了兼容8、16、20、24、32位總線,不可避免的使用了指針?biāo)銛?shù)運(yùn)算。MISRA編碼標(biāo)準(zhǔn)強(qiáng)制規(guī)定:指針的算術(shù)運(yùn)算只能用在指向數(shù)組或數(shù)組元素的指針上。
  • 默認(rèn)情況下,跟蹤宏為空語句,因此不符合MISRA的規(guī)定。MISRA編碼標(biāo)準(zhǔn)強(qiáng)制規(guī)定:預(yù)處理指令在句法上應(yīng)該是有意義的。
    FreeRTOS可以在很多不同編譯器中編譯,其中的一些編譯器比同類有更高級(jí)特性。因?yàn)檫@個(gè)原因,F(xiàn)reeRTOS不使用任何非C語言標(biāo)準(zhǔn)的特性或語法。一個(gè)例外情況是頭文件stdint.h。在文件夾FreeRTOS/Source/include下包含一個(gè)叫做stdint.readme的文件,如果你的編譯器不提供stdint類型定義,可以將stdint.readme文件重命名為stdint.h。
2.命名規(guī)則
RTOS內(nèi)核和演示例程源代碼使用以下規(guī)則: 1> 變量
  • uint32_t類型的變量使用前綴ul,這里’u’表示’unsigned’,’l’表示’long’
  • uint16_t類型的變量使用前綴us,這里’u’表示’unsigned’,’s’表示’short’
  • uint8_t類型的變量使用前綴uc,這里’u’表示’unsigned’,’c’表示’char’
  • 非stdint類型的變量使用前綴x,比如基本的Type_t和TickType_t類型,這些類型在移植層定義,定義成符合處理器架構(gòu)的最高效類型;
  • 非stdint類型的無符號(hào)變量使用前綴ux,比如UbaseType_t(unsigned BaseType_t)
  • size_t類型的變量使用前綴x;
  • 枚舉類型變量使用前綴e
  • 指針類型變量在類型基礎(chǔ)上附加前綴p,比如指向uint16_t的指針變量前綴為pus
  • 與MISRA指南一致,char類型變量?jī)H被允許保存ASCII字符,前綴為c
  • 與MISRA指南一致,char *類型變量?jī)H允許指向ASCII字符串,前綴為pc 2> 函數(shù)
  • 在文件作用域范圍的函數(shù)前綴為prv
  • API函數(shù)的前綴為它們的返回類型,當(dāng)返回為空時(shí),前綴為v
  • API函數(shù)名字起始部分為該函數(shù)所在的文件名。比如vTaskDelete函數(shù)定義在tasks.c,并且該函數(shù)返回空。 3> 宏
  • 宏的名字起始部分為該宏定義所在的文件名的一部分。比如configUSE_PREEMPTION定義在FreeRTOSConfig.h文件中。
  • 除了前綴,宏剩下的字母全部為大寫,兩個(gè)單詞間用下劃線(’_’)隔開。
3.數(shù)據(jù)類型
只有stdint.h和RTOS自己定義的數(shù)據(jù)類型可以使用,但也有例外情況,如下所示:
  • char:與MISRA編碼標(biāo)準(zhǔn)指南一致,char類型變量?jī)H被允許保存ASCII字符
  • char :與MISRA編碼標(biāo)準(zhǔn)指南一致,char 類型變量?jī)H允許指向ASCII字符串。當(dāng)標(biāo)準(zhǔn)庫函數(shù)期望一個(gè)char *參數(shù)時(shí),這樣做可以消除一些編譯器警告;特別是考慮到有些編譯器將char類型當(dāng)做signed類型,還有些編譯器將char類型當(dāng)做unsigned類型。有三種類型會(huì)在移植層定義,它們是:
  • TickType_t:如果configUSE_16_BIT_TICKS為非零(條件為真),TickType_t定義為無符號(hào)16位類型。如果configUSE_16_BIT_TICKS為零(條件為假),TickType_t定義為無符號(hào)32位類型。注:32位架構(gòu)的微處理器應(yīng)設(shè)置configUSE_16_BIT_TICKS為零。
  • BaseType_t:定義為微處理器架構(gòu)效率最高的數(shù)據(jù)類型。比如,在32位架構(gòu)處理器上,BaseType_t應(yīng)該定義為32位類型。在16位架構(gòu)處理器上,BaseType_t應(yīng)該定義為16位類型。如果BaseType_t定義為char,對(duì)于函數(shù)返回值一定要確保使用的是signed char,否則可能造成負(fù)數(shù)錯(cuò)誤。
  • UbaseType_t:這是一個(gè)無符號(hào)BaseType_t類型
4.風(fēng)格指南
  • 縮進(jìn):縮進(jìn)使用制表符,一個(gè)制表符等于4個(gè)空格。
  • 注釋:注釋單行不超過80列,特殊情況除外。不使用C++風(fēng)格的雙斜線(//)注釋
  • 布局:FreeRTOS的源代碼被設(shè)計(jì)成盡可能的易于查看和閱讀。下面的代碼片中,第一部分展示文件布局,第二部分展示C代碼設(shè)計(jì)格式。

	
/*首先在這里包含庫文件...*/
#include

/*...然后是FreeRTOS的頭文件...*/
#include"FreeRTOS.h"

/*...緊接著包含其它頭文件.*/
#include"HardwareSpecifics.h"

/*隨后是#defines,在合理的位置添加括號(hào).*/
#defineA_DEFINITION(1)

/*
*隨后是Static(文件內(nèi)部的)函數(shù)原型,
*如果注釋有多行,參照本條注釋風(fēng)格---每一行都以’*’起始.
*/
staticvoidprvAFunction(uint32_tulParameter);

/*文件作用域變量(本文件內(nèi)部使用)緊隨其后,要在函數(shù)體定義之前.*/
staticBaseType_txMyVariable.

/*每一個(gè)函數(shù)的結(jié)束都有一行破折號(hào),破折號(hào)與下面的第一個(gè)函數(shù)之間留一行空白。*/

/*-----------------------------------------------------------*/

voidvAFunction(void)
{
/*函數(shù)體在此定義,注意要用大括號(hào)括住*/
}
/*-----------------------------------------------------------*/

staticUBaseType_tprvNextFunction(void)
{
/*函數(shù)體在此定義.*/
}
/*-----------------------------------------------------------*/

/*
*函數(shù)名字總是占一行,包括返回類型。左括號(hào)之前沒有空格左括號(hào)之后有一個(gè)空格,
*每個(gè)參數(shù)后面有一個(gè)空格參數(shù)的命名應(yīng)該具有一定的描述性.
*/
voidvAnExampleFunction(longlParameter1,unsignedshortusParameter2)
{
/*變量聲明沒有縮進(jìn).*/
uint8_tucByte;

/*代碼要對(duì)齊.大括號(hào)占獨(dú)自一行.*/
for(ucByte=0U;ucBytefor、while、do、if結(jié)構(gòu)具有相似的模式。這些關(guān)鍵字和左括號(hào)之間沒有空格。
*左括號(hào)之后有一個(gè)空格,右括號(hào)前面也有一個(gè)空格,每個(gè)分號(hào)后面有一個(gè)空格。
*每個(gè)運(yùn)算符的前后各一個(gè)空格。使用圓括號(hào)明確運(yùn)算符的優(yōu)先級(jí)。不允許有0
*以外的數(shù)字(魔鬼數(shù))出現(xiàn),必要時(shí)將這些數(shù)字換成能表示出數(shù)字含義的常量或
*宏定義。
*/
for(ucByte=0U;ucBytewhile(ucByteif((ucByte#if(configUSE_TRACE_FACILITY==1)
{
/*向TCB增加一個(gè)用于跟蹤的計(jì)數(shù)器.*/
pxNewTCB->uxTCBNumber=uxTaskNumber;
}
#endif

/*方括號(hào)前后各留一個(gè)空格*/
ucBuffer[0]=0U;
ucBuffer[fileBUFFER_LENGTH-1U]=0U;

責(zé)任編輯:xj

原文標(biāo)題:FreeRTOS系列第4篇---FreeRTOS編碼標(biāo)準(zhǔn)及風(fēng)格指南

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


聲明:本文內(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)投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    969

    瀏覽量

    55773
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    493

    瀏覽量

    64346

原文標(biāo)題:FreeRTOS系列第4篇---FreeRTOS編碼標(biāo)準(zhǔn)及風(fēng)格指南

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    詳解FreeRTOS與SAFERTOS的區(qū)別

    開源免費(fèi)的FreeRTOS由Richard Barry在WHIS工作時(shí)創(chuàng)建,WHIS基于FreeRTOS的功能模型,通過完整的HAZOP分析,確定了功能模型和API中的所有的弱點(diǎn),減輕所有薄弱環(huán)節(jié),并采用IEC 61508 SIL 3的開發(fā)生命周期,重新設(shè)計(jì)實(shí)現(xiàn)了SAFE
    的頭像 發(fā)表于 06-04 16:58 ?329次閱讀
    詳解<b class='flag-5'>FreeRTOS</b>與SAFERTOS的區(qū)別

    編碼器使用指南或操作手冊(cè)

    在自動(dòng)化與精密制造領(lǐng)域,編碼器作為關(guān)鍵的位置或速度反饋元件,扮演著舉足輕重的角色。它如同機(jī)器的“眼睛”,精準(zhǔn)捕捉每一個(gè)細(xì)微的動(dòng)作,確保生產(chǎn)過程的準(zhǔn)確無誤。本文將為您詳細(xì)介紹編碼器的使用方法,幫助
    的頭像 發(fā)表于 02-05 09:09 ?2682次閱讀
    <b class='flag-5'>編碼器使用指南</b>或操作手冊(cè)

    SMT元器件的編碼與識(shí)別

    隨著電子技術(shù)的快速發(fā)展,SMT因其高密度、高性能、低成本等優(yōu)勢(shì)在電子制造領(lǐng)域占據(jù)了主導(dǎo)地位。在SMT生產(chǎn)過程中,元器件的正確編碼與識(shí)別對(duì)于保證生產(chǎn)效率和產(chǎn)品質(zhì)量至關(guān)重要。 1. SMT元器件編碼規(guī)則
    的頭像 發(fā)表于 01-10 18:01 ?1728次閱讀

    什么是編碼方式、數(shù)據(jù)質(zhì)量和傳輸需求

    編碼方式、數(shù)據(jù)質(zhì)量和傳輸需求是信息技術(shù)和數(shù)據(jù)傳輸中非常重要的概念,它們各自具有特定的含義和影響。下面將分別對(duì)這三個(gè)因素進(jìn)行詳細(xì)介紹: 一、編碼方式 ? 定義: 編碼方式是指通過特定的技術(shù)或規(guī)則
    的頭像 發(fā)表于 01-10 13:21 ?566次閱讀

    拉線編碼器接線指南:步驟與注意事項(xiàng)

    。本文將為您提供一份詳盡的拉線編碼器接線指南,幫助您輕松完成接線工作,同時(shí)確保操作的安全性和準(zhǔn)確性。 一、準(zhǔn)備工作 在開始接線之前,請(qǐng)務(wù)必做好以下準(zhǔn)備工作: 閱讀說明書 :詳細(xì)閱讀拉線編碼器的使用說明書,了解產(chǎn)
    的頭像 發(fā)表于 01-10 08:54 ?684次閱讀
    拉線<b class='flag-5'>編碼</b>器接線<b class='flag-5'>指南</b>:步驟與注意事項(xiàng)

    高精度磁編碼器選型指南編碼器的安裝與調(diào)試技巧

    高精度磁編碼器選型指南 精度要求 : 確定所需的測(cè)量精度,例如角度分辨率、線性度等。高精度磁編碼器通常具有更高的分辨率和更好的線性度,適用于對(duì)測(cè)量精度要求較高的應(yīng)用。 工作環(huán)境 : 考慮編碼
    的頭像 發(fā)表于 11-23 09:14 ?1775次閱讀

    FPGA編碼風(fēng)格介紹

    組合邏輯環(huán)路(Combinational Loops):指組合邏輯的輸出信號(hào)不經(jīng)過任何時(shí)序邏輯電路(FF等),而直接反饋到輸入節(jié)點(diǎn),從而構(gòu)成的電路環(huán)路。
    的頭像 發(fā)表于 11-15 10:49 ?640次閱讀
    FPGA<b class='flag-5'>編碼</b><b class='flag-5'>風(fēng)格</b>介紹

    二進(jìn)制編碼器的故障排除指南

    二進(jìn)制編碼器是一種將二進(jìn)制信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)的電子設(shè)備,廣泛應(yīng)用于計(jì)算機(jī)、通信和自動(dòng)化控制系統(tǒng)中。當(dāng)二進(jìn)制編碼器出現(xiàn)問題時(shí),有效的故障排除是確保系統(tǒng)正常運(yùn)行的關(guān)鍵。 1. 初步檢查 1.1 檢查電源
    的頭像 發(fā)表于 11-06 09:49 ?941次閱讀

    風(fēng)華貼片電容物料編碼如何看?

    風(fēng)華貼片電容的物料編碼規(guī)則通常包含多個(gè)部分,每個(gè)部分都代表了不同的信息。以下是關(guān)于如何解讀風(fēng)華貼片電容物料編碼的分點(diǎn)表示和歸納: 1、電容數(shù)值: 編碼的第一至第三位數(shù)字表示電容的數(shù)值,
    的頭像 發(fā)表于 11-04 15:33 ?825次閱讀
    風(fēng)華貼片電容物料<b class='flag-5'>編碼</b>如何看?

    網(wǎng)關(guān)的設(shè)置規(guī)則

    網(wǎng)關(guān)的設(shè)置規(guī)則涉及多個(gè)方面,包括硬件安裝、網(wǎng)絡(luò)連接、基本配置、高級(jí)配置以及安全設(shè)置等。以下是一篇關(guān)于網(wǎng)關(guān)設(shè)置規(guī)則的詳細(xì)指南,旨在幫助用戶正確配置和管理網(wǎng)關(guān)設(shè)備。
    的頭像 發(fā)表于 09-30 11:48 ?4717次閱讀

    在TM4C MCU上使用FreeRTOS開發(fā)高級(jí)應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《在TM4C MCU上使用FreeRTOS開發(fā)高級(jí)應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 10:17 ?2次下載
    在TM4C MCU上使用<b class='flag-5'>FreeRTOS</b>開發(fā)高級(jí)應(yīng)用

    freertos最多支持多少個(gè)任務(wù)

    FreeRTOS是一個(gè)輕量級(jí)的實(shí)時(shí)操作系統(tǒng)(RTOS),其設(shè)計(jì)初衷就是為了提供簡(jiǎn)單、可靠且高效的實(shí)時(shí)任務(wù)管理。關(guān)于FreeRTOS最多支持多少個(gè)任務(wù)的問題,實(shí)際上并沒有一個(gè)固定的上限,這主要取決于
    的頭像 發(fā)表于 09-02 14:21 ?2267次閱讀

    freertos和rtos區(qū)別是什么

    FreeRTOS 和 RTOS(實(shí)時(shí)操作系統(tǒng))是兩個(gè)不同的概念,但它們之間有緊密的聯(lián)系。FreeRTOS 是一個(gè)特定的開源實(shí)時(shí)操作系統(tǒng),而 RTOS 是實(shí)時(shí)操作系統(tǒng)的一般概念。 概念定義 RTOS
    的頭像 發(fā)表于 09-02 14:18 ?3017次閱讀

    freertos和裸機(jī)有什么區(qū)別

    FreeRTOS 和裸機(jī)編程是兩種不同的嵌入式系統(tǒng)開發(fā)方法,它們?cè)谠O(shè)計(jì)理念、資源使用、功能實(shí)現(xiàn)等方面有著顯著的差異。 1. 基本概念 1.1 FreeRTOS FreeRTOS 是一個(gè)小型的、可裁剪
    的頭像 發(fā)表于 09-02 14:13 ?3006次閱讀

    freertos和rtthread哪一個(gè)更好

    在嵌入式系統(tǒng)開發(fā)中,選擇合適的實(shí)時(shí)操作系統(tǒng)(RTOS)對(duì)于項(xiàng)目的成功至關(guān)重要。FreeRTOS和RT-Thread是兩個(gè)非常流行的開源RTOS,它們各自具有獨(dú)特的特點(diǎn)和優(yōu)勢(shì)。 1. 簡(jiǎn)介
    的頭像 發(fā)表于 09-02 14:06 ?7131次閱讀