電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>三種單片機應用程序的架構(gòu)的利弊和適應范圍資料下載

三種單片機應用程序的架構(gòu)的利弊和適應范圍資料下載

2021-04-17 | pdf | 134.27KB | 次下載 | 2積分

資料介紹

工作中經(jīng)過摸索實驗,總結(jié)出單片機大致應用程序的架構(gòu)有三種: 1、簡單的前后臺順序執(zhí)行程序,這類寫法是大多數(shù)人使用的方法,不需用思考程序的具體架構(gòu),直接通過執(zhí)行順序編寫應用程序即可。 2、時間片輪詢法,此方法是介于順序執(zhí)行與操作系統(tǒng)之間的一種方法。 3、操作系統(tǒng),此法應該是應用程序編寫的最高境界。 下面就分別談談這三種方法的利弊和適應范圍等。 一、順序執(zhí)行法 這 種方法,這應用程序比較簡單,實時性,并行性要求不太高的情況下是不錯的方法,程序設計簡單,思路比較清晰。但是當應用程序比較復雜的時候,如果沒有一個 完整的流程圖,恐怕別人很難看懂程序的運行狀態(tài),而且隨著程序功能的增加,編寫應用程序的工程師的大腦也開始混亂。即不利于升級維護,也不利于代碼優(yōu)化。 本人寫個幾個比較復雜一點的應用程序,剛開始就是使用此法,最終雖然能夠?qū)崿F(xiàn)功能,但是自己的思維一直處于混亂狀態(tài)。導致程序一直不能讓自己滿意。 這種方法大多數(shù)人都會采用,而且我們接受的教育也基本都是使用此法。對于我們這些基本沒有學習過數(shù)據(jù)結(jié)構(gòu),程序架構(gòu)的單片機工程師來說,無疑很難在應用程序的設計上有一個很大的提高,也導致了不同工程師編寫的應用程序很難相互利于和學習。 本人建議,如果喜歡使用此法的網(wǎng)友,如果編寫比較復雜的應用程序,一定要先理清頭腦,設計好完整的流程圖再編寫程序,否則后果很嚴重。當然應該程序本身很簡單,此法還是一個非常必須的選擇。 下面就寫一個順序執(zhí)行的程序模型,方便和下面兩種方法對比: 代 碼 /************************************************************************************** * FunctionName : main() * Description : 主函數(shù) * EntryParameter : None * ReturnValue : None **************************************************************************************/ int main(void) { uint8 keyValue; InitSys(); // 初始化 while (1) { TaskDisplayClock(); keyValue = TaskKeySan(); switch (keyValue) { case x: TaskDispStatus(); break; ... default: break; } } } 二、時間片輪詢法 時間片輪詢法,在很多書籍中有提到,而且有很多時候都是與操作系統(tǒng)一起出現(xiàn),也就是說很多時候是操作系統(tǒng)中使用了這一方法。不過我們這里要說的這個時間片輪詢法并不是掛在操作系統(tǒng)下,而是在前后臺程序中使用此法。也是本貼要詳細說明和介紹的方法。 對于時間片輪詢法,雖然有不少書籍都有介紹,但大多說得并不系統(tǒng),只是提提概念而已。下面本人將詳細介紹這種模式,并參考別人的代碼建立的一個時間片輪詢架構(gòu)程序的方法,我想將給初學者有一定的借鑒性。 在這里我們先介紹一下定時器的復用功能。 使用1個定時器,可以是任意的定時器,這里不做特殊說明,下面假設有3個任務,那么我們應該做如下工作: 1、 初始化定時器,這里假設定時器的定時中斷為1ms(當然你可以改成10ms,這個和操作系統(tǒng)一樣,中斷過于頻繁效率就低,中斷太長,實時性差)。 2、定義一個數(shù)值: 代 碼 #define TASK_NUM (3) // 這里定義的任務數(shù)為3,表示有三個任務會使用此定時器定時。 uint16 TaskCount[TASK_NUM] ; // 這里為三個任務定義三個變量來存放定時值 uint8 TaskMark[TASK_NUM]; // 同樣對應三個標志位,為0表示時間沒到,為1表示定時時間到。 3、在定時器中斷服務函數(shù)中添加: 代 碼 /************************************************************************************** * FunctionName : TimerInterrupt() * Description : 定時中斷服務函數(shù) * EntryParameter : None * ReturnValue : None **************************************************************************************/ void TimerInterrupt(void) { uint8 i; for (i=0; i{ if (TaskCount[i]) { TaskCount[i]--; if (TaskCount[i] == 0) { TaskMark[i] = 0x01; } } } } 代碼解釋:定時中斷服務函數(shù),在中斷中逐個判斷,如果定時值為0了,表示沒有使用此定時器或此定時器已經(jīng)完成定時,不著處理。否則定時器減一,知道為零時,相應標志位值1,表示此任務的定時值到了。 4、在我們的應用程序中,在需要的應用定時的地方添加如下代碼,下面就以任務1為例: 代 碼
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費