chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>中斷驅(qū)動(dòng)多任務(wù)--- 單片機(jī)(MCU) 下的一種軟件設(shè)計(jì)結(jié)構(gòu)資料下載

中斷驅(qū)動(dòng)多任務(wù)--- 單片機(jī)(MCU) 下的一種軟件設(shè)計(jì)結(jié)構(gòu)資料下載

2021-04-22 | pdf | 139.12KB | 次下載 | 2積分

資料介紹

MCU由于內(nèi)部資源的限制,軟件設(shè)計(jì)有其特殊性,程序一般沒(méi)有復(fù)雜的算法以及數(shù)據(jù)結(jié)構(gòu),代碼量也不大, 通常不會(huì)使用 OS (Operating System), 因?yàn)閷?duì)于一個(gè)只有若干K ROM、一百多byte RAM 的MCU來(lái)說(shuō),一個(gè)簡(jiǎn)單OS 也會(huì)吃掉大部分的資源。 對(duì)于無(wú)OS的系統(tǒng),流行的設(shè)計(jì)是主程序(主循環(huán) )+(定時(shí))中斷,這種結(jié)構(gòu)雖然符合自然想法,不過(guò)卻有很多不利之處,首先是中斷可以在主程序的任何地方發(fā)生,隨意打斷主程序。其次主程序與中斷之間的耦合性(關(guān)聯(lián)度)較大,這種做法 使得主程序與中斷纏繞在一起,必須仔細(xì)處理以防不測(cè)。 那么換一種思路,如果把主程序全部放入(定時(shí))中斷中會(huì)怎么樣?這么做至少可以立即看到幾個(gè)好處:系統(tǒng)可以處于低功耗的休眠狀態(tài),將由中斷喚醒進(jìn)入主程序;如果程序跑飛,則中斷可以拉回;沒(méi)有了主從之分(其他中斷另計(jì)),程序易于模塊化。 為了把主程序全部放入(定時(shí))中斷中,必須把程序化分成一個(gè)個(gè)的模塊,即任務(wù),每個(gè)任務(wù)完成一個(gè)特定的功能,例如掃描鍵盤并檢測(cè)按鍵。 設(shè)定一個(gè)合理的時(shí)基 (tick),例如 5、10 或 20 ms,每次定時(shí)中斷,把所有任務(wù)執(zhí)行一遍,為減少?gòu)?fù)雜性,一般不做動(dòng)態(tài)調(diào)度(最多使用固定數(shù)組以簡(jiǎn)化設(shè)計(jì),做動(dòng)態(tài)調(diào)度就接近 OS了),這實(shí)際上是一種無(wú)優(yōu)先級(jí)時(shí)間片輪循的變種。來(lái)看看主程序的構(gòu)成: void main() { …. // Initialize while (true) { IDLE; //sleep } } 這里的 IDLE 是一條sleep 指令,讓MCU進(jìn)入低功耗模式。中斷程序的構(gòu)成: void Timer_Interrupt() { SetTimer(); ResetStack(); Enable_Timer_Interrupt; …. 進(jìn)入中斷后,首先重置Timer,這主要針對(duì)8051、8051 自動(dòng)重裝分頻器只有 8-bit,難以做到長(zhǎng)時(shí)間定時(shí);復(fù)位 stack ,即把stack指針賦值為棧頂或棧底,用以表示與過(guò)去決裂,而且不準(zhǔn)備返回到中斷點(diǎn),保證不會(huì)保留程序在跑飛時(shí)stack 中的遺體。Enable_Timer_Interrupt 也主要是針對(duì)8051。8051 由于中斷控制較弱,只有兩級(jí)中斷優(yōu)先級(jí),而且使用了如果中斷程序不用 reti 返回,則不能響應(yīng)同級(jí)中斷這種偷懶方法,所以對(duì)于 8051,必須調(diào)用一次 reti 來(lái)開放中斷: _Enable_Timer_Interrupt: acall _reti _reti: reti 下面就是任務(wù)的執(zhí)行了,這里有幾種方法。第一種是采用固定順序,由于MCU程序復(fù)雜度不高,多數(shù)情況下可以采用這種方法: … Enable_Timer_Interrupt; ProcessKey(); RunTask2(); … RunTaskN(); while (1) IDLE; 可以看到中斷把所有任務(wù)調(diào)用一遍,至于任務(wù)是否需要運(yùn)行,由程序員自己控制。另一種做法是通過(guò)函數(shù)指針數(shù)組: #define CountOfArray(x) (sizeof(x)/sizeof(x[0])) typedef void (*FUNCTIONPTR)(); const FUNCTIONPTR[] tasks = { ProcessKey, RunTask2, … RunTaskN }; void Timer_Interrupt() { SetTimer(); ResetStack(); Enable_Timer_Interrupt; for (i=0; i (*tasks[i])(); while (1) IDLE; } 使用const 是讓數(shù)組內(nèi)容位于 code segment (ROM) 而非 data segment (RAM) 中,8051 中使用 code 作為 const 的替代品。 (題外話:關(guān)于函數(shù)指針賦值時(shí)是否需要取地址操作符 & 的問(wèn)題,與數(shù)組名一樣,取決于 compiler. 對(duì)于熟悉匯編的人來(lái)說(shuō),函數(shù)名和數(shù)組名都是常數(shù)地址,無(wú)需也不能取地址。對(duì)于不熟悉匯編的人來(lái)說(shuō),用 & 取地址是理所當(dāng)然的事情。Visual C++ 2005對(duì)此兩者都支持) 這種方法在匯編下表現(xiàn)為散轉(zhuǎn),一個(gè)小技巧是利用 stack 獲取跳轉(zhuǎn)表入口:
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

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

本月

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

總榜

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