淺談單片機應用程序架構

淺談單片機應用程序架構

ID:9081304

大小:85.00 KB

頁數(shù):23頁

時間:2018-04-16

淺談單片機應用程序架構_第1頁
淺談單片機應用程序架構_第2頁
淺談單片機應用程序架構_第3頁
淺談單片機應用程序架構_第4頁
淺談單片機應用程序架構_第5頁
資源描述:

《淺談單片機應用程序架構》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。

1、本人經過摸索實驗,并總結,大致應淺談單片機應用程序架構對于單片機程序來說,大家都不陌生,但是真正使用架構,考慮架構的恐怕并不多,隨著程序開發(fā)的不斷增多,本人覺得架構是非常必要的。前不就發(fā)帖與大家一起討論了一下《談談怎樣架構你的單片機程序》,發(fā)現(xiàn)真正使用架構的并不多,而且這類書籍基本沒有。本人經過摸索實驗,并總結,大致應用程序的架構有三種:1.?簡單的前后臺順序執(zhí)行程序,這類寫法是大多數(shù)人使用的方法,不需用思考程序的具體架構,直接通過執(zhí)行順序編寫應用程序即可。2.?時間片輪詢法,此方法是介于順序執(zhí)行與操作系統(tǒng)之間的一種方法

2、。3.?操作系統(tǒng),此法應該是應用程序編寫的最高境界。下面就分別談談這三種方法的利弊和適應范圍等。1.?前后臺順序執(zhí)行法:這種方法,這應用程序比較簡單,實時性,并行性要求不太高的情況下是不錯的方法,程序設計簡單,思路比較清晰。但是當應用程序比較復雜的時候,如果沒有一個完整的流程圖,恐怕別人很難看懂程序的運行狀態(tài),而且隨著程序功能的增加,編寫應用程序的工程師的大腦也開始混亂。即不利于升級維護,也不利于代碼優(yōu)化。本人寫個幾個比較復雜一點的應用程序,剛開始就是使用此法,最終雖然能夠實現(xiàn)功能,但是自己的思維一直處于混亂狀態(tài)。導致程

3、序一直不能讓自己滿意。這種方法大多數(shù)人都會采用,而且我們接受的教育也基本都是使用此法。對于我們這些基本沒有學習過數(shù)據(jù)結構,程序架構的單片機工程師來說,無疑很難在應用程序的設計上有一個很大的提高,也導致了不同工程師編寫的應用程序很難相互利于和學習。本人建議,如果喜歡使用此法的網友,如果編寫比較復雜的應用程序,一定要先理清頭腦,設計好完整的流程圖再編寫程序,否則后果很嚴重。當然應該程序本身很簡單,此法還是一個非常必須的選擇。下面就寫一個順序執(zhí)行的程序模型,方面和下面兩種方法對比:/**********************

4、****************************************************************?*?FunctionName???:?main()?*?Description????:?主函數(shù)*?EntryParameter?:?None?*?ReturnValue????:?None?**************************************************************************************/?int?main(void)

5、??{??????uint8keyValue;?????InitSys();??????????????????//?初始化????while?(1)?????{?????????TaskDisplayClock();?????????keyValue?=?TaskKeySan();?????????switch?(keyValue)????????{?????????????case?x:?TaskDispStatus();?break;?????????????...?????????????default:?bre

6、ak;?????????}?????}?}?2.?時間片輪詢法時間片輪詢法,在很多書籍中有提到,而且有很多時候都是與操作系統(tǒng)一起出現(xiàn),也就是說很多時候是操作系統(tǒng)中使用了這一方法。不過我們這里要說的這個時間片輪詢法并不是掛在操作系統(tǒng)下,而是在前后臺程序中使用此法。也是本貼要詳細說明和介紹的方法。對于時間片輪詢法,雖然有不少書籍都有介紹,但大多說得并不系統(tǒng),只是提提概念而已。下面本人將詳細介紹本人模式,并參考別人的代碼建立的一個時間片輪詢架構程序的方法,我想將給這里我們先介紹一下定時器的復用功能。使用1個定時器,可以是任意的

7、定時器,這里不做特殊說明,下面假設有3個任務,那么我們應該做如下工作:1.?初始化定時器,這里假設定時器的定時中斷為1ms(當然你可以改成10ms,這個和操作系統(tǒng)一樣,中斷過于頻繁效率就低,中斷太長,實時性差)。2.?定義一個數(shù)值:#define?TASK_NUM???(3)//?這里定義的任務數(shù)為3,表示有三個任務會使用此定時器定時。uint16?TaskCount[TASK_NUM]???//?這里為三個任務定義三個變量來存放定時值uint8??TaskMark[TASK_NUM];?//?同樣對應三個標志位,為0表

8、示時間沒到,為1表示定時時間到。3.?在定時器中斷服務函數(shù)中添加:/**************************************************************************************?*?FunctionName?:TimerInterrupt()?*?Des

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。