Kl25ch05(構(gòu)件化開(kāi)發(fā)方法與底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范)_第1頁(yè)
Kl25ch05(構(gòu)件化開(kāi)發(fā)方法與底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范)_第2頁(yè)
Kl25ch05(構(gòu)件化開(kāi)發(fā)方法與底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范)_第3頁(yè)
Kl25ch05(構(gòu)件化開(kāi)發(fā)方法與底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范)_第4頁(yè)
Kl25ch05(構(gòu)件化開(kāi)發(fā)方法與底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第5章章 構(gòu)件化開(kāi)發(fā)方法與底層驅(qū)動(dòng)構(gòu)構(gòu)件化開(kāi)發(fā)方法與底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范件封裝規(guī)范主要內(nèi)容:主要內(nèi)容:5.1 5.1 嵌入式硬件構(gòu)件與底層軟件構(gòu)件嵌入式硬件構(gòu)件與底層軟件構(gòu)件5.2 5.2 基于硬件構(gòu)件的嵌入式系統(tǒng)硬件電路設(shè)計(jì)基于硬件構(gòu)件的嵌入式系統(tǒng)硬件電路設(shè)計(jì)5.3 5.3 基于硬件構(gòu)件的嵌入式底層軟件構(gòu)件的編程方法基于硬件構(gòu)件的嵌入式底層軟件構(gòu)件的編程方法5.4 5.4 底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范5.5 5.5 本章小結(jié)本章小結(jié)5.1 嵌入式硬件構(gòu)件與底層軟件構(gòu)件嵌入式硬件構(gòu)件與底層軟件構(gòu)件 軟件產(chǎn)業(yè)的發(fā)展借鑒了機(jī)械、建筑等傳統(tǒng)產(chǎn)業(yè)先生產(chǎn)符軟件產(chǎn)業(yè)的發(fā)展借鑒了機(jī)械、建筑等傳

2、統(tǒng)產(chǎn)業(yè)先生產(chǎn)符合標(biāo)準(zhǔn)的構(gòu)件(零部件),然后將標(biāo)準(zhǔn)構(gòu)件按照規(guī)則組裝合標(biāo)準(zhǔn)的構(gòu)件(零部件),然后將標(biāo)準(zhǔn)構(gòu)件按照規(guī)則組裝成實(shí)際產(chǎn)品的模式。而成實(shí)際產(chǎn)品的模式。而隨著微控制器及應(yīng)用處理器內(nèi)部隨著微控制器及應(yīng)用處理器內(nèi)部RAM及及Flash存儲(chǔ)器容量的增大,以及外部模塊內(nèi)置化程存儲(chǔ)器容量的增大,以及外部模塊內(nèi)置化程度的提高,嵌入式系統(tǒng)的設(shè)計(jì)復(fù)雜性、設(shè)計(jì)規(guī)模及開(kāi)發(fā)手度的提高,嵌入式系統(tǒng)的設(shè)計(jì)復(fù)雜性、設(shè)計(jì)規(guī)模及開(kāi)發(fā)手段已經(jīng)發(fā)生了根本變化。為此希望提高軟硬件設(shè)計(jì)可重用段已經(jīng)發(fā)生了根本變化。為此希望提高軟硬件設(shè)計(jì)可重用性與可移植性,構(gòu)件的制作與應(yīng)用是重用與移植的基礎(chǔ)與性與可移植性,構(gòu)件的制作與應(yīng)用是重用與移植的

3、基礎(chǔ)與保障。保障。5.1.1 嵌入式硬件構(gòu)件的概念嵌入式硬件構(gòu)件的概念 要提高硬件設(shè)計(jì)可重用性與可移植性,就必須有工程師要提高硬件設(shè)計(jì)可重用性與可移植性,就必須有工程師們共同遵守的硬件設(shè)計(jì)規(guī)范。設(shè)計(jì)人員若憑借個(gè)人工作經(jīng)驗(yàn)們共同遵守的硬件設(shè)計(jì)規(guī)范。設(shè)計(jì)人員若憑借個(gè)人工作經(jīng)驗(yàn)和習(xí)慣的積累進(jìn)行系統(tǒng)硬件電路的設(shè)計(jì),往往每次都需從零和習(xí)慣的積累進(jìn)行系統(tǒng)硬件電路的設(shè)計(jì),往往每次都需從零開(kāi)始,若在已有類似原理圖上修改又很麻煩,容易出錯(cuò)。因開(kāi)始,若在已有類似原理圖上修改又很麻煩,容易出錯(cuò)。因此把構(gòu)件的思想引入到硬件原理圖設(shè)計(jì)中。此把構(gòu)件的思想引入到硬件原理圖設(shè)計(jì)中。 嵌入式硬件構(gòu)件嵌入式硬件構(gòu)件是指將一個(gè)或多

4、個(gè)硬件功能模塊、支撐是指將一個(gè)或多個(gè)硬件功能模塊、支撐電路及其功能描述封裝成一個(gè)可重用的硬件實(shí)體,并提供一電路及其功能描述封裝成一個(gè)可重用的硬件實(shí)體,并提供一系列規(guī)范的輸入系列規(guī)范的輸入/輸出接口。輸出接口。 據(jù)接口之間的生產(chǎn)消費(fèi)關(guān)系,接口可分為提供接口和需據(jù)接口之間的生產(chǎn)消費(fèi)關(guān)系,接口可分為提供接口和需求接口兩類。根據(jù)所擁有接口類型的不同,硬件構(gòu)件分為求接口兩類。根據(jù)所擁有接口類型的不同,硬件構(gòu)件分為核核心構(gòu)件心構(gòu)件、中間構(gòu)件中間構(gòu)件和和終端構(gòu)件終端構(gòu)件三種類型。三種類型。5.1.2 嵌入式底層驅(qū)動(dòng)構(gòu)件的概念嵌入式底層驅(qū)動(dòng)構(gòu)件的概念 構(gòu)件構(gòu)件(Component)是可重用的實(shí)體,它包含了合乎

5、)是可重用的實(shí)體,它包含了合乎規(guī)范的接口和功能實(shí)現(xiàn),能夠被獨(dú)立部署和被第三方組裝規(guī)范的接口和功能實(shí)現(xiàn),能夠被獨(dú)立部署和被第三方組裝 。 軟件構(gòu)件軟件構(gòu)件(Software Component)是指,在軟件系統(tǒng))是指,在軟件系統(tǒng)中具有相對(duì)獨(dú)立功能、可以明確辨識(shí)構(gòu)件實(shí)體。中具有相對(duì)獨(dú)立功能、可以明確辨識(shí)構(gòu)件實(shí)體。 嵌入式軟件構(gòu)件嵌入式軟件構(gòu)件(Embedded Software Component)是實(shí)現(xiàn)一定嵌入式系統(tǒng)功能的一組封裝的、規(guī)范的、可重)是實(shí)現(xiàn)一定嵌入式系統(tǒng)功能的一組封裝的、規(guī)范的、可重用的、具有嵌入特性的軟件構(gòu)件單元,是組織嵌入式系統(tǒng)功用的、具有嵌入特性的軟件構(gòu)件單元,是組織嵌入式系

6、統(tǒng)功能的基本單位。能的基本單位。 嵌入式軟件分為嵌入式軟件分為高層軟件構(gòu)件高層軟件構(gòu)件和和底層軟件構(gòu)件底層軟件構(gòu)件(底層驅(qū)(底層驅(qū)動(dòng)構(gòu)件)。高層軟件構(gòu)件與硬件無(wú)關(guān),而底層驅(qū)動(dòng)構(gòu)件與硬動(dòng)構(gòu)件)。高層軟件構(gòu)件與硬件無(wú)關(guān),而底層驅(qū)動(dòng)構(gòu)件與硬件密不可分,是硬件驅(qū)動(dòng)程序的構(gòu)件化封裝。件密不可分,是硬件驅(qū)動(dòng)程序的構(gòu)件化封裝。5.2 基于硬件構(gòu)件的嵌入式系統(tǒng)硬件電基于硬件構(gòu)件的嵌入式系統(tǒng)硬件電路設(shè)計(jì)路設(shè)計(jì)5.2.1 設(shè)計(jì)時(shí)需要考慮的基本問(wèn)題設(shè)計(jì)時(shí)需要考慮的基本問(wèn)題 1MCU的選擇的選擇 選擇選擇MCU時(shí)要考慮時(shí)要考慮MCU所能夠完成的功能、所能夠完成的功能、MCU的價(jià)的價(jià)格、功耗、供電電壓、格、功耗、供電電

7、壓、I/O口電平、管腳數(shù)目以及口電平、管腳數(shù)目以及MCU的封的封裝等因素。裝等因素。 2電源電源 (1)考慮系統(tǒng)對(duì)電源的需求,例如系統(tǒng)需要幾種電)考慮系統(tǒng)對(duì)電源的需求,例如系統(tǒng)需要幾種電估計(jì)各需要多少功率或最大電流(估計(jì)各需要多少功率或最大電流(mA)。)。 (2)考慮芯片與器件對(duì)電源波動(dòng)性的需求。一般允許)考慮芯片與器件對(duì)電源波動(dòng)性的需求。一般允許電源波動(dòng)幅度在電源波動(dòng)幅度在5%以內(nèi)。對(duì)于以內(nèi)。對(duì)于A/D轉(zhuǎn)換芯片的參考電壓一轉(zhuǎn)換芯片的參考電壓一般要求般要求1%以內(nèi)。以內(nèi)。 (3)考慮工作電源是使用電源模塊還是使用電源電路)考慮工作電源是使用電源模塊還是使用電源電路。 3普通普通I/O口口 (

8、1)上拉、下拉電阻:考慮用內(nèi)部或者外部上)上拉、下拉電阻:考慮用內(nèi)部或者外部上/下拉電下拉電阻。阻。 (2)開(kāi)關(guān)量輸入:一定要保證高低電壓分明。)開(kāi)關(guān)量輸入:一定要保證高低電壓分明。 (3)開(kāi)關(guān)量輸出:基本原則是保證輸出高電平接近電)開(kāi)關(guān)量輸出:基本原則是保證輸出高電平接近電源電壓,低電平接近地電平。源電壓,低電平接近地電平。 4A/D電路與電路與D/A電路電路 (1)A/D電路:要清楚前端采樣基本原理,對(duì)電阻型、電路:要清楚前端采樣基本原理,對(duì)電阻型、電流型和電壓型傳感器采用不同的采集電路。如果采集的電流型和電壓型傳感器采用不同的采集電路。如果采集的信號(hào)微弱,還要考慮如何進(jìn)行信號(hào)放大。信號(hào)微

9、弱,還要考慮如何進(jìn)行信號(hào)放大。 (2)D/A電路:考慮電路:考慮MCU的引腳通過(guò)何種輸出電路控的引腳通過(guò)何種輸出電路控制實(shí)際對(duì)象。制實(shí)際對(duì)象。 5控制電路控制電路 對(duì)外控制電路要注意設(shè)計(jì)的冗余與反測(cè),要有合適的信對(duì)外控制電路要注意設(shè)計(jì)的冗余與反測(cè),要有合適的信號(hào)隔離措施等。在評(píng)估設(shè)計(jì)的布板時(shí),一定要在構(gòu)件的輸號(hào)隔離措施等。在評(píng)估設(shè)計(jì)的布板時(shí),一定要在構(gòu)件的輸入輸出端引出檢測(cè)孔,以方便排查錯(cuò)誤時(shí)測(cè)量。入輸出端引出檢測(cè)孔,以方便排查錯(cuò)誤時(shí)測(cè)量。 6考慮低功耗考慮低功耗 低功耗設(shè)計(jì)并不僅僅是為了省電,更多的好處在于降低低功耗設(shè)計(jì)并不僅僅是為了省電,更多的好處在于降低了電源模塊及散熱系統(tǒng)的成本。要做到

10、低功耗一般需要注意了電源模塊及散熱系統(tǒng)的成本。要做到低功耗一般需要注意以下幾點(diǎn):以下幾點(diǎn): (1)并不是所有的總線信號(hào)都要上拉。)并不是所有的總線信號(hào)都要上拉。 (2)不用的)不用的I/O口不要懸空,如果懸空的話,受外界的口不要懸空,如果懸空的話,受外界的一點(diǎn)點(diǎn)干擾就可能成為反復(fù)振蕩的輸入信號(hào),而一點(diǎn)點(diǎn)干擾就可能成為反復(fù)振蕩的輸入信號(hào),而MOS器件的器件的功耗基本取決于門(mén)電路的翻轉(zhuǎn)次數(shù)。功耗基本取決于門(mén)電路的翻轉(zhuǎn)次數(shù)。 (3)對(duì)一些外圍小芯片的功耗也需要考慮。)對(duì)一些外圍小芯片的功耗也需要考慮。 7考慮低成本考慮低成本 (1)正確選擇電阻值與電容值。)正確選擇電阻值與電容值。 (2)指示燈的選

11、擇。)指示燈的選擇。 (3)不要什么都選最好的。)不要什么都選最好的。5.2.2 硬件構(gòu)件化電路原理圖繪制的簡(jiǎn)明規(guī)則硬件構(gòu)件化電路原理圖繪制的簡(jiǎn)明規(guī)則 1硬件構(gòu)件設(shè)計(jì)的通用規(guī)則硬件構(gòu)件設(shè)計(jì)的通用規(guī)則 (1)元器件命名格式:對(duì)于核心構(gòu)件,其元器件直接)元器件命名格式:對(duì)于核心構(gòu)件,其元器件直接編號(hào)命名,同種類型的元件命名時(shí)冠以相同的字母前綴。編號(hào)命名,同種類型的元件命名時(shí)冠以相同的字母前綴。對(duì)于中間構(gòu)件和終端構(gòu)件,其元器件命名格式采用對(duì)于中間構(gòu)件和終端構(gòu)件,其元器件命名格式采用“構(gòu)件名構(gòu)件名-標(biāo)志字符標(biāo)志字符?”。當(dāng)構(gòu)件原理圖應(yīng)用到具體系統(tǒng)中時(shí),可借助。當(dāng)構(gòu)件原理圖應(yīng)用到具體系統(tǒng)中時(shí),可借助原理

12、圖編輯軟件為其自動(dòng)編號(hào)。原理圖編輯軟件為其自動(dòng)編號(hào)。 (2)為硬件構(gòu)件添加詳細(xì)的文字描述,包括中文名稱)為硬件構(gòu)件添加詳細(xì)的文字描述,包括中文名稱、英文名稱、功能描述、接口描述、注意事項(xiàng)等,以增強(qiáng)原、英文名稱、功能描述、接口描述、注意事項(xiàng)等,以增強(qiáng)原理圖的可讀性。理圖的可讀性。 (3)將前兩步產(chǎn)生的內(nèi)容封裝在一個(gè)虛線框內(nèi),組成)將前兩步產(chǎn)生的內(nèi)容封裝在一個(gè)虛線框內(nèi),組成硬件構(gòu)件的內(nèi)部實(shí)體。硬件構(gòu)件的內(nèi)部實(shí)體。 (4)為該硬件構(gòu)件添加與其他構(gòu)件交互的輸入)為該硬件構(gòu)件添加與其他構(gòu)件交互的輸入/輸出接輸出接口標(biāo)識(shí)。接口標(biāo)識(shí)有兩種:接口注釋和接口網(wǎng)標(biāo)??跇?biāo)識(shí)。接口標(biāo)識(shí)有兩種:接口注釋和接口網(wǎng)標(biāo)。 2

13、核心構(gòu)件設(shè)計(jì)規(guī)則核心構(gòu)件設(shè)計(jì)規(guī)則 設(shè)計(jì)核心構(gòu)件時(shí),需考慮的問(wèn)題是:設(shè)計(jì)核心構(gòu)件時(shí),需考慮的問(wèn)題是:“核心構(gòu)件能為其核心構(gòu)件能為其他構(gòu)件提供哪些信號(hào)?他構(gòu)件提供哪些信號(hào)?”。 核心構(gòu)件其實(shí)就是某型號(hào)核心構(gòu)件其實(shí)就是某型號(hào)MCU的最小系統(tǒng)。的最小系統(tǒng)。 核心構(gòu)件設(shè)計(jì)的目標(biāo)是:凡是使用該核心構(gòu)件設(shè)計(jì)的目標(biāo)是:凡是使用該MCU進(jìn)行硬件系進(jìn)行硬件系統(tǒng)設(shè)計(jì)時(shí),核心構(gòu)件可以直接統(tǒng)設(shè)計(jì)時(shí),核心構(gòu)件可以直接“組裝組裝”到系統(tǒng)中,無(wú)須任何到系統(tǒng)中,無(wú)須任何改動(dòng)。為了實(shí)現(xiàn)這一目標(biāo),在設(shè)計(jì)核心構(gòu)件的實(shí)體時(shí)必須考改動(dòng)。為了實(shí)現(xiàn)這一目標(biāo),在設(shè)計(jì)核心構(gòu)件的實(shí)體時(shí)必須考慮細(xì)致、周全,包括穩(wěn)定性、擴(kuò)展性等,封裝要完整。慮細(xì)致、

14、周全,包括穩(wěn)定性、擴(kuò)展性等,封裝要完整。 在進(jìn)行接口設(shè)計(jì)時(shí),需將所有可能使用到的引腳都標(biāo)注在進(jìn)行接口設(shè)計(jì)時(shí),需將所有可能使用到的引腳都標(biāo)注上接口網(wǎng)標(biāo)(不要考慮:核心構(gòu)件將會(huì)用到怎樣的系統(tǒng)中上接口網(wǎng)標(biāo)(不要考慮:核心構(gòu)件將會(huì)用到怎樣的系統(tǒng)中去)。若同一引腳具有不同功能,則接口網(wǎng)標(biāo)依據(jù)第一功能去)。若同一引腳具有不同功能,則接口網(wǎng)標(biāo)依據(jù)第一功能選項(xiàng)命名。選項(xiàng)命名。 遵循上述規(guī)則設(shè)計(jì)核心構(gòu)件的好處是:當(dāng)使用核心構(gòu)件遵循上述規(guī)則設(shè)計(jì)核心構(gòu)件的好處是:當(dāng)使用核心構(gòu)件和其他構(gòu)件一起組裝系統(tǒng)時(shí),只要考慮其他構(gòu)件將要連接到和其他構(gòu)件一起組裝系統(tǒng)時(shí),只要考慮其他構(gòu)件將要連接到核心構(gòu)件的哪個(gè)接口(不是考慮:核心構(gòu)

15、件將要連接到其他核心構(gòu)件的哪個(gè)接口(不是考慮:核心構(gòu)件將要連接到其他構(gòu)件的哪個(gè)接口),這也符合設(shè)計(jì)人員的思維習(xí)慣。構(gòu)件的哪個(gè)接口),這也符合設(shè)計(jì)人員的思維習(xí)慣。 3中間構(gòu)件設(shè)計(jì)規(guī)則中間構(gòu)件設(shè)計(jì)規(guī)則 設(shè)計(jì)中間構(gòu)件時(shí),需考慮的問(wèn)題是:設(shè)計(jì)中間構(gòu)件時(shí),需考慮的問(wèn)題是:“中間構(gòu)件需要接中間構(gòu)件需要接受哪些信號(hào),以及提供哪些信號(hào)?受哪些信號(hào),以及提供哪些信號(hào)?”。 中間構(gòu)件是核心構(gòu)件與終端構(gòu)件之間通信的橋梁。中間構(gòu)件是核心構(gòu)件與終端構(gòu)件之間通信的橋梁。 一個(gè)中間構(gòu)件應(yīng)具有明確的且相對(duì)獨(dú)立的功能,它既要一個(gè)中間構(gòu)件應(yīng)具有明確的且相對(duì)獨(dú)立的功能,它既要有接受其他構(gòu)件提供的服務(wù)的接口,即需求接口,又要有為有接

16、受其他構(gòu)件提供的服務(wù)的接口,即需求接口,又要有為其他構(gòu)件提供服務(wù)的接口,即提供接口。描述需求接口采用其他構(gòu)件提供服務(wù)的接口,即提供接口。描述需求接口采用接口注釋,描述提供接口采用接口網(wǎng)標(biāo)。接口注釋,描述提供接口采用接口網(wǎng)標(biāo)。 為直觀起見(jiàn),設(shè)計(jì)中間構(gòu)件時(shí),將構(gòu)件的需求接口放置為直觀起見(jiàn),設(shè)計(jì)中間構(gòu)件時(shí),將構(gòu)件的需求接口放置在構(gòu)件實(shí)體的左側(cè),提供接口放置在右側(cè)。在構(gòu)件實(shí)體的左側(cè),提供接口放置在右側(cè)。 電源控制構(gòu)件、可變頻率產(chǎn)生構(gòu)件是常用的中間構(gòu)件。電源控制構(gòu)件、可變頻率產(chǎn)生構(gòu)件是常用的中間構(gòu)件。 4終端構(gòu)件設(shè)計(jì)規(guī)則終端構(gòu)件設(shè)計(jì)規(guī)則 設(shè)計(jì)終端構(gòu)件時(shí),需考慮的問(wèn)題是:設(shè)計(jì)終端構(gòu)件時(shí),需考慮的問(wèn)題是:“

17、終端構(gòu)件需要什終端構(gòu)件需要什么信號(hào)才能工作?么信號(hào)才能工作?”。 終端構(gòu)件是嵌入式系統(tǒng)中最常見(jiàn)的構(gòu)件。終端構(gòu)件是嵌入式系統(tǒng)中最常見(jiàn)的構(gòu)件。 終端構(gòu)件沒(méi)有提供接口,它僅有與上一級(jí)構(gòu)件交付的需終端構(gòu)件沒(méi)有提供接口,它僅有與上一級(jí)構(gòu)件交付的需求接口,因而接口標(biāo)識(shí)均為斜體標(biāo)注的接口注釋。求接口,因而接口標(biāo)識(shí)均為斜體標(biāo)注的接口注釋。LCD(YM1602C)構(gòu)件、)構(gòu)件、LED構(gòu)件、指示燈構(gòu)件以及鍵盤(pán)構(gòu)件構(gòu)件、指示燈構(gòu)件以及鍵盤(pán)構(gòu)件等都是典型的終端構(gòu)件。等都是典型的終端構(gòu)件。 5使用硬件構(gòu)件組裝系統(tǒng)的方法使用硬件構(gòu)件組裝系統(tǒng)的方法 對(duì)于核心構(gòu)件,在應(yīng)用到具體的系統(tǒng)中時(shí),不必作任何對(duì)于核心構(gòu)件,在應(yīng)用到具體

18、的系統(tǒng)中時(shí),不必作任何改動(dòng)。具有相同改動(dòng)。具有相同MCU的應(yīng)用系統(tǒng),其核心構(gòu)件完全相同。對(duì)的應(yīng)用系統(tǒng),其核心構(gòu)件完全相同。對(duì)于中間構(gòu)件和終端構(gòu)件,在應(yīng)用到具體的系統(tǒng)中時(shí),僅需為于中間構(gòu)件和終端構(gòu)件,在應(yīng)用到具體的系統(tǒng)中時(shí),僅需為需求接口添加接口網(wǎng)標(biāo),在不同的系統(tǒng)中,接口網(wǎng)標(biāo)名稱不需求接口添加接口網(wǎng)標(biāo),在不同的系統(tǒng)中,接口網(wǎng)標(biāo)名稱不同,但構(gòu)件實(shí)體內(nèi)部完全相同。同,但構(gòu)件實(shí)體內(nèi)部完全相同。使用硬件構(gòu)件化思想設(shè)計(jì)嵌入式硬件系統(tǒng)的過(guò)程與步驟是:使用硬件構(gòu)件化思想設(shè)計(jì)嵌入式硬件系統(tǒng)的過(guò)程與步驟是:(1)根據(jù)系統(tǒng)的功能劃分出若干個(gè)硬件構(gòu)件。)根據(jù)系統(tǒng)的功能劃分出若干個(gè)硬件構(gòu)件。(2)將所有硬件構(gòu)件原理圖)

19、將所有硬件構(gòu)件原理圖“組裝組裝”在一起。在一起。(3)為中間構(gòu)件和終端構(gòu)件添加接口網(wǎng)標(biāo)。)為中間構(gòu)件和終端構(gòu)件添加接口網(wǎng)標(biāo)。5.2.3 實(shí)驗(yàn)實(shí)驗(yàn)PCB板設(shè)計(jì)的簡(jiǎn)明規(guī)則板設(shè)計(jì)的簡(jiǎn)明規(guī)則 印刷電路板(印刷電路板(Printed-Circuit Board,PCB)是由環(huán)氧)是由環(huán)氧樹(shù)脂粘合而成的鍍了銅的玻璃纖維板。蝕刻掉部分鍍銅,只樹(shù)脂粘合而成的鍍了銅的玻璃纖維板。蝕刻掉部分鍍銅,只留下以構(gòu)成電路互連通路的銅層走線。留下以構(gòu)成電路互連通路的銅層走線。 PCB可以是單層、雙層或者四層、六層、八層、十二層可以是單層、雙層或者四層、六層、八層、十二層甚至更多。層數(shù)越多,連接的布線就越容易,但成本卻越高甚

20、至更多。層數(shù)越多,連接的布線就越容易,但成本卻越高,調(diào)試也越難。,調(diào)試也越難。 如果如果PCB有專用供電層和接地層,系統(tǒng)將會(huì)有更強(qiáng)的燥有專用供電層和接地層,系統(tǒng)將會(huì)有更強(qiáng)的燥聲抗擾度。聲抗擾度。 在使用電子設(shè)計(jì)自動(dòng)化軟件(如在使用電子設(shè)計(jì)自動(dòng)化軟件(如DXP)設(shè)計(jì))設(shè)計(jì)PCB時(shí)需注時(shí)需注意以下幾個(gè)方面的問(wèn)題。意以下幾個(gè)方面的問(wèn)題。 1PCB板布局板布局 在正式走線之前要對(duì)在正式走線之前要對(duì)PCB的大體格局進(jìn)行規(guī)劃。布局的大體格局進(jìn)行規(guī)劃。布局規(guī)劃應(yīng)遵循下列基本原則。規(guī)劃應(yīng)遵循下列基本原則。(1)在)在PCB布板之前首先要打印出相應(yīng)的原理圖,然后根布板之前首先要打印出相應(yīng)的原理圖,然后根據(jù)原理圖

21、確定整個(gè)據(jù)原理圖確定整個(gè)PCB板的大體布局,即各個(gè)硬件構(gòu)件的位板的大體布局,即各個(gè)硬件構(gòu)件的位置安排。置安排。(2)PCB板的形狀如無(wú)其他要求,一般為矩形,長(zhǎng)寬比為板的形狀如無(wú)其他要求,一般為矩形,長(zhǎng)寬比為4:3或或3:2。(3)考慮面板上元件的放置要求。)考慮面板上元件的放置要求。(4)考慮邊緣接口。)考慮邊緣接口。 2元件放置元件放置 (1)元件放置要求整齊,盡可能正放,屬于同一硬件)元件放置要求整齊,盡可能正放,屬于同一硬件構(gòu)件內(nèi)的元件盡可能排放在一起。排列方位盡可能與原理圖構(gòu)件內(nèi)的元件盡可能排放在一起。排列方位盡可能與原理圖一致,布線方向最好與電路圖走線方向一致。元器件在一致,布線方向

22、最好與電路圖走線方向一致。元器件在PCB上的排列可采用不規(guī)則、規(guī)則和網(wǎng)格等三種排列方式中的一上的排列可采用不規(guī)則、規(guī)則和網(wǎng)格等三種排列方式中的一種,也可同時(shí)采用多種。種,也可同時(shí)采用多種。 布局的元器件應(yīng)有利于發(fā)熱元器件散熱,高頻時(shí)要考慮布局的元器件應(yīng)有利于發(fā)熱元器件散熱,高頻時(shí)要考慮元器件之間的分布參數(shù),高、低壓之間要隔離,隔離距離與元器件之間的分布參數(shù),高、低壓之間要隔離,隔離距離與承受的耐壓有關(guān)。承受的耐壓有關(guān)。 (2)電容的位置要特別注意,其中電源模塊的濾波電)電容的位置要特別注意,其中電源模塊的濾波電容要求靠近電源,而容要求靠近電源,而IC的濾波電容要靠近的濾波電容要靠近IC的引腳。

23、的引腳。 (3)考慮元件間的距離,防止元件之間出現(xiàn)重疊。)考慮元件間的距離,防止元件之間出現(xiàn)重疊。還要考慮元器件的引腳間距,因?yàn)樗鼪Q定著焊盤(pán)放置間距。還要考慮元器件的引腳間距,因?yàn)樗鼪Q定著焊盤(pán)放置間距。對(duì)于非標(biāo)準(zhǔn)器件的引腳間距的確定最直接的方法就是:使用對(duì)于非標(biāo)準(zhǔn)器件的引腳間距的確定最直接的方法就是:使用游標(biāo)卡尺進(jìn)行測(cè)量。游標(biāo)卡尺進(jìn)行測(cè)量。 (4)PCB四周留有四周留有5-10mm空隙不布器件。空隙不布器件。 (5)先放置占用面積較大的元器件,先集成后分立,)先放置占用面積較大的元器件,先集成后分立,先主后次,多塊集成電路時(shí)先放置主電路。先主后次,多塊集成電路時(shí)先放置主電路。 (6)可調(diào)元件應(yīng)

24、放置在便于調(diào)節(jié)的地方,質(zhì)量超過(guò))可調(diào)元件應(yīng)放置在便于調(diào)節(jié)的地方,質(zhì)量超過(guò)15g的元器件應(yīng)當(dāng)用支架,熱敏元件應(yīng)遠(yuǎn)離發(fā)熱元件。晶的元器件應(yīng)當(dāng)用支架,熱敏元件應(yīng)遠(yuǎn)離發(fā)熱元件。晶振應(yīng)平放,而不要豎直放置。振應(yīng)平放,而不要豎直放置。 (7)PLL濾波電路應(yīng)盡量靠近濾波電路應(yīng)盡量靠近MCU。 3有關(guān)設(shè)定有關(guān)設(shè)定 (1)線寬。導(dǎo)線的最小寬度由導(dǎo)線與絕緣基板間的粘)線寬。導(dǎo)線的最小寬度由導(dǎo)線與絕緣基板間的粘附強(qiáng)度和流過(guò)它們的電流值決定。一般地線寬度附強(qiáng)度和流過(guò)它們的電流值決定。一般地線寬度電源線電源線寬度寬度信號(hào)線寬度。信號(hào)線寬度。 (2)間距。導(dǎo)線間的間距由它們之間的安全工作電壓)間距。導(dǎo)線間的間距由它們之

25、間的安全工作電壓決定,相鄰導(dǎo)線之間的峰值電壓、基板的質(zhì)量、表面涂層決定,相鄰導(dǎo)線之間的峰值電壓、基板的質(zhì)量、表面涂層、電容耦合參數(shù)等都影響導(dǎo)線的安全工作電壓、電容耦合參數(shù)等都影響導(dǎo)線的安全工作電壓 (3)過(guò)孔大小。過(guò)孔大小設(shè)定要適中。)過(guò)孔大小。過(guò)孔大小設(shè)定要適中。4布線布線 布線時(shí),應(yīng)該首先對(duì)時(shí)鐘和高速信號(hào)進(jìn)行布線,以確保布線時(shí),應(yīng)該首先對(duì)時(shí)鐘和高速信號(hào)進(jìn)行布線,以確保它們的走線盡可能直接。它們的走線盡可能直接。 石英晶振和對(duì)噪聲特別敏感的器件下面不要走線。石英晶振和對(duì)噪聲特別敏感的器件下面不要走線。 對(duì)總線進(jìn)行布線時(shí),盡可能地保持信號(hào)線平行走線,而對(duì)總線進(jìn)行布線時(shí),盡可能地保持信號(hào)線平行走

26、線,而時(shí)鐘信號(hào)線則要避免平行,且在這些導(dǎo)線之間最好加接地線。時(shí)鐘信號(hào)線則要避免平行,且在這些導(dǎo)線之間最好加接地線。 布板完成后一定要進(jìn)行自動(dòng)與人工檢查。過(guò)孔數(shù)盡可能布板完成后一定要進(jìn)行自動(dòng)與人工檢查。過(guò)孔數(shù)盡可能少。少。 最小系統(tǒng)中未使用的最小系統(tǒng)中未使用的I/O口,可通過(guò)電阻接地??冢赏ㄟ^(guò)電阻接地。 走線盡量少拐彎,線寬不要突變,導(dǎo)線拐角應(yīng)走線盡量少拐彎,線寬不要突變,導(dǎo)線拐角應(yīng)90,力求線條簡(jiǎn)單明了。力求線條簡(jiǎn)單明了。 信號(hào)線的拐角應(yīng)設(shè)計(jì)成鈍角走向,為圓形或圓弧形,切信號(hào)線的拐角應(yīng)設(shè)計(jì)成鈍角走向,為圓形或圓弧形,切忌畫(huà)成忌畫(huà)成90或更小角度形狀。或更小角度形狀。 5測(cè)量點(diǎn)測(cè)量點(diǎn) 考慮到硬

27、件測(cè)試的方便,在考慮到硬件測(cè)試的方便,在PCB布板時(shí)要留下一些測(cè)布板時(shí)要留下一些測(cè)量點(diǎn),以便調(diào)試之用。以下幾處需要留測(cè)量點(diǎn):量點(diǎn),以便調(diào)試之用。以下幾處需要留測(cè)量點(diǎn): (1)原理圖中模塊的輸入輸出引腳。)原理圖中模塊的輸入輸出引腳。 (2)最小系統(tǒng)模塊中)最小系統(tǒng)模塊中MCU的引腳。的引腳。 (3)各硬件功能模塊單元的輸入、輸出口;)各硬件功能模塊單元的輸入、輸出口; 畫(huà)測(cè)量點(diǎn)的步驟是:引出、打孔、標(biāo)字??椎拇笮∫匀f(wàn)畫(huà)測(cè)量點(diǎn)的步驟是:引出、打孔、標(biāo)字??椎拇笮∫匀f(wàn)用表頭方便測(cè)量為原則,一般不要在線上直接打孔。用表頭方便測(cè)量為原則,一般不要在線上直接打孔。 6模塊標(biāo)示模塊標(biāo)示 由于在整體布局時(shí),

28、已經(jīng)將各個(gè)硬件構(gòu)件的組成元件放由于在整體布局時(shí),已經(jīng)將各個(gè)硬件構(gòu)件的組成元件放在一起,因而可在在一起,因而可在PCB板上用矩形框?qū)⒏鱾€(gè)硬件構(gòu)件區(qū)分板上用矩形框?qū)⒏鱾€(gè)硬件構(gòu)件區(qū)分開(kāi),并用漢字標(biāo)出構(gòu)件名(與原理圖一致),并注意字體開(kāi),并用漢字標(biāo)出構(gòu)件名(與原理圖一致),并注意字體字號(hào)。字號(hào)。 7鋪地鋪地 在布板的最后都要鋪地,目的是減小干擾,提高在布板的最后都要鋪地,目的是減小干擾,提高PCB板的穩(wěn)定性。鋪地需注意:板的穩(wěn)定性。鋪地需注意: (1)在鋪地前,要設(shè)定地與導(dǎo)線、地與引腳之間的距)在鋪地前,要設(shè)定地與導(dǎo)線、地與引腳之間的距離,并要求該距離盡可能大。離,并要求該距離盡可能大。 (2)鋪地本

29、應(yīng)該雙面鋪,作為實(shí)驗(yàn)用板,為了方便檢)鋪地本應(yīng)該雙面鋪,作為實(shí)驗(yàn)用板,為了方便檢查,可只鋪反面地。查,可只鋪反面地。 (3)如果電路板中有數(shù)字地和模擬地,應(yīng)將它們隔離)如果電路板中有數(shù)字地和模擬地,應(yīng)將它們隔離開(kāi),兩者間使用磁珠相連。開(kāi),兩者間使用磁珠相連。 8空余位置的利用并標(biāo)注相關(guān)信息空余位置的利用并標(biāo)注相關(guān)信息 PCB板的空余位置可適度作如下用途:板的空余位置可適度作如下用途: (1)電源、地。空白處多留幾排電源和地。)電源、地。空白處多留幾排電源和地。 (2)雙排孔。留出幾排兩孔相連的排孔,以用來(lái)擴(kuò)展)雙排孔。留出幾排兩孔相連的排孔,以用來(lái)擴(kuò)展或試驗(yàn)時(shí)焊接其他元件?;蛟囼?yàn)時(shí)焊接其他元件

30、。 (3)固定孔。在)固定孔。在PCB上畫(huà)固定板的固定孔,一般在板上畫(huà)固定板的固定孔,一般在板的四個(gè)角落。的四個(gè)角落。 在完成在完成PCB板的鋪地之后,要在板的正面適當(dāng)位置標(biāo)板的鋪地之后,要在板的正面適當(dāng)位置標(biāo)出以下信息:?jiǎn)挝?、日期、?zé)任人、出以下信息:?jiǎn)挝?、日期、?zé)任人、PCB板的名稱、編號(hào)板的名稱、編號(hào)等。等。 9抗干擾問(wèn)題的特別考慮抗干擾問(wèn)題的特別考慮 1)熱干擾及抑制)熱干擾及抑制 元器件在工作中都有一定程度的發(fā)熱,發(fā)出的熱量會(huì)對(duì)元器件在工作中都有一定程度的發(fā)熱,發(fā)出的熱量會(huì)對(duì)周邊比較敏感的器件產(chǎn)生干擾,若熱干擾得不到很好的抑制,周邊比較敏感的器件產(chǎn)生干擾,若熱干擾得不到很好的抑制,整

31、個(gè)電路的電性就會(huì)發(fā)生變化,最后造成短路整個(gè)電路的電性就會(huì)發(fā)生變化,最后造成短路. 為了對(duì)熱干為了對(duì)熱干擾進(jìn)行抑制,可采取以下措施:擾進(jìn)行抑制,可采取以下措施: (1)發(fā)熱元件的放置)發(fā)熱元件的放置 不要貼板放置,也可以單獨(dú)設(shè)計(jì)為一個(gè)功能單元,放在不要貼板放置,也可以單獨(dú)設(shè)計(jì)為一個(gè)功能單元,放在靠近邊緣容易散熱的地方。另外,發(fā)熱量大的器件與小熱量靠近邊緣容易散熱的地方。另外,發(fā)熱量大的器件與小熱量的器件應(yīng)分開(kāi)放置。的器件應(yīng)分開(kāi)放置。 (2)大功率器件的放置)大功率器件的放置 應(yīng)盡量靠近邊緣布置,在垂直方向時(shí)應(yīng)盡量布置在板上應(yīng)盡量靠近邊緣布置,在垂直方向時(shí)應(yīng)盡量布置在板上方。方。 (3)溫度敏感器

32、件的放置)溫度敏感器件的放置 對(duì)溫度比較敏感的器件應(yīng)安置在溫度最低的區(qū)域,千萬(wàn)對(duì)溫度比較敏感的器件應(yīng)安置在溫度最低的區(qū)域,千萬(wàn)不要將它放在發(fā)熱器件的正上方。不要將它放在發(fā)熱器件的正上方。 (4)器件的排列與氣流)器件的排列與氣流非特定要求,一般設(shè)備內(nèi)部均以空氣自由對(duì)流進(jìn)行散熱,故非特定要求,一般設(shè)備內(nèi)部均以空氣自由對(duì)流進(jìn)行散熱,故元器件應(yīng)以縱式排列;若強(qiáng)制散熱,元器件可橫式排列。元器件應(yīng)以縱式排列;若強(qiáng)制散熱,元器件可橫式排列。另外,為了改善散熱效果,可添加與電路原理無(wú)關(guān)的零部另外,為了改善散熱效果,可添加與電路原理無(wú)關(guān)的零部件以引導(dǎo)熱量對(duì)流。件以引導(dǎo)熱量對(duì)流。 2)共阻抗及抑制)共阻抗及抑制

33、 共阻干擾是由共阻干擾是由PCB上大量的地線造成,當(dāng)兩個(gè)或兩個(gè)上大量的地線造成,當(dāng)兩個(gè)或兩個(gè)以上的回路共用一段地線時(shí),不同的回路電流在共用地線以上的回路共用一段地線時(shí),不同的回路電流在共用地線上產(chǎn)生一定壓降,此壓降經(jīng)放大就會(huì)影響電路性能,當(dāng)電上產(chǎn)生一定壓降,此壓降經(jīng)放大就會(huì)影響電路性能,當(dāng)電流頻率很高時(shí),會(huì)產(chǎn)生很大的感抗而使電路受到干擾。為流頻率很高時(shí),會(huì)產(chǎn)生很大的感抗而使電路受到干擾。為了抑制共阻抗,可采取以下措施:了抑制共阻抗,可采取以下措施: (1)一點(diǎn)接地)一點(diǎn)接地 (2)就近多點(diǎn)接地)就近多點(diǎn)接地 (3)大面積接地)大面積接地 (4)加粗接地線)加粗接地線 (5)DA(數(shù)模)電路的地

34、線分開(kāi)(數(shù)模)電路的地線分開(kāi) 3)電磁干擾及抑制)電磁干擾及抑制 電磁干擾是由電磁效應(yīng)而造成的干擾,針對(duì)由電源布線、電磁干擾是由電磁效應(yīng)而造成的干擾,針對(duì)由電源布線、信號(hào)布線產(chǎn)生的電磁干擾,可采取不同的措施。信號(hào)布線產(chǎn)生的電磁干擾,可采取不同的措施。 (1)電源布線可采用以下預(yù)防措施:)電源布線可采用以下預(yù)防措施:布線要寬布線要寬;加去加去耦電容耦電容(這種電容起到旁路濾波的作用,要在電源的輸入(這種電容起到旁路濾波的作用,要在電源的輸入端并聯(lián)較大的和較小的濾波電容);端并聯(lián)較大的和較小的濾波電容);地線環(huán)繞地線環(huán)繞(地線要靠(地線要靠近供電電源母線和信號(hào)線,因電流沿路徑傳輸會(huì)產(chǎn)生回路近供電電

35、源母線和信號(hào)線,因電流沿路徑傳輸會(huì)產(chǎn)生回路電感,地線靠近,回路面積減小,電感量減小,回路阻抗電感,地線靠近,回路面積減小,電感量減小,回路阻抗減小,從而減小電磁干擾耦合)。減小,從而減小電磁干擾耦合)。 (2)信號(hào)布線可采用以下預(yù)防措施:)信號(hào)布線可采用以下預(yù)防措施:不同功能的單元不同功能的單元電路電路(如數(shù)字電路與模擬電路,高頻與低頻)(如數(shù)字電路與模擬電路,高頻與低頻)分開(kāi)設(shè)置分開(kāi)設(shè)置,布線圖形應(yīng)易于信號(hào)流通且使信號(hào)流向盡可能保持一致;布線圖形應(yīng)易于信號(hào)流通且使信號(hào)流向盡可能保持一致;合理使用屏蔽和濾波技術(shù)合理使用屏蔽和濾波技術(shù),注意高低壓之間的隔離;,注意高低壓之間的隔離;盡量盡量不選用

36、比實(shí)際需要的速度更快的元件不選用比實(shí)際需要的速度更快的元件,在元件的位置安排,在元件的位置安排上,易受電磁干擾的元器件不能相距太近,應(yīng)大于信號(hào)波上,易受電磁干擾的元器件不能相距太近,應(yīng)大于信號(hào)波長(zhǎng)的四分之一,輸入器件與輸出器件盡量遠(yuǎn)離;長(zhǎng)的四分之一,輸入器件與輸出器件盡量遠(yuǎn)離;做到安全做到安全接地接地。5.3 基于硬件構(gòu)件的嵌入式底層軟件構(gòu)基于硬件構(gòu)件的嵌入式底層軟件構(gòu)件的編程方法件的編程方法5.3.1 嵌入式硬件構(gòu)件和軟件構(gòu)件的層次模型嵌入式硬件構(gòu)件和軟件構(gòu)件的層次模型 嵌入式軟件構(gòu)件(嵌入式軟件構(gòu)件(Embedded Software Component, ESC)是實(shí)現(xiàn)一定嵌入式系統(tǒng)功能

37、的一組封裝的、規(guī)范的、)是實(shí)現(xiàn)一定嵌入式系統(tǒng)功能的一組封裝的、規(guī)范的、可重用的、具有嵌入特性的軟件單元,是組織嵌入式系統(tǒng)的可重用的、具有嵌入特性的軟件單元,是組織嵌入式系統(tǒng)的功能單位。功能單位。 嵌入式軟件構(gòu)件分為高層軟件構(gòu)件和底層軟件構(gòu)件(以嵌入式軟件構(gòu)件分為高層軟件構(gòu)件和底層軟件構(gòu)件(以下簡(jiǎn)稱高層構(gòu)件和底層構(gòu)件)。高層構(gòu)件與硬件無(wú)關(guān)。通常下簡(jiǎn)稱高層構(gòu)件和底層構(gòu)件)。高層構(gòu)件與硬件無(wú)關(guān)。通常,MCU內(nèi)部包含有內(nèi)部包含有GPIO(即通用(即通用IO)口和一些內(nèi)置功能模塊)口和一些內(nèi)置功能模塊,而底層構(gòu)件與硬件密不可分,是硬件驅(qū)動(dòng)程序的封裝???,而底層構(gòu)件與硬件密不可分,是硬件驅(qū)動(dòng)程序的封裝。可

38、將通用將通用I/O口的驅(qū)動(dòng)程序封裝為口的驅(qū)動(dòng)程序封裝為GPIO驅(qū)動(dòng)構(gòu)件,各內(nèi)置功能模驅(qū)動(dòng)構(gòu)件,各內(nèi)置功能模塊的驅(qū)動(dòng)程序封裝為功能構(gòu)件,塊的驅(qū)動(dòng)程序封裝為功能構(gòu)件, 在硬件構(gòu)件層中,相對(duì)于核心構(gòu)件而言,中間構(gòu)件和終在硬件構(gòu)件層中,相對(duì)于核心構(gòu)件而言,中間構(gòu)件和終端構(gòu)件是核心構(gòu)件的端構(gòu)件是核心構(gòu)件的“外設(shè)外設(shè)”。由這些。由這些“外設(shè)外設(shè)”的驅(qū)動(dòng)程的驅(qū)動(dòng)程序封裝而成的軟件構(gòu)件稱為底層外設(shè)構(gòu)件。注意,并不是序封裝而成的軟件構(gòu)件稱為底層外設(shè)構(gòu)件。注意,并不是所有的中間構(gòu)件和終端構(gòu)件都可以作為編程對(duì)象。所有的中間構(gòu)件和終端構(gòu)件都可以作為編程對(duì)象。 由圖可看出,底層外設(shè)構(gòu)件可以調(diào)用底層內(nèi)部構(gòu)件,而由圖可看出

39、,底層外設(shè)構(gòu)件可以調(diào)用底層內(nèi)部構(gòu)件,而高層構(gòu)件可以調(diào)用底層外設(shè)構(gòu)件和底層內(nèi)部構(gòu)件中的功能高層構(gòu)件可以調(diào)用底層外設(shè)構(gòu)件和底層內(nèi)部構(gòu)件中的功能構(gòu)件,而不能直接調(diào)用構(gòu)件,而不能直接調(diào)用GPIO驅(qū)動(dòng)構(gòu)件。另外,考慮到幾驅(qū)動(dòng)構(gòu)件。另外,考慮到幾乎所有的底層內(nèi)部構(gòu)件都涉及到乎所有的底層內(nèi)部構(gòu)件都涉及到MCU各種寄存器的使用,各種寄存器的使用,因此將因此將MCU的所有寄存器定義組織在一起,形成的所有寄存器定義組織在一起,形成MCU頭頭文件,以便其他構(gòu)件頭文件中包含該頭文件。文件,以便其他構(gòu)件頭文件中包含該頭文件。5.3.2 底層構(gòu)件的實(shí)現(xiàn)方法與編程思想底層構(gòu)件的實(shí)現(xiàn)方法與編程思想 底層構(gòu)件是與硬件直接打交道

40、的軟件,由頭文件和源程底層構(gòu)件是與硬件直接打交道的軟件,由頭文件和源程序文件兩部分組成。序文件兩部分組成。 頭文件中的內(nèi)容主要有:包含下層構(gòu)件頭文件的頭文件中的內(nèi)容主要有:包含下層構(gòu)件頭文件的#include語(yǔ)句、用以描述構(gòu)件屬性的宏定義語(yǔ)句以及對(duì)外接語(yǔ)句、用以描述構(gòu)件屬性的宏定義語(yǔ)句以及對(duì)外接口函數(shù)原型說(shuō)明??诤瘮?shù)原型說(shuō)明。 在頭文件中使用函數(shù)原型,對(duì)于建立代碼模塊和外部接在頭文件中使用函數(shù)原型,對(duì)于建立代碼模塊和外部接口的規(guī)范,便于他人使用,都是很有幫助的。口的規(guī)范,便于他人使用,都是很有幫助的。 源程序文件中存放構(gòu)件的內(nèi)部函數(shù)和外部函數(shù)的定義,源程序文件中存放構(gòu)件的內(nèi)部函數(shù)和外部函數(shù)的定

41、義,即函數(shù)的實(shí)現(xiàn)代碼,以完成函數(shù)所要實(shí)現(xiàn)的功能。即函數(shù)的實(shí)現(xiàn)代碼,以完成函數(shù)所要實(shí)現(xiàn)的功能。 在對(duì)底層構(gòu)件進(jìn)行設(shè)計(jì)時(shí),最關(guān)鍵的工作是要對(duì)構(gòu)件的在對(duì)底層構(gòu)件進(jìn)行設(shè)計(jì)時(shí),最關(guān)鍵的工作是要對(duì)構(gòu)件的共性和個(gè)性進(jìn)行分析,抽取出構(gòu)件的屬性和對(duì)外接口函數(shù)。共性和個(gè)性進(jìn)行分析,抽取出構(gòu)件的屬性和對(duì)外接口函數(shù)。盡量做到:當(dāng)一個(gè)底層構(gòu)件應(yīng)用到不同系統(tǒng)中時(shí),僅需修改盡量做到:當(dāng)一個(gè)底層構(gòu)件應(yīng)用到不同系統(tǒng)中時(shí),僅需修改構(gòu)件的頭文件,對(duì)于構(gòu)件的源程序文件則不必修改或改動(dòng)很構(gòu)件的頭文件,對(duì)于構(gòu)件的源程序文件則不必修改或改動(dòng)很小。小。 在編寫(xiě)構(gòu)件時(shí),一般應(yīng)注意以下幾方面的內(nèi)容:在編寫(xiě)構(gòu)件時(shí),一般應(yīng)注意以下幾方面的內(nèi)容: (

42、1)構(gòu)件的頭文件名和源程序文件名一致,且為構(gòu)件)構(gòu)件的頭文件名和源程序文件名一致,且為構(gòu)件名。名。 (2)屬性和操作的命名統(tǒng)一以構(gòu)件名開(kāi)頭。這樣做的)屬性和操作的命名統(tǒng)一以構(gòu)件名開(kāi)頭。這樣做的好處是:當(dāng)使用底層構(gòu)件組裝軟件系統(tǒng)時(shí),避免構(gòu)件之間好處是:當(dāng)使用底層構(gòu)件組裝軟件系統(tǒng)時(shí),避免構(gòu)件之間出現(xiàn)同名現(xiàn)象。出現(xiàn)同名現(xiàn)象。 (3)對(duì))對(duì)MCU內(nèi)的模塊寄存器名和端口名進(jìn)行重定義,內(nèi)的模塊寄存器名和端口名進(jìn)行重定義,在其他的代碼里面都將使用宏名對(duì)模塊寄存器和端口進(jìn)行在其他的代碼里面都將使用宏名對(duì)模塊寄存器和端口進(jìn)行操作。這樣,當(dāng)?shù)讓域?qū)動(dòng)程序移植到其他操作。這樣,當(dāng)?shù)讓域?qū)動(dòng)程序移植到其他MCU時(shí),只要時(shí)

43、,只要修改重定義語(yǔ)句就可以了。修改重定義語(yǔ)句就可以了。 (4)內(nèi)部函數(shù)與外部函數(shù)要設(shè)計(jì)合理,函數(shù)參數(shù)個(gè)數(shù))內(nèi)部函數(shù)與外部函數(shù)要設(shè)計(jì)合理,函數(shù)參數(shù)個(gè)數(shù)及類型要考慮全面。及類型要考慮全面。 (5)應(yīng)用程序在使用底層構(gòu)件時(shí),嚴(yán)格禁止通過(guò)全局)應(yīng)用程序在使用底層構(gòu)件時(shí),嚴(yán)格禁止通過(guò)全局變量來(lái)傳遞參數(shù),所有的數(shù)據(jù)傳遞都要通過(guò)函數(shù)的形式參變量來(lái)傳遞參數(shù),所有的數(shù)據(jù)傳遞都要通過(guò)函數(shù)的形式參數(shù)來(lái)接收。這樣做不但使得接口簡(jiǎn)潔,更加避免了全局變數(shù)來(lái)接收。這樣做不但使得接口簡(jiǎn)潔,更加避免了全局變量可能引發(fā)的安全隱患。量可能引發(fā)的安全隱患。5.3.3 硬件構(gòu)件及底層軟件構(gòu)件的重用與移植方法硬件構(gòu)件及底層軟件構(gòu)件的重用

44、與移植方法 1硬件構(gòu)件的重用與移植硬件構(gòu)件的重用與移植 對(duì)于以單對(duì)于以單MCU為核心的嵌入式應(yīng)用系統(tǒng)而言,當(dāng)用硬件為核心的嵌入式應(yīng)用系統(tǒng)而言,當(dāng)用硬件構(gòu)件構(gòu)件“組裝組裝”硬件系統(tǒng)時(shí),核心構(gòu)件(即最小系統(tǒng))有且只硬件系統(tǒng)時(shí),核心構(gòu)件(即最小系統(tǒng))有且只有一個(gè),而中間構(gòu)件和終端構(gòu)件可有多個(gè),并且相同類型的有一個(gè),而中間構(gòu)件和終端構(gòu)件可有多個(gè),并且相同類型的構(gòu)件可出現(xiàn)多次。下面以終端構(gòu)件構(gòu)件可出現(xiàn)多次。下面以終端構(gòu)件LCD為例,介紹硬件構(gòu)件為例,介紹硬件構(gòu)件的移植方法。的移植方法。 2底層構(gòu)件的移植底層構(gòu)件的移植 當(dāng)一個(gè)已設(shè)計(jì)好的底層構(gòu)件當(dāng)一個(gè)已設(shè)計(jì)好的底層構(gòu)件移植到另外一個(gè)嵌入式系統(tǒng)中移植到另外一

45、個(gè)嵌入式系統(tǒng)中時(shí),其頭文件和程序文件是否時(shí),其頭文件和程序文件是否需要改動(dòng)要視具體情況而定。需要改動(dòng)要視具體情況而定。例如:系統(tǒng)的核心構(gòu)件發(fā)生改例如:系統(tǒng)的核心構(gòu)件發(fā)生改變(即變(即MCU型號(hào)改變)時(shí),型號(hào)改變)時(shí),底層內(nèi)部構(gòu)件頭文件和某些對(duì)底層內(nèi)部構(gòu)件頭文件和某些對(duì)外接口函數(shù)也要隨之改變,例外接口函數(shù)也要隨之改變,例如模塊初始化函數(shù)。而對(duì)于外如模塊初始化函數(shù)。而對(duì)于外接硬件構(gòu)件,希望不改動(dòng)程序接硬件構(gòu)件,希望不改動(dòng)程序文件,而只改動(dòng)頭文件,那么,文件,而只改動(dòng)頭文件,那么,頭文件就必須充分設(shè)計(jì)。以頭文件就必須充分設(shè)計(jì)。以LCD構(gòu)件為例,與前圖相對(duì)應(yīng)構(gòu)件為例,與前圖相對(duì)應(yīng)的底層構(gòu)件頭文件的底層

46、構(gòu)件頭文件lcd.h可如可如下編寫(xiě)。下編寫(xiě)。5.4 底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范底層驅(qū)動(dòng)構(gòu)件封裝規(guī)范5.4.1 構(gòu)件設(shè)計(jì)的基本原則構(gòu)件設(shè)計(jì)的基本原則 良好的底層驅(qū)動(dòng)構(gòu)件具備如下特性:良好的底層驅(qū)動(dòng)構(gòu)件具備如下特性: (1)封裝性。)封裝性。 (2)描述性。)描述性。 (3)可移植性。)可移植性。 (4)可復(fù)用性。)可復(fù)用性。 構(gòu)件被組織成具有一定獨(dú)立性的功能模塊,由以構(gòu)件的構(gòu)件被組織成具有一定獨(dú)立性的功能模塊,由以構(gòu)件的名稱命名的頭文件(名稱命名的頭文件(.h)和源文件)和源文件(.c)文件兩部分組成。文件兩部分組成。 構(gòu)件的頭文件中,主要包含引用必要的文件、描述構(gòu)件構(gòu)件的頭文件中,主要包含引用必要的

47、文件、描述構(gòu)件功能特性的宏定義語(yǔ)句以及聲明對(duì)外提供服務(wù)的函數(shù)接口。功能特性的宏定義語(yǔ)句以及聲明對(duì)外提供服務(wù)的函數(shù)接口。 構(gòu)件的源文件中存放構(gòu)件的內(nèi)部函數(shù)和對(duì)外提供服務(wù)函數(shù)的構(gòu)件的源文件中存放構(gòu)件的內(nèi)部函數(shù)和對(duì)外提供服務(wù)函數(shù)的定義,即函數(shù)的實(shí)現(xiàn)代碼,完成構(gòu)件所要實(shí)現(xiàn)的功能。定義,即函數(shù)的實(shí)現(xiàn)代碼,完成構(gòu)件所要實(shí)現(xiàn)的功能。 調(diào)用者通過(guò)構(gòu)件接口獲取服務(wù),而不必關(guān)心服務(wù)函數(shù)的調(diào)用者通過(guò)構(gòu)件接口獲取服務(wù),而不必關(guān)心服務(wù)函數(shù)的具體實(shí)現(xiàn)細(xì)節(jié)。這就是構(gòu)件設(shè)計(jì)的基本內(nèi)容。具體實(shí)現(xiàn)細(xì)節(jié)。這就是構(gòu)件設(shè)計(jì)的基本內(nèi)容。 為了使構(gòu)件設(shè)計(jì)滿足封裝性、描述性、可移植性、可復(fù)為了使構(gòu)件設(shè)計(jì)滿足封裝性、描述性、可移植性、可復(fù)用性

48、的基本要求,嵌入式底層驅(qū)動(dòng)構(gòu)件的開(kāi)發(fā),應(yīng)遵循層用性的基本要求,嵌入式底層驅(qū)動(dòng)構(gòu)件的開(kāi)發(fā),應(yīng)遵循層次化、易用性、魯棒性及對(duì)內(nèi)存的可靠使用原則。次化、易用性、魯棒性及對(duì)內(nèi)存的可靠使用原則。 1層次化原則層次化原則 (1)針對(duì)應(yīng)用場(chǎng)景和服務(wù)對(duì)象,分層組織構(gòu)件。)針對(duì)應(yīng)用場(chǎng)景和服務(wù)對(duì)象,分層組織構(gòu)件。 (2)在構(gòu)件的層次模型中,上層構(gòu)件可以調(diào)用下層構(gòu))在構(gòu)件的層次模型中,上層構(gòu)件可以調(diào)用下層構(gòu)件提供的服務(wù),同一層次的構(gòu)件不存在相互依賴關(guān)系,不件提供的服務(wù),同一層次的構(gòu)件不存在相互依賴關(guān)系,不能相互調(diào)用。能相互調(diào)用。 2易用性原則易用性原則 易用性在于讓調(diào)用者能夠快速理解的構(gòu)件提供服務(wù)的功易用性在于讓調(diào)

49、用者能夠快速理解的構(gòu)件提供服務(wù)的功能并進(jìn)行使用。遵循易用性原則設(shè)計(jì)底層驅(qū)動(dòng)構(gòu)件需要做能并進(jìn)行使用。遵循易用性原則設(shè)計(jì)底層驅(qū)動(dòng)構(gòu)件需要做到:函數(shù)名簡(jiǎn)潔且達(dá)意;接口參數(shù)清晰,范圍明確;使用到:函數(shù)名簡(jiǎn)潔且達(dá)意;接口參數(shù)清晰,范圍明確;使用說(shuō)明語(yǔ)言精煉規(guī)范,避免二義性。此外,在函數(shù)的實(shí)現(xiàn)方說(shuō)明語(yǔ)言精煉規(guī)范,避免二義性。此外,在函數(shù)的實(shí)現(xiàn)方面,避免編寫(xiě)代碼量過(guò)多。面,避免編寫(xiě)代碼量過(guò)多。 3魯棒性原則魯棒性原則 魯棒性在于為調(diào)用者提供安全的服務(wù),避免在程序執(zhí)行魯棒性在于為調(diào)用者提供安全的服務(wù),避免在程序執(zhí)行過(guò)程中出現(xiàn)異常狀況。遵循魯棒性原則設(shè)計(jì)底層驅(qū)動(dòng)構(gòu)件過(guò)程中出現(xiàn)異常狀況。遵循魯棒性原則設(shè)計(jì)底層驅(qū)動(dòng)

50、構(gòu)件需要做到:在明確函數(shù)輸入輸出的取值范圍、提供清晰接需要做到:在明確函數(shù)輸入輸出的取值范圍、提供清晰接口描述的同時(shí),在函數(shù)實(shí)現(xiàn)的內(nèi)部要有對(duì)輸入?yún)?shù)的檢測(cè),口描述的同時(shí),在函數(shù)實(shí)現(xiàn)的內(nèi)部要有對(duì)輸入?yún)?shù)的檢測(cè),對(duì)超出合法范圍的輸入?yún)?shù)進(jìn)行必要的處理;使用分支判對(duì)超出合法范圍的輸入?yún)?shù)進(jìn)行必要的處理;使用分支判斷時(shí),確保對(duì)分支條件判斷的完整性,對(duì)缺省分支進(jìn)行處斷時(shí),確保對(duì)分支條件判斷的完整性,對(duì)缺省分支進(jìn)行處理。理。同時(shí),不能忽視編譯警告錯(cuò)誤。同時(shí),不能忽視編譯警告錯(cuò)誤。 4內(nèi)存可靠使用原則內(nèi)存可靠使用原則 遵循內(nèi)存可靠使用原則設(shè)計(jì)底層驅(qū)動(dòng)構(gòu)件需要做到:遵循內(nèi)存可靠使用原則設(shè)計(jì)底層驅(qū)動(dòng)構(gòu)件需要做到

51、: (1)優(yōu)先使用靜態(tài)分配內(nèi)存。)優(yōu)先使用靜態(tài)分配內(nèi)存。 (2)謹(jǐn)慎地使用變量。)謹(jǐn)慎地使用變量。 (3)檢測(cè)空指針。)檢測(cè)空指針。 (4)檢測(cè)緩沖區(qū)溢出,并為內(nèi)存中的緩沖區(qū)預(yù)留不?。z測(cè)緩沖區(qū)溢出,并為內(nèi)存中的緩沖區(qū)預(yù)留不小于于20%的冗余。的冗余。 (5)對(duì)內(nèi)存的使用情況進(jìn)行評(píng)估。)對(duì)內(nèi)存的使用情況進(jìn)行評(píng)估。5.4.2 編碼風(fēng)格基本規(guī)范編碼風(fēng)格基本規(guī)范 1文件、函數(shù)、變量、宏及結(jié)構(gòu)體類型的命名規(guī)范文件、函數(shù)、變量、宏及結(jié)構(gòu)體類型的命名規(guī)范 命名的基本原則是:命名的基本原則是: (1)命名清晰明了,有明確含義,使用完整單詞或約定俗)命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫(xiě)。命名

52、中若使用特殊約定或縮寫(xiě),要有注釋說(shuō)明。成的縮寫(xiě)。命名中若使用特殊約定或縮寫(xiě),要有注釋說(shuō)明。 (2)命名風(fēng)格要自始至終保持一致。)命名風(fēng)格要自始至終保持一致。 (3)為了代碼復(fù)用,命名中應(yīng)避免使用與具體項(xiàng)目相關(guān)的)為了代碼復(fù)用,命名中應(yīng)避免使用與具體項(xiàng)目相關(guān)的前綴。前綴。 (4)為了便于管理,對(duì)程序?qū)嶓w的命名要體現(xiàn)出所屬構(gòu)件)為了便于管理,對(duì)程序?qū)嶓w的命名要體現(xiàn)出所屬構(gòu)件的名稱。的名稱。 (5)使用英語(yǔ)命名。)使用英語(yǔ)命名。 (6)除宏命名外,名稱字符串全部小寫(xiě),以下劃線)除宏命名外,名稱字符串全部小寫(xiě),以下劃線“_”作作為單詞的分隔符。首尾字母不用為單詞的分隔符。首尾字母不用“_”。 針對(duì)嵌入

53、式底層驅(qū)動(dòng)構(gòu)件的設(shè)計(jì)需要,對(duì)文件、函數(shù)、針對(duì)嵌入式底層驅(qū)動(dòng)構(gòu)件的設(shè)計(jì)需要,對(duì)文件、函數(shù)、 變量、宏及數(shù)據(jù)結(jié)構(gòu)類型的命令特別進(jìn)行說(shuō)明。變量、宏及數(shù)據(jù)結(jié)構(gòu)類型的命令特別進(jìn)行說(shuō)明。 1)文件的命名)文件的命名 底層驅(qū)動(dòng)構(gòu)件在具體設(shè)計(jì)時(shí)分為兩個(gè)文件,其中頭文件底層驅(qū)動(dòng)構(gòu)件在具體設(shè)計(jì)時(shí)分為兩個(gè)文件,其中頭文件命名為命名為“.h”,源文件命名為,源文件命名為“.c”,其中其中表示具體的硬件模塊的名稱。表示具體的硬件模塊的名稱。 2)函數(shù)的命名)函數(shù)的命名 底層驅(qū)動(dòng)構(gòu)件的函數(shù)從屬于驅(qū)動(dòng)構(gòu)件,驅(qū)動(dòng)函數(shù)的命名底層驅(qū)動(dòng)構(gòu)件的函數(shù)從屬于驅(qū)動(dòng)構(gòu)件,驅(qū)動(dòng)函數(shù)的命名除要體現(xiàn)函數(shù)功能外,還需要使用命名前綴和后綴標(biāo)識(shí)其除要體

54、現(xiàn)函數(shù)功能外,還需要使用命名前綴和后綴標(biāo)識(shí)其所屬的構(gòu)件及不同的實(shí)現(xiàn)方式。所屬的構(gòu)件及不同的實(shí)現(xiàn)方式。 函數(shù)名前綴:底層驅(qū)動(dòng)構(gòu)件中定義的所有函數(shù)均使用函數(shù)名前綴:底層驅(qū)動(dòng)構(gòu)件中定義的所有函數(shù)均使用“_”前綴表示其所屬的驅(qū)動(dòng)構(gòu)件模塊。前綴表示其所屬的驅(qū)動(dòng)構(gòu)件模塊。 函數(shù)名后綴:對(duì)同一服務(wù)的不同方式的實(shí)現(xiàn),使用后綴函數(shù)名后綴:對(duì)同一服務(wù)的不同方式的實(shí)現(xiàn),使用后綴加以區(qū)分。加以區(qū)分。 3)函數(shù)形參變量與函數(shù)內(nèi)局部變量的命名)函數(shù)形參變量與函數(shù)內(nèi)局部變量的命名 對(duì)嵌入式底層驅(qū)動(dòng)構(gòu)件進(jìn)行編碼的過(guò)程中,需要考慮對(duì)對(duì)嵌入式底層驅(qū)動(dòng)構(gòu)件進(jìn)行編碼的過(guò)程中,需要考慮對(duì)底層驅(qū)動(dòng)函數(shù)形參變量及驅(qū)動(dòng)函數(shù)內(nèi)部局部變量的命名

55、。底層驅(qū)動(dòng)函數(shù)形參變量及驅(qū)動(dòng)函數(shù)內(nèi)部局部變量的命名。 函數(shù)形參變量:函數(shù)形參變量名是使用函數(shù)時(shí)理解形參函數(shù)形參變量:函數(shù)形參變量名是使用函數(shù)時(shí)理解形參的最直觀印象,表示傳參的功能說(shuō)明。的最直觀印象,表示傳參的功能說(shuō)明。 局部變量:局部變量的命名與函數(shù)形參變量類似。局部變量:局部變量的命名與函數(shù)形參變量類似。 4)宏常量及宏函數(shù)的命名)宏常量及宏函數(shù)的命名 宏常量及宏函數(shù)的命名全部使用大寫(xiě)字符,使用下劃線宏常量及宏函數(shù)的命名全部使用大寫(xiě)字符,使用下劃線“_”為分隔符。例如,在構(gòu)件公共要素中定義的開(kāi)關(guān)中斷為分隔符。例如,在構(gòu)件公共要素中定義的開(kāi)關(guān)中斷的宏如下:的宏如下: 5)結(jié)構(gòu)體類型的命名、類型

56、定與變量聲明)結(jié)構(gòu)體類型的命名、類型定與變量聲明 (1)結(jié)構(gòu)體類型名稱使用小寫(xiě)字母命名)結(jié)構(gòu)體類型名稱使用小寫(xiě)字母命名 (),定義結(jié)構(gòu)體類型變量時(shí),),定義結(jié)構(gòu)體類型變量時(shí),全部使用大寫(xiě)字母命名全部使用大寫(xiě)字母命名()。)。 (2)對(duì)結(jié)構(gòu)體內(nèi)部字段全部使用大寫(xiě)字母命名()對(duì)結(jié)構(gòu)體內(nèi)部字段全部使用大寫(xiě)字母命名()。)。 (3)定義類型時(shí),同時(shí)聲明一個(gè)結(jié)構(gòu)體變量和結(jié)構(gòu)體)定義類型時(shí),同時(shí)聲明一個(gè)結(jié)構(gòu)體變量和結(jié)構(gòu)體指針變量。指針變量。 模板如下:模板如下:2排版排版 對(duì)程序進(jìn)行排版是指,通過(guò)插入空格與空行,使用縮進(jìn)對(duì)程序進(jìn)行排版是指,通過(guò)插入空格與空行,使用縮進(jìn)、斷行等手段,調(diào)整代碼的書(shū)面版式,使代

57、碼整體美觀、清晰、斷行等手段,調(diào)整代碼的書(shū)面版式,使代碼整體美觀、清晰,從而提高代碼的可讀性。,從而提高代碼的可讀性。 1)空行與空格)空行與空格 關(guān)于空行:相對(duì)獨(dú)立的程序塊之間須加空行。關(guān)于空行:相對(duì)獨(dú)立的程序塊之間須加空行。 關(guān)于空格:在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等關(guān)于空格:在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符之前、之后或者前后要加空格,必操作時(shí),它們之間的操作符之前、之后或者前后要加空格,必要時(shí)加兩個(gè)空格;進(jìn)行非對(duì)等操作時(shí),如果是關(guān)系密切的立即要時(shí)加兩個(gè)空格;進(jìn)行非對(duì)等操作時(shí),如果是關(guān)系密切的立即操作符(如操作符(如),其后不應(yīng)加空格。),其后不應(yīng)加空格

58、。 2)縮進(jìn))縮進(jìn) 使用空格縮進(jìn),不使用使用空格縮進(jìn),不使用Tab鍵,這樣代碼復(fù)制打印是不會(huì)鍵,這樣代碼復(fù)制打印是不會(huì)造成錯(cuò)亂。代碼的每一級(jí)均往右縮進(jìn)造成錯(cuò)亂。代碼的每一級(jí)均往右縮進(jìn)4個(gè)空格的位置。個(gè)空格的位置。 3)斷行)斷行 (1)較長(zhǎng)的語(yǔ)句()較長(zhǎng)的語(yǔ)句(78字符)要分成多行書(shū)寫(xiě),長(zhǎng)表達(dá)字符)要分成多行書(shū)寫(xiě),長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語(yǔ)句可讀。分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語(yǔ)句可讀。 (2)循環(huán)、判斷等語(yǔ)句中若有較長(zhǎng)的表達(dá)式或語(yǔ)句,則)循環(huán)、判斷等語(yǔ)句

59、中若有較長(zhǎng)的表達(dá)式或語(yǔ)句,則要進(jìn)行適應(yīng)的劃分,長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行要進(jìn)行適應(yīng)的劃分,長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首。,操作符放在新行之首。 (3)若函數(shù)或過(guò)程中的參數(shù)較長(zhǎng),則要進(jìn)行適當(dāng)?shù)膭澐郑┤艉瘮?shù)或過(guò)程中的參數(shù)較長(zhǎng),則要進(jìn)行適當(dāng)?shù)膭澐帧?(4)不允許把多個(gè)短語(yǔ)句寫(xiě)在一行中,即一行只寫(xiě)一條)不允許把多個(gè)短語(yǔ)句寫(xiě)在一行中,即一行只寫(xiě)一條語(yǔ)句。特殊情況可用,例如語(yǔ)句。特殊情況可用,例如“if (x3) x=3;”可以在一行??梢栽谝恍小?(5)if、for、do、while、case、switch、default等語(yǔ)等語(yǔ)句后的程序塊分界符(如句后的程序塊分

60、界符(如C/C+語(yǔ)言的大括號(hào)語(yǔ)言的大括號(hào)和和)應(yīng))應(yīng)各獨(dú)占一行并且位于同一列,且與以上保留字左對(duì)齊。各獨(dú)占一行并且位于同一列,且與以上保留字左對(duì)齊。 3注釋注釋 在程序代碼中使用注釋,有助于對(duì)程序的閱讀理解,說(shuō)在程序代碼中使用注釋,有助于對(duì)程序的閱讀理解,說(shuō)明程序在明程序在“做什么做什么”,解釋代碼的目的、功能和采用的方,解釋代碼的目的、功能和采用的方法。法。 (1)一般情況源程序有效注釋量在)一般情況源程序有效注釋量在30左右。左右。 (2)注釋語(yǔ)言必須準(zhǔn)確、易懂、簡(jiǎn)潔。)注釋語(yǔ)言必須準(zhǔn)確、易懂、簡(jiǎn)潔。 (3)編寫(xiě)和修改代碼的同時(shí),處理好相應(yīng)的注釋。)編寫(xiě)和修改代碼的同時(shí),處理好相應(yīng)的注釋。 (4)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論