• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 牛人業話 > 單片機模塊化編程(二)再探

    單片機模塊化編程(二)再探

    作者:zhuzhaokun1987 時間:2015-02-02 來源:電子產品世界 收藏

      頭文件的文件內部不應該包含任何實質性的函數代碼。我們可以把這個頭文件理解成為一份說明書,說明的內容就是我們的模塊對外提供的接口函數或者是接口變量。同時該文件也包含了一些很重要的宏定義以及一些結構體的信息,離開了這些信息,很可能就無法正常使用接口函數或者是接口變量。但是總的原則是:不該讓外界知道的信息就不應該出現在頭文件里,而外界調用模塊內接口函數或者是接口變量所必須的信息就一定要出現在頭文件里,否則,外界就無法正確的調用我們提供的接口功能。因而為了讓外部函數或者文件調用我們提供的接口功能,就必須包含我們提供的這個接口描述文件----即頭文件。同時,我們自身模塊也需要包含這份模塊頭文件(因為其包含了模塊源文件中所需要的宏定義或者是結構體),好比我們平常所用的文件都是一式三份一樣,模塊本身也需要包含這個頭文件。

    本文引用地址:http://www.czjhyjcfj.com/article/269322.htm

      下面我們來對.h這個頭文件進行說明,一般來說,頭文件的名字應該與源文件的名字保持一致,這樣我們便可以清晰的知道哪個頭文件是哪個源文件的描述。

      于是便得到了.c的頭文件.h 其內容如下。

      #ifndef __LED_H__

      #define __LED_H__

      extern void LED_init();

      extern void LED_display();

      #endif

      這與我們在源文件中定義函數時有點類似。不同的是,在其前面添加了extern 修飾符表明其是一個外部函數,可以被外部其它模塊進行調用。

      10、下面我們再來看delay.c和其頭文件delay.h

      

     

      

     

      我們發現了一點一樣的地方和一點異樣的地方(這句話讀的我也是醉了)。

      一樣的是,對于頭文件來講,整體的框架似乎一點也沒有發生改變,都是下列形式。

      #ifndef __DELAY_H__

      #define __DELAY_H__

      extern ……

      …… ……

      #endif

      這是頭文件的標準編寫格式,其中__DELAY_H__這個是頭文件的名字,必須大寫,中間的橫線不能少。一般來說,頭文件的名字應該與源文件的名字保持一致,這樣我們便可以清晰的知道哪個頭文件是哪個源文件的描述。

      而異樣的是,我們在delay.c這個文件中,發現有”mytype.h”這么個頭文件。那么這個是神馬,又能做神馬呢?下面我們來做一個簡單的探討。

      11、工程中的mytype.h是個什么樣的存在

      大家可能早就注意到了,這個mytype到底是何方神圣,在分析之前我們先來仔細的“打量一下”。

      

     

      通過上圖中的一段代碼,我們能夠發現,這好像是對字符串定義表達符號的宏定義,沒錯,你猜對了!!細心的小伙伴又發現了,我們通常在函數中的用法跟這并不完全一樣啊,例如我們定義uint和uchar的時候,在程序中我們是這樣寫的:

      #define uint unsigned int

      #define uchar unsigned char

      那么非常好,這就是兩者不一樣的地方啦。在寫的時候注意一下就好啦。另外,在對unsigned int和unsigned char等進行宏定義的時候,我們分別采用了多種字符來對其進行定義,這樣做的好處是,能夠使得mytype.h這個頭文件能夠很好的適用于不同的芯片和不同編程風格的程序員,也能夠起到方便程序進行移植的這么一個目的。由此可見,如果我們將模塊化編程很好的運用在項目開發中,能夠起到避免冗余工作量和一勞永逸的良好效果。

      好了,以上幾段代碼都帶著大家一一分析完畢,現在我們來進行一下編譯,看看能不能一切順利。

      12、對編譯輸出選項進行簡單設置

      

     

      按照圖中設置完成后,點擊“OK”按鈕即可。

      13、點擊編譯按鈕

      

     

      14、打開工程文件夾路徑,我們可以查找到輸出的test.hex文件

      

     

      好了,大功告成了,第一彈宣布結束。。。

      --------------------------------------我是邪惡的分割線----------------------------------------------

      突然我發現,我的工程文件夾里的文件亂的厲害,看到它們猶如歪瓜裂棗似的躺在工程文件夾里面,我也是醉了。。。作為一個有著強迫癥和密集恐懼癥的并且又有著完美主義內心的我來講,這樣的情況我是要嚴格杜絕的!!!那么問題又來了(和挖掘機和藍翔無關)。(第一彈貌似不能結束啦,goon吧)那么怎么樣才能讓他們變得乖一點呢?

      敬請關注《第一彈---單片機模塊化編程(三)》----還您的文件夾一干凈的“藍天”

    51單片機相關文章:51單片機教程


    c語言相關文章:c語言教程


    單片機相關文章:單片機教程


    單片機相關文章:單片機視頻教程


    單片機相關文章:單片機工作原理



    上一頁 1 2 下一頁

    關鍵詞: LED 延時函數

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 竹山县| 达拉特旗| 卢氏县| 仙居县| 弋阳县| 高淳县| 江油市| 民勤县| 东乌珠穆沁旗| 金乡县| 白朗县| 谷城县| 通海县| 榆中县| 莱州市| 金阳县| 禄劝| 湘西| 嘉祥县| 丰都县| 陆丰市| 汝阳县| 汉阴县| 龙南县| 页游| 紫阳县| 彭泽县| 安多县| 凌源市| 含山县| 蓝山县| 新闻| 长治市| 莱州市| 泌阳县| 漠河县| 如东县| 闽侯县| 泗洪县| 渭南市| 泰州市|