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