面向硬件對象底層驅動設計_第1頁
面向硬件對象底層驅動設計_第2頁
面向硬件對象底層驅動設計_第3頁
面向硬件對象底層驅動設計_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 面向硬件對象底層驅動程序設計要求1. 硬件對象獨立編程的實體就是硬件對象,硬件對象分為內部對象和外部對象,內部對象比如系統(tǒng)初始化、定時器、Flash、串口等,外部對象比如LED、開關、按鈕、電機等。每個對象有獨立模塊。2.程序設計基本原則2.1 對每個硬件對象編寫獨立的驅動程序每個對象對應一個頭文件和源文件,如果對象是外部對象,則要在頭文件用宏定義對象接在哪個腳上,頭文件只聲明供外部調用的功能函數,也就是說,其他人只要看頭文件函數聲明就知道如何使用此對象而無需去看源文件去閱讀代碼。一般函數的命名規(guī)則是:對象_功能,比如初始化LED,函數名可以為LED_Ini t。如果一個函數只供對象功能函數

2、內部調用,則此函數在源文件里面聲明和實現,不出現在頭文件里,并聲明為static 函數,因為聲明為static的函數只能供定義此函數的源文件使用,其他源文件看不到此函數。如果一個全局變量只供某模塊使用,則可以把此全局變量定義為static,這樣此變量只能在定義它的源文件中使用,其他源文件看不到此變量,所以不會產生命名沖突。2.2封裝要完整、封裝之間不能交叉模塊函數就實現此模塊要實現的功能,模塊內部之間不能相互調用,如果要調用則交給高端來處理,比如在Flash子程序里面不能調用串口,當然測試Flash子程序的時候例外,當測試完畢時,必須把調用串口子程序代碼刪除,此時Flash子程序可以通過返回值

3、告訴高端,讓高端根據返回值來決定是否調用串口子程序。2.3 返回值問題如果只返回一個基本類型的返回值,則用返回值返回此值也可,如果返回一個復雜類型的返回值,比如一個struct結構體,則用返回值返回的話要進行復制,開銷很大,此時用傳址方式返回,如果返回的值很多,可以把這些值定義在一個struct里面,通過指針形式返回。2.4 函數編寫函數第一要命名合理,一看函數名就知道此函數的功能、操作的對象。函數的層次最好不要多于5級,一個是效率降低,再一個閱讀性也變差,對每個函數注釋清楚,所有的函數代碼編寫方式有一個統(tǒng)一的風格,注意對齊。函數中的堆棧變量使用前一定要負初值,在一個嵌入式的RAM一般比較少,

4、注意不要堆棧溢出。盡量用效率高的方式編碼,比如乘除可以用移位來實現。如果編寫的程序在16位控制器上運行,函數整型參數和局部整型變量要用16位,因為如果用8位的整型變量,系統(tǒng)要做多余的工作來防止8位溢出之類的事情,不僅不節(jié)省空間,還會降低效率,通過反匯編對比可以看出此現象。3. 測試測試是當模塊編寫完成后對其功能性的測試,先進行白盒測試,然后進行黑盒測試,測試要測試模塊所有可能的輸入,對非法的輸入進行檢測,一定測試全面。4. 調用驅動程序一般會在兩個地方調用驅動程序,一個是main函數,一個是中斷處理函數,可能有多個源文件包含相同的頭文件。設計頭文件的時候要避免重復定義問題,方法是:以定義LED

5、模塊為例,頭文件如下編寫:#ifndef _LED_H#define _LED_H/*函數聲明*/#endif5. 變量變量分為全局變量、堆棧變量、函數內靜態(tài)變量、文件內靜態(tài)變量、寄存器變量。寄存器變量是當某個變量頻繁使用很多次的時候為了避免每次從內存中讀它,而把它放在寄存器中來改變性能。如果一個變量只在函數中使用,并且要一直存在,則命名為函數內靜態(tài)變量,如果一個函數只在某個源文件中使用,此源文件各個函數通過此變量來通信,則此變量命名為文件內靜態(tài)變量。所有的變量要有一定的命名規(guī)范,全局變量前面加前綴g_,靜態(tài)變量前面加前綴s_,寄存器變量前面加前綴r_,如果一個變量名由多個單詞組成,單詞之間可以用下劃線分開,也可以是第一個單詞字母大寫,不管使用何種命名寫法,全局要統(tǒng)一一致,不能兩種混合使用。6. 總體設計每個系統(tǒng)編碼之前一定要先設計,思路要弄清晰,之后才編碼。大任務調用小任務,小任務如果全部正確,則大任務一定正確,知道某個小任務一定正確,但是大任務不正確,調試的時候就可以把此小任務

溫馨提示

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

評論

0/150

提交評論