SO技術(shù)分享之30 編程、棋類和寫作是公認(rèn)為幾個比較鍛煉人思維的活動,不過這也是通過在長期練習(xí)在中后期能達(dá)到的思維佳、邏輯清晰的效果。假如是初識時,還是會覺得比較迷茫和混亂。不過一個好的邏輯結(jié)構(gòu),能快速地幫助進(jìn)步。 一個好的程序結(jié)構(gòu),有助于理清思路、避免犯錯和遺漏。 本文介紹在單片機編程時做出較好的程序結(jié)構(gòu)的方法,包括文件組織、C文件內(nèi)代碼的組織等內(nèi)容。 1、程序的組成 一般來說,一個程序由頭文件和C程序組成。頭文件用于定義,文件存儲的后綴為.h,C程序用于編寫實現(xiàn)功能的代碼,文件存儲的后綴為.c。 2、本文談及的程序結(jié)構(gòu)的內(nèi)容 一是一個工程里C文件的分配。如果一個工程里面有多個C文件,那么之前就需要對C文件進(jìn)行一下分配。 C文件的分配可以按照功能來分配,可以按照部件(模塊)來分配,也可以按照執(zhí)行過程來分配。其實第二第三種分配方式就是分別對應(yīng)程序編程方法的面向?qū)ο蠛兔嫦蜻^程。 二是一個C程序里子程序的劃分。子程序的劃分比較簡單,一般按照一個功能或者一個任務(wù)來分一個子程序即可。 這幾種分配或者劃分的方法無所謂優(yōu)劣,適用簡單即可。 3、一個單片機程序的標(biāo)準(zhǔn)結(jié)構(gòu)
30.1.png (505.85 KB, 下載次數(shù): 57)
下載附件
2022-3-19 12:37 上傳
其實標(biāo)準(zhǔn)結(jié)構(gòu)也不是說非要一定這樣做,只是這樣做會比較好。 首先得載入頭文件,不管是系統(tǒng)頭文件還是自定義的頭文件,在這個程序里需要用到的都需要載入,如定義需要的相關(guān)子程序、引腳等。 如果要用到全局變量,那么全局變量等的定義一般也是需要的。 Main函數(shù)是一個工程里一定要有的,而且只能唯一。單片機執(zhí)行程序時一定會運行到的程序就是main函數(shù),其他子函數(shù)一般在main函數(shù)中被調(diào)用或者嵌套調(diào)用。如有開發(fā)定制項目需要,可Q:2531二六3726 子程序可以與main函數(shù)放在同一個C文件,也放在其他C文件里。放在其他C文件的話,可以通過引用頭文件來實現(xiàn)調(diào)用。 特殊子程序,如一些中斷子程序等,如果要用到那么也需要去定義和編寫。 4、一個例子
30.2.png (266.33 KB, 下載次數(shù): 55)
下載附件
2022-3-19 12:37 上傳
圖 2是一個單片機程序的標(biāo)準(zhǔn)結(jié)構(gòu)的例子,左邊project樹中包含了該工程的所有文件。在main.c文件中,先是引用相關(guān)頭文件,如引腳的定義就在其中一個頭文件里,接著是全局變量的定義,main.c文件中main函數(shù)是關(guān)鍵的程序,是一個單片機程序里一定會執(zhí)行的程序,其他子程序在main函數(shù)中調(diào)用,具體的子程序代碼在其他C文件里,main函數(shù)中用while(1)執(zhí)行反復(fù)循環(huán)。 本節(jié)完,精彩待續(xù)。
|