



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 面向硬件對象底層驅(qū)動程序設(shè)計要求1. 硬件對象獨立編程的實體就是硬件對象,硬件對象分為內(nèi)部對象和外部對象,內(nèi)部對象比如系統(tǒng)初始化、定時器、Flash、串口等,外部對象比如LED、開關(guān)、按鈕、電機等。每個對象有獨立模塊。2.程序設(shè)計基本原則2.1 對每個硬件對象編寫?yīng)毩⒌尿?qū)動程序每個對象對應(yīng)一個頭文件和源文件,如果對象是外部對象,則要在頭文件用宏定義對象接在哪個腳上,頭文件只聲明供外部調(diào)用的功能函數(shù),也就是說,其他人只要看頭文件函數(shù)聲明就知道如何使用此對象而無需去看源文件去閱讀代碼。一般函數(shù)的命名規(guī)則是:對象_功能,比如初始化LED,函數(shù)名可以為LED_Ini t。如果一個函數(shù)只供對象功能函數(shù)
2、內(nèi)部調(diào)用,則此函數(shù)在源文件里面聲明和實現(xiàn),不出現(xiàn)在頭文件里,并聲明為static 函數(shù),因為聲明為static的函數(shù)只能供定義此函數(shù)的源文件使用,其他源文件看不到此函數(shù)。如果一個全局變量只供某模塊使用,則可以把此全局變量定義為static,這樣此變量只能在定義它的源文件中使用,其他源文件看不到此變量,所以不會產(chǎn)生命名沖突。2.2封裝要完整、封裝之間不能交叉模塊函數(shù)就實現(xiàn)此模塊要實現(xiàn)的功能,模塊內(nèi)部之間不能相互調(diào)用,如果要調(diào)用則交給高端來處理,比如在Flash子程序里面不能調(diào)用串口,當然測試Flash子程序的時候例外,當測試完畢時,必須把調(diào)用串口子程序代碼刪除,此時Flash子程序可以通過返回值
3、告訴高端,讓高端根據(jù)返回值來決定是否調(diào)用串口子程序。2.3 返回值問題如果只返回一個基本類型的返回值,則用返回值返回此值也可,如果返回一個復(fù)雜類型的返回值,比如一個struct結(jié)構(gòu)體,則用返回值返回的話要進行復(fù)制,開銷很大,此時用傳址方式返回,如果返回的值很多,可以把這些值定義在一個struct里面,通過指針形式返回。2.4 函數(shù)編寫函數(shù)第一要命名合理,一看函數(shù)名就知道此函數(shù)的功能、操作的對象。函數(shù)的層次最好不要多于5級,一個是效率降低,再一個閱讀性也變差,對每個函數(shù)注釋清楚,所有的函數(shù)代碼編寫方式有一個統(tǒng)一的風(fēng)格,注意對齊。函數(shù)中的堆棧變量使用前一定要負初值,在一個嵌入式的RAM一般比較少,
4、注意不要堆棧溢出。盡量用效率高的方式編碼,比如乘除可以用移位來實現(xiàn)。如果編寫的程序在16位控制器上運行,函數(shù)整型參數(shù)和局部整型變量要用16位,因為如果用8位的整型變量,系統(tǒng)要做多余的工作來防止8位溢出之類的事情,不僅不節(jié)省空間,還會降低效率,通過反匯編對比可以看出此現(xiàn)象。3. 測試測試是當模塊編寫完成后對其功能性的測試,先進行白盒測試,然后進行黑盒測試,測試要測試模塊所有可能的輸入,對非法的輸入進行檢測,一定測試全面。4. 調(diào)用驅(qū)動程序一般會在兩個地方調(diào)用驅(qū)動程序,一個是main函數(shù),一個是中斷處理函數(shù),可能有多個源文件包含相同的頭文件。設(shè)計頭文件的時候要避免重復(fù)定義問題,方法是:以定義LED
5、模塊為例,頭文件如下編寫:#ifndef _LED_H#define _LED_H/*函數(shù)聲明*/#endif5. 變量變量分為全局變量、堆棧變量、函數(shù)內(nèi)靜態(tài)變量、文件內(nèi)靜態(tài)變量、寄存器變量。寄存器變量是當某個變量頻繁使用很多次的時候為了避免每次從內(nèi)存中讀它,而把它放在寄存器中來改變性能。如果一個變量只在函數(shù)中使用,并且要一直存在,則命名為函數(shù)內(nèi)靜態(tài)變量,如果一個函數(shù)只在某個源文件中使用,此源文件各個函數(shù)通過此變量來通信,則此變量命名為文件內(nèi)靜態(tài)變量。所有的變量要有一定的命名規(guī)范,全局變量前面加前綴g_,靜態(tài)變量前面加前綴s_,寄存器變量前面加前綴r_,如果一個變量名由多個單詞組成,單詞之間可以用下劃線分開,也可以是第一個單詞字母大寫,不管使用何種命名寫法,全局要統(tǒng)一一致,不能兩種混合使用。6. 總體設(shè)計每個系統(tǒng)編碼之前一定要先設(shè)計,思路要弄清晰,之后才編碼。大任務(wù)調(diào)用小任務(wù),小任務(wù)如果全部正確,則大任務(wù)一定正確,知道某個小任務(wù)一定正確,但是大任務(wù)不正確,調(diào)試的時候就可以把此小任務(wù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 巴彥淖爾市2024年數(shù)學(xué)三上期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 2025屆謝家集區(qū)數(shù)學(xué)三年級第一學(xué)期期末復(fù)習(xí)檢測試題含解析
- 2025年工程項目管理深度復(fù)習(xí)試題及答案
- 2025年中級經(jīng)濟師備考計劃與試題及答案
- 水利水電工程續(xù)建技術(shù)試題及答案
- 2025年經(jīng)濟法考試重點知識分類試題及答案
- 小學(xué)生理衛(wèi)生教育
- 幼兒園節(jié)日教育課程介紹
- 農(nóng)業(yè)綜合開發(fā)利用合同協(xié)議書
- 食品飲料生產(chǎn)流程及品質(zhì)管理預(yù)案
- 1學(xué)會尊重-尊重自己(說課稿 )-2023-2024學(xué)年道德與法治六年級下冊統(tǒng)編版
- 會計案例分析-終結(jié)性考核-國開(SC)-參考資料
- 裝飾材料供應(yīng)合同模板
- 2020-2021學(xué)年人教部編版八年級道德與法治下冊 第一課 維護憲法權(quán)威 練習(xí)題
- 建筑垃圾清運優(yōu)化方案
- GB/T 33629-2024風(fēng)能發(fā)電系統(tǒng)雷電防護
- 《n次方根與分數(shù)指數(shù)冪》名師課件
- 安裝調(diào)試費合同
- 2024年貴州卷新高考物理試題真題及答案詳解(精校打印版)
- 第15章 群眾與公民
- 2024年云南省盤龍區(qū)中考一模考試數(shù)學(xué)試題
評論
0/150
提交評論