當(dāng)前位置:首頁 >  站長 >  建站經(jīng)驗(yàn) >  正文

嵌入式系統(tǒng)c語言編程該怎么學(xué)?

 2013-02-19 07:35  來源:   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競價(jià),好“米”不錯(cuò)過

C語言博大精深,玩了很長時(shí)間了,一直徘徊在入門處??戳撕芏鄤e人的編程經(jīng)驗(yàn),加上項(xiàng)目程序越做越大,直到這半年來突然有很多體會(huì),明天就要回家了,下午閑來無事也試著總結(jié)一些心得體會(huì),喜歡對(duì)師弟妹們的學(xué)習(xí)有所幫助。

首先要說說編程的幾個(gè)重要原則,看了很多別人的編程經(jīng)驗(yàn),更多的是說技巧。技巧能顯著提高程序的效率,固然重要但是技巧的掌握靠了還是大量的工程實(shí)踐,只有在有一定功底后才可以去追求這些編程技巧。但是編程的原則卻是要在學(xué)習(xí)一開始就要認(rèn)真貫徹,才能養(yǎng)成良好的編程習(xí)慣,苦練內(nèi)功后練上層功夫才不會(huì)走火入魔。

言歸正傳,嵌入式系統(tǒng)C語言編程需要遵守什么樣的原則呢?隨著時(shí)代和技術(shù)的不斷發(fā)展,這個(gè)問題也許仁者見仁智者見智了,但是總結(jié)起來大家還是有很多共識(shí)。根據(jù)目前提倡的軟件工程的做法,和我們教研室的做法,列舉最重要原則:

一、模塊劃分.C語言作為一種結(jié)構(gòu)化的程序設(shè)計(jì)語言,在模塊的劃分上主要依據(jù)功能:

(1) 一個(gè)功能模塊即是一個(gè).c文件和一個(gè).h文件的結(jié)合,.h文件中是對(duì)于該模塊功能函數(shù)和使變 量的聲明

(2) 該模塊提供給其它模塊調(diào)用的外部函數(shù)及數(shù)據(jù)都需要在.h中文件中以extern關(guān)鍵字聲明

(3) 模塊內(nèi)的函數(shù)和全局變量只能在.c文件定義

(4) 不允許在.h文件中定義變量(定義變量和聲明變量的區(qū)別在于定義會(huì)產(chǎn)生內(nèi)存分配的操作,而聲明則只是告訴包含該聲明的模塊在連接階段從其它模塊尋找外部函數(shù)和變量)。

二、一個(gè)嵌入式系統(tǒng)程序包括兩類模塊分三層編寫:

(1)硬件驅(qū)動(dòng)模塊,一種特定硬件對(duì)應(yīng)一個(gè)模塊,包括了片內(nèi)集成的硬件模塊和外部擴(kuò)展的

(2)軟件功能模塊,軟件功能模塊是建立在硬件驅(qū)動(dòng)模塊上的與硬件無關(guān)的邏輯功能。

(3)三層編寫即HAL(硬件應(yīng)用層),API(應(yīng)用函數(shù)包),APP(邏輯應(yīng)用層)注:名稱是借用的,表大個(gè)意思而已。HAL就是硬件驅(qū)動(dòng)模塊和系統(tǒng)硬件密切相關(guān),API可以是建立在HAL上的硬件應(yīng)用服務(wù)程序也可以是通用的函數(shù)模塊,APP則是最終構(gòu)成嵌入式系統(tǒng)應(yīng)用的功能邏輯關(guān)系。HAL和API是為了方便技術(shù)積累和提高開發(fā)效率而分開了,APP則是針對(duì)特殊應(yīng)用而定制的。

三、中斷服務(wù)程序的要求:

(1)不能返回值

(2)不能向ISR傳遞參數(shù)

(3)ISR應(yīng)該盡可能的短小精悍,不允許有等待信號(hào)的操作

四、編程風(fēng)格問題

五、需要學(xué)會(huì)熟練應(yīng)用的C語言的基本手法

(1)數(shù)據(jù)指針,不能僅僅只會(huì)使用數(shù)組

(2)宏定義,定義寄存器地址,定義宏函數(shù)等

(3)函數(shù)指針的應(yīng)用

(4)條件編譯,在帶操作系統(tǒng)的應(yīng)用時(shí)經(jīng)常要用

六、不要偷懶,寫好必要的注釋

七、做到以上幾點(diǎn)時(shí)就可以吸收高超的編程技巧了。

轉(zhuǎn)載請(qǐng)保留連接

本文由www.uchn.org整理

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

  • 傲夢編程1對(duì)1:從C語言升級(jí)到C++,少兒編程加量不加價(jià)!

    自進(jìn)入2018年以來,傲夢團(tuán)隊(duì)有很多關(guān)于課程方面的優(yōu)化,自上次課程升級(jí),明確兩大課程體系之后,傲夢團(tuán)隊(duì)近期又對(duì)現(xiàn)有基礎(chǔ)課程進(jìn)行了全面升級(jí),將C語言課程全面改為了C++課程。

    標(biāo)簽:
    編程入門
    c語言開發(fā)
  • C++的命名空間的現(xiàn)實(shí)意義

    程序中不能有兩個(gè)函數(shù)名一摸一樣的,但是程序做大了,就很可能會(huì)造成兩個(gè)同名同參的函數(shù);這樣就會(huì)導(dǎo)致歧義而錯(cuò)誤。所以做出命名空間,可以做到只要是不同的空間中可以同名同參函數(shù),這樣以后其他人來做了,可以不用看以前寫了什么函數(shù)名,而只要弄個(gè)新的空間,就可以隨意的寫函數(shù)名了。

    標(biāo)簽:
    c語言開發(fā)
  • 站長歷程從程序開始 讓我們?cè)賮砘仡櫼淮蝐語言

    大家都知道,我們剛剛學(xué)習(xí)建站的時(shí)候,總想去學(xué)習(xí)下編程,不說讓自己編程方面精通,但至少我們可以看得懂,而學(xué)編程都要從最基礎(chǔ)的c語言開始,而今天的很多老站長或多或少也有幾年的建站經(jīng)驗(yàn)了,也許不再去看那所謂的編程語言了,也不再去追究技術(shù)細(xì)節(jié)。不過讓我們以c

    標(biāo)簽:
    站長歷程
    c語言開發(fā)
  • 駁“C語言已經(jīng)死了”

    駁“C語言已經(jīng)死了”

    標(biāo)簽:
    c語言開發(fā)

熱門排行

信息推薦