![基于ARM的仿真實驗系統(tǒng)_第1頁](http://file4.renrendoc.com/view/e90f497e1d937a165eec515bb9d46789/e90f497e1d937a165eec515bb9d467891.gif)
![基于ARM的仿真實驗系統(tǒng)_第2頁](http://file4.renrendoc.com/view/e90f497e1d937a165eec515bb9d46789/e90f497e1d937a165eec515bb9d467892.gif)
![基于ARM的仿真實驗系統(tǒng)_第3頁](http://file4.renrendoc.com/view/e90f497e1d937a165eec515bb9d46789/e90f497e1d937a165eec515bb9d467893.gif)
![基于ARM的仿真實驗系統(tǒng)_第4頁](http://file4.renrendoc.com/view/e90f497e1d937a165eec515bb9d46789/e90f497e1d937a165eec515bb9d467894.gif)
![基于ARM的仿真實驗系統(tǒng)_第5頁](http://file4.renrendoc.com/view/e90f497e1d937a165eec515bb9d46789/e90f497e1d937a165eec515bb9d467895.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
-摘要隨著人們生活水平的不斷提高,大家也對生活的快捷化、簡單化、智能化和人性化提出了更高的要求,而嵌入式系統(tǒng)正是實現(xiàn)人們這一需求的重要推手。當(dāng)今的嵌入式設(shè)備多采用32位的RISC處理器作為核心部件,而基于ARM的嵌入式處理器在32位的RISC嵌入式處理器領(lǐng)域占據(jù)了高達(dá)75%的市場份額。但是,嵌入式系統(tǒng)并沒有得到像單片機一樣受歡迎,這既在于嵌入式系統(tǒng)學(xué)習(xí)難度高,也在于搭建一個嵌入式系統(tǒng)需要一定的資金投入。本課題是基于ARM7的仿真實驗系統(tǒng)設(shè)計,全文詳細(xì)講解了ARM7的體系結(jié)構(gòu)和硬件結(jié)構(gòu),重點設(shè)計了主系統(tǒng)界面和主要的外圍電路仿真。主系統(tǒng)界面就是將各個外圍電路仿真圖鏈接到用VB設(shè)計的窗體控件上,通過點擊控件就可以直接打開相關(guān)的電路仿真圖。外圍電路仿真不但全面介紹了相關(guān)寄存器,而且用Proteus軟件設(shè)計了電路仿真圖,還用Keil軟件編寫了相關(guān)的實驗代碼。每一個實驗都配有流程圖,同時做了相關(guān)的說明,使人看了一目了然?;贏RM7的仿真實驗系統(tǒng)設(shè)計,既可以幫助大家快速學(xué)習(xí)ARM7的原理,也可以節(jié)約一定的開支,同時學(xué)會相關(guān)軟件的使用。關(guān)鍵詞:Keil;Proteus;VB;ARM7;仿真系統(tǒng)AbstractWiththecontinuousimprovementoflivingstandards,peoplearequick,humanization,intelligentandsimpleoflifeputforwardhigherrequirements,andembeddedsystemisimportanttoachievetheneedsof.Embeddedequipmenttodayuses32bitsRISCprocessorasthecorecomponent,andembeddedprocessorbasedonARMinRISCembeddedprocessor32tooccupythemarketshareashighas75%.However,embeddedsystemshasnotbeenaspopularasthemicrocontroller,whichliesintheembeddedsystemlearningdifficulty,alsoistobuildanembeddedsystemneedssomemoney.ThistopicisthedesignofsimulationexperimentsystembasedonARM7,thetextexplainindetailthesystemstructureandthehardwarestructureofARM7,focusedonthedesignofthemaininterfaceofthesystemandthemaincircuitsimulation.ThemaininterfaceofthesystemistheperipheralcircuitsimulationmaplinktodesignwithVBformscontrols,byclickingonacontrolcanbedirectlyrelatedtoopencircuitsimulationdiagram.Theperipheralcircuitsimulationisnotonlyacomprehensiveintroductiontotherelevantregister,anduseProteussoftwaretodesignthecircuitsimulationmap,alsowrittenusingtheKeilsoftware.Experimentalcodecorrelation.Eachexperimentareequippedwithflowchart,atthesametimetodotherelevantinstructions,makepeopleseestickoutamile.DesignofsimulationexperimentsystembasedonARM7,whichcanhelpyouquicklylearnARM7,canalsosavemoney,useatthesametimetolearntheassociatedsoftware.Keywords:Keil;Proteus;VB;ARM7;Simulationsystem目錄1緒論 11.1嵌入式系統(tǒng)概念 11.2國內(nèi)外研究現(xiàn)狀和發(fā)展趨勢 11.3課題研究的目的和意義 21.4軟件簡介 21.4.1Keil簡介 21.4.2Proteus簡介 31.5論文研究的內(nèi)容 32ARM7的體系結(jié)構(gòu) 42.1ARM7處理器結(jié)構(gòu) 42.1.1ARM處理器結(jié)構(gòu)概述和流水線結(jié)構(gòu) 42.2存儲器 42.3處理器 42.4內(nèi)部寄存器 52.4.1各模式可訪問寄存器 52.4.2通用寄存器 52.5程序狀態(tài)寄存器CPSR 72.5.1條件代碼標(biāo)志 82.5.2控制位 92.6異常 92.6.1進(jìn)入異常 92.6.2退出異常 92.6.3快速中斷請求 102.6.4中斷請求 102.6.5中止 102.6.6軟件中斷指令 112.6.7未定義的指令 112.7復(fù)位 112.8存儲器及存儲器映射I/O 112.8.1地址空間 122.8.2存儲器格式 122.9尋址方式 132.10ARM7指令集 133ARM7的硬件結(jié)構(gòu) 143.1LPC2138簡介 143.1.1結(jié)構(gòu) 143.2存儲器尋址 153.2.1存儲器映射 153.2.2LPC2138存儲器重新映射和BootBlock 153.3系統(tǒng)控制模塊 173.3.1晶體振蕩器 173.3.2外部中斷輸入 173.3.3存儲器映射控制 173.3.4PLL 183.3.5功率控制 183.3.6復(fù)位 193.3.7VPB分頻器 193.3.8喚醒定時器 193.4存儲器加速模塊 203.5中斷控制器 213.6引腳連接模塊 224基于ARM7的仿真實驗系統(tǒng)設(shè)計 234.1系統(tǒng)界面設(shè)計 234.2各實驗項目設(shè)計 244.2.1 GPIO實驗 244.2.2外部中斷輸入實驗 284.2.3定時器實驗 334.2.4UART實驗 364.2.5A/D轉(zhuǎn)換器實驗 394.2.6看門狗定時器實驗 43結(jié)論 47致謝 48參考文獻(xiàn) 49附錄A英文原文 50附錄B中文翻譯 601緒論1.1嵌入式系統(tǒng)概念根據(jù)IEEE的定義,嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助設(shè)備、機器和車間運行的裝置”,這主要是從應(yīng)用上加以定義的。目前的普遍定義是:以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適于應(yīng)用系統(tǒng)對功能、成本、體積、功耗等嚴(yán)格要求的專用計算機系統(tǒng)??傮w上來說,嵌入式系統(tǒng)可以劃分為硬件和軟件兩部分,硬件一般由高性能的微處理器和外圍接口電路組成,軟件一般由實時操作系統(tǒng)和其上運行的應(yīng)用軟件構(gòu)成,軟件和硬件之間由所謂的中間層連接。一般而言,嵌入式系統(tǒng)的架構(gòu)可以分成4個部分:處理器、存儲器、輸入輸出和軟件。ARM是全球領(lǐng)先的16/32位RISC微處理器的知識產(chǎn)權(quán)設(shè)計供應(yīng)商,ARM公司通過轉(zhuǎn)讓高性能、低成本、低功耗的RISC微處理器、外圍和系統(tǒng)芯片設(shè)計技術(shù)給合作伙伴,使他們能用這些技術(shù)來生產(chǎn)各具特色的芯片。目前應(yīng)用較多的是ARM7系列、ARM9系列、ARM9E系列、ARM10、ARM11系列和Intel的StrongARM、XScale系列。ARM7TDMI基于ARM的體系結(jié)構(gòu)V4版本,是目前低端的ARM核,具有廣泛的應(yīng)用,最顯著地是數(shù)字移動電話。本論文選擇的就是基于飛利浦公司的ARM7版本的LPC2138芯片。1.2國內(nèi)外研究現(xiàn)狀和發(fā)展趨勢從20世紀(jì)七十年代單片機的出現(xiàn)到各式各樣的嵌入式微處理器,微控制器的大規(guī)模應(yīng)用,嵌入式系統(tǒng)已經(jīng)有了近40年的發(fā)展歷史。嵌入式系統(tǒng)的出現(xiàn)最初是基于單片機的,它被用在一般的電子產(chǎn)品中。在進(jìn)入了21世紀(jì)后,由于移動通信設(shè)備的爆炸式增長,因此基于ARM的處理器也得到了廣泛的應(yīng)用。到目前為止,ARM處理器在手機、平板、路由器、車載以及其他電子領(lǐng)域都占據(jù)了主要地位。正因為它的巨大的市場前景,人們對基于ARM處理器的研究開發(fā)越來越重視。目前國內(nèi)外對于基于ARM7的開發(fā)技術(shù)已經(jīng)成熟,各種基于ARM7的實驗板也可以在網(wǎng)上輕松買到。在國內(nèi)的實驗板大多是基于Philips公司的LPC2000系列,各種資料和軟件都可以很容易找到。目前通過軟件仿真這一方法來開發(fā)基于ARM處理器的各種設(shè)備并未得到廣泛采用,隨著人們認(rèn)識的提高和對于資源節(jié)約的要求,通過軟件仿真形式來設(shè)計和開發(fā)各種電子設(shè)備將會成為主流。1.3課題研究的目的和意義雖然嵌入式系統(tǒng)在人們生活中已經(jīng)非常普遍,但是嵌入式系統(tǒng)并沒有得到足夠的重視。本文通過對ARM7的體系結(jié)構(gòu)、外圍接口電路和相關(guān)原理進(jìn)行深入研究,使得大家能夠?qū)RM7的真實面目有一個更加全面的認(rèn)識。同時,在介紹實驗項目的時候,有相關(guān)的寄存器介紹、程序代碼和電路原理圖,這樣大家能夠更快速直觀的了解ARM7的相關(guān)原理。由于本文是采用仿真設(shè)計,因此在學(xué)習(xí)ARM7的原理過程中,也學(xué)會了相軟件(Keil,Proteus)的使用。1.4軟件簡介1.4.1Keil簡介Keil公司是嵌入式開發(fā)工具專業(yè)制造商。Keil軟件公司的產(chǎn)品包括C編譯器、宏匯編器、實時內(nèi)核、調(diào)試器、模擬器、集成開發(fā)環(huán)境以及、ARM7/ARM9/Cortex-X、8051、251等系列微控制器仿真開發(fā)裝置。UV3平臺的人機交互界面非常人性化,且編譯器性能優(yōu)異,編譯出代碼的大小及執(zhí)行速率,系統(tǒng)運行穩(wěn)定度均領(lǐng)先于市場上同類產(chǎn)品。2009年2月發(fā)布KeilμVision4,KeilμVision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺監(jiān)視器,并提供了視覺上的表面對窗口位置的完全控制的任何地方。新的用戶界面可以更好地利用屏幕空間和更有效地組織多個窗口,提供一個整潔和高效的環(huán)境來開發(fā)應(yīng)用程序。新版本支持更多最新的ARM芯片,還添加了一些其他新功能。2011年3月ARM公司發(fā)布最新集成開發(fā)環(huán)境RealViewMDK開發(fā)工具中集成了最新版本的KeiluVision4,其編譯器、調(diào)試工具實現(xiàn)與ARM器件的最完美匹配。1.4.2Proteus簡介Proteus軟件是英國Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真微處理器及外圍器件。它是目前最好的仿真微處理器及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到愛好者、從事教學(xué)的教師和致力于嵌入式系統(tǒng)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到處理器與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。ISIS是Proteus系統(tǒng)的中心,它的功能有良好的用戶界面、自動走線、層次設(shè)計、總線支持、元件庫、可視封裝工具、復(fù)合元件和報告等。1.5論文研究的內(nèi)容本文的具體結(jié)構(gòu)如下:第一章:緒論。從應(yīng)用角度出發(fā)論述嵌入式系統(tǒng)概述、嵌入式系統(tǒng)研究現(xiàn)狀及發(fā)展趨勢、本課題的研究目的和意義及相關(guān)軟件介紹。第二章:ARM7的體系結(jié)構(gòu)。詳細(xì)的介紹了ARM7的體系結(jié)構(gòu)。第三章:ARM7的硬件結(jié)構(gòu)。全面介紹了ARM7的特征,其中包括存儲器尋址、系統(tǒng)控制模塊、存儲器加速模塊、中斷控制模塊和引腳連接模塊。第四章:基于ARM7的仿真實驗系統(tǒng)設(shè)計。設(shè)計了相關(guān)的系統(tǒng)界面和多個實驗項目。通過對外設(shè)的介紹,也設(shè)計了相關(guān)原理圖,編寫了相關(guān)代碼,以便大家能夠更好的理解ARM7的各個外設(shè)。結(jié)論:對本文做結(jié)論性概括。2ARM7的體系結(jié)構(gòu)2.1ARM7處理器結(jié)構(gòu)2.1.1ARM處理器結(jié)構(gòu)概述和流水線結(jié)構(gòu)ARM是一種精簡指令集計算機,它具有體積小、低功耗和高性能等特點。它的數(shù)據(jù)處理操作只針對寄存器的內(nèi)容,而不直接對存儲器進(jìn)行操作。由寄存器內(nèi)容和指令域共同決定簡單的尋址模式,每一條數(shù)據(jù)處理指令都對算術(shù)邏輯單元和移位器控制,以實現(xiàn)對算術(shù)邏輯單元和移位器的最大利用,地址自動增減和自動減少的尋址模式實現(xiàn)了程序循環(huán)的優(yōu)化。ARM處理器通過使用流水線結(jié)構(gòu)來增加處理器指令流的速度,這樣可以使得幾個操作同時進(jìn)行。ARM7處理器采用了三級流水線的結(jié)構(gòu):即取指、譯碼和執(zhí)行。2.2存儲器ARM處理器的指令和數(shù)據(jù)共用一條32位總線。只有裝載、存儲和交換指令可以對存儲器中的數(shù)據(jù)進(jìn)行訪問。數(shù)據(jù)可以是8位字節(jié)、16位半字或者32位字。ARM存儲器的接口設(shè)計可以使?jié)撛诘男阅艿玫綄崿F(xiàn),這樣減少了存儲器的使用。對速度有嚴(yán)格要求的控制信號使用流水線,這些控制信號使許多片內(nèi)和片外存儲器技術(shù)所支持的快速突發(fā)訪問模式得到應(yīng)用。2.3處理器ARM處理器內(nèi)核結(jié)構(gòu)包括32位ARM指令集和16位Thumb指令集,它具有兩種操作狀態(tài)。ARM狀態(tài)和Thumb狀態(tài)之間的轉(zhuǎn)換是使用BX指令來切換。LPC3128支持7種處理器模式:用戶模式、系統(tǒng)模式、管理模式、中止模式、未定義模式、中斷模式和快中斷模式。除用戶模式外,其他的均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許在特權(quán)模式下訪問。特權(quán)模式之間可以自由的切換,但是用戶模式不能直接切換到別的模式。表2.1處理器模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式快中斷(fiq)高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時,進(jìn)入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時,進(jìn)入此模式管理(svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)入此模式中止(abt)用于支持虛擬內(nèi)存和存儲器保護(hù)在ARM7TDMI中沒有用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常時進(jìn)入此模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶類似,但可直接切換到其它模式其中除了用戶模式和系統(tǒng)模式外的其它模式都稱為異常模式。異常模式除了可以通過程序切換進(jìn)入外,也可由特定的異常進(jìn)入。每種模式都有特定的寄存器,以避免異常退出時,用戶模式不可靠。2.4內(nèi)部寄存器2.4.1各模式可訪問寄存器ARM處理器內(nèi)部有37個用戶可見的寄存器:(1)31個通用32位寄存器,分別是R0~R15、R13_svc、R14_svc、R13_abt、R14_abt、R13_und、R14_und、R13_irq、R14_irq、R8_fiq~R14_fiq。(2)6個狀態(tài)寄存器,分別為CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq。各模式下的寄存器如表2.2為ARM狀態(tài)各模式下的寄存器。2.4.2通用寄存器數(shù)據(jù)或地址保存寄存器寄存器R0~R13為保存數(shù)據(jù)或地址的通用寄存器,其中寄存器R0~R7為未分組的寄存器。這意味著對于任何處理器模式,它們中的每一個都對應(yīng)于相同的32位物理寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊的用途,并且可用于任何使用通用寄存器的指令。表2.2ARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR14_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2、分組寄存器寄存器R8~R14為分組寄存器。它們所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式。幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器。寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器(R8~R12),另一個用于FIQ模式。FIQ所使用的這些寄存器可實現(xiàn)快速的中斷處理。3、堆棧指針R13寄存器R13通常作為堆棧指針SP。每個異常模式都有其自身的R13分組版本,它通常指向由異常模式所專用的堆棧。在入口處,異常處理程序通常將其他要使用的寄存器值保存到這個堆棧。通過返回時將這些值重裝到寄存器中,異常處理程序可確保異常發(fā)生時的程序狀態(tài)不會被破壞。4、鏈接寄存器寄存器R14在結(jié)構(gòu)上有兩種功能。在每種模式下,模式自身的R14版本用于保存子程序返回地址。當(dāng)使用BL或者BLX指令調(diào)用子程序時,R14設(shè)置為子程序返回地址。子程序返回通過將R14復(fù)制到程序計數(shù)器來實現(xiàn)。通常通過執(zhí)行下列指令的兩種方式:MOVPC,LRBXLR5、程序計數(shù)器程序計數(shù)器(PC)總是指向正在取指的指令。由于流水線的結(jié)構(gòu),PC指向正在執(zhí)行指令的下下一條指令。在順序執(zhí)行程序時,PC自動加上ARM指令集長度(4個字節(jié))或Thumb指令集長度(2個字節(jié))。2.5程序狀態(tài)寄存器CPSR所有模式共享一個程序狀態(tài)寄存器。在異常模式中,另外一個寄存器程序狀態(tài)保存寄存器SPSR可以被訪問。每種異常都有自己的SPSR,在進(jìn)入異常時,它保存CPSR的當(dāng)前值;在異常退出時,可通過它恢復(fù)CPSR。ARMTDMI內(nèi)核包含一個CPSR和5個供異常處理程序使用的SPSR。ARM7TDMI內(nèi)核所有處理器狀態(tài)都保存在CPSR中。當(dāng)前的操作處理器狀態(tài)位于CPSR當(dāng)中。CPSR包含:(1)4個條件代碼標(biāo)志(負(fù)N、零Z、進(jìn)位C和溢出V);(2)2個中斷禁止位,分別用于一種類型的中斷;(3)5個對當(dāng)前處理器模式進(jìn)行編碼的位;(4)1個用于指示當(dāng)前執(zhí)行指令(是ARM還是Thumb)的位。每個異常模式還帶有一個程序狀態(tài)保存寄存器,它用于保存任務(wù)在異常發(fā)生之前CPSR,其CPSR和SPSR通過特殊指令進(jìn)行訪問。2.5.1條件代碼標(biāo)志大多數(shù)數(shù)值處理指令可以選擇是否修改條件代碼標(biāo)志。一般來說,如果指令帶S后綴,則指令會修改條件代碼標(biāo)志,但有一些指令總是改變條件代碼標(biāo)志。N、Z、C和V位都是條件代碼標(biāo)志??梢酝ㄟ^算術(shù)和邏輯來設(shè)置這些位。這些標(biāo)志還可通過MSR和LDM指令進(jìn)行設(shè)置。ARM7TDMI處理器對這些位進(jìn)行測試以決定是否執(zhí)行一條指令。在ARM狀態(tài)中,所有指令都可按條件來執(zhí)行。在Thumb狀態(tài)中,只有分支指令可條件執(zhí)行。圖2.1CPSR寄存器格式2.5.2控制位CPSR的最低8位為控制位。它們分別是中斷禁止位、T位、模式位。當(dāng)發(fā)生異常時,控制位改變。當(dāng)處理器在一個特權(quán)模式下操作時,可用軟件操作這些位。2.6異常只要正常的程序被暫時中止,處理器就進(jìn)入異常模式。當(dāng)有一個異常時,在處理異常之前,ARM7TDMI內(nèi)核保存當(dāng)前處理器的狀態(tài),當(dāng)處理完異常后,再恢復(fù)原來的程序。2.6.1進(jìn)入異常當(dāng)處理異常時,ARM7TDMI內(nèi)核會在適當(dāng)?shù)腖R中保存下一條指令的地址。當(dāng)異常入口來自于ARM狀態(tài)下,將下一條指令的地址復(fù)制到LR中(當(dāng)前PC+4還是+8取決于偏移量)。不管是ARM還是在Thumb狀態(tài)下,過程都是一樣的。(1)將CPSR復(fù)制到適當(dāng)?shù)腟PSR;(2)根據(jù)異常將CPSR模式強制設(shè)為某一值;(3)強制PC從相關(guān)的異常向量取指。ARM7TDMI內(nèi)核在中斷異常時,總是置位中斷禁止標(biāo)志,這樣可以防止不受控制的中斷嵌套。異??偸窃贏RM狀態(tài)中進(jìn)行處理。當(dāng)處理器處于Thumb狀態(tài)時發(fā)生了異常,將向量地址裝到PC后切換到ARM狀態(tài)執(zhí)行。2.6.2退出異常當(dāng)異常結(jié)束時,異常處理程序應(yīng)當(dāng):(1)將LR中的值減去偏移量后移入PC;(2)將SPSR的值復(fù)制回CPSR;(3)清零在入口處置位的中斷禁止標(biāo)志。2.6.3快速中斷請求在ARM狀態(tài)中,快中斷模式有8個專用的寄存器,可用來滿足寄存器保護(hù)的需要,將FIQ信號拉低可實現(xiàn)外部產(chǎn)生FIQ。不管異常來自于ARM還是Thumb,都會通過這樣的方式返回:SUBSPC,R14_fiq,#4 2.6.4中斷請求中斷請求IRQ異常是一個由輸入端的低電平所產(chǎn)生的正常中斷。IRQ的優(yōu)先級低于FIQ,對于FIQ序列它是被屏蔽的。從中斷返回:SUBSPC,R14_irq,#42.6.5中止中止表示對當(dāng)前存儲器的訪問不能完成,這是通過外部ABORT輸入指示的。有兩種類型的中止:預(yù)取中止和數(shù)據(jù)中止。預(yù)取中止當(dāng)發(fā)生預(yù)取中止時,ARM7TDMI內(nèi)核將預(yù)取的指令標(biāo)志為無效,但在指令到達(dá)流水線的執(zhí)行階段時才進(jìn)入異常。如果指令在流水線中因為發(fā)生分支而沒有被執(zhí)行,則中止將不會發(fā)生。處理程序的指令如下:SUBSPC,R14_abt,#4數(shù)據(jù)中止發(fā)生在數(shù)據(jù)中止時,根據(jù)指令的類型產(chǎn)生不同的動作:(1)數(shù)據(jù)轉(zhuǎn)移指令LDR、STR回寫到被修改的基址寄存器。(2)交換指令SWP中止好像沒有被執(zhí)行過一樣。(3)塊數(shù)據(jù)轉(zhuǎn)移指令LDM、STM完成回寫被設(shè)置時,基址寄存器被更新。中止的機制使指令分頁的虛擬存儲器系統(tǒng)能夠?qū)崿F(xiàn)。在這樣的一個系統(tǒng)中,處理器允許產(chǎn)生仲裁地址。當(dāng)某一地址的數(shù)據(jù)無法訪問時,存儲器管理單元MMU通知產(chǎn)生了中止。2.6.6軟件中斷指令軟件中斷SWI用于進(jìn)入管理模式,通常用于請求一個特定的管理函數(shù)。SWI處理程序返回時執(zhí)行下面指令:MOVSPC,R14_svc2.6.7未定義的指令當(dāng)ARM7TDMI處理器遇到一條自己和系統(tǒng)內(nèi)任何協(xié)處理器都無法處理的指令時,ARM7內(nèi)核執(zhí)行未定義指令異常。MOVSPC,R14_und2.7復(fù)位當(dāng)復(fù)位信號被拉低時,ARM7TDMI處理器放棄正在執(zhí)行的指令。當(dāng)處理器再次變?yōu)楦唠娖綍r,ARM處理器執(zhí)行下列操作:(1)強制M[4:0]變?yōu)閎10011(管理模式);(2)置位CPSR中的I和F位;(3)清零CPSR中的T位;(4)強制PC從地址0x00處開始取指;(5)返回到ARM狀態(tài)并恢復(fù)執(zhí)行。在復(fù)位后,除了PC和SPSR之外的所有寄存器值都不確定。2.8存儲器及存儲器映射I/OARM7TDMI處理器采用馮·諾依曼結(jié)構(gòu),指令和數(shù)據(jù)共用一條32位數(shù)據(jù)總線。只有裝載、保存和交換指令能訪問存儲器中的數(shù)據(jù)。ARM7的規(guī)范僅定義了處理器核與存儲器系統(tǒng)之間的信號及時序,而現(xiàn)實的芯片一般在外部總線與處理器核的局部總線之間有一個存儲器管理部件將局部總線的信號和時序裝換為現(xiàn)實的外部總線和時序。ARM7TDMI處理器可以將存儲器中的字以大端格式或小端格式存儲。2.8.1地址空間ARM結(jié)構(gòu)使用單個平面的8位字節(jié)地址空間。字節(jié)地址按照無符號數(shù)排列,0到-1。地址計算通常通過普通的整數(shù)指令來實現(xiàn)。這意味著如果地址向上或向下溢出地址空間,通常都會發(fā)生翻轉(zhuǎn),也就是說計算的結(jié)果以為模。2.8.2存儲器格式存儲器使用下列兩種映射機制中的一種:小端格式存儲系統(tǒng)在小端格式中,一個字當(dāng)中最低地址的字節(jié)被看作是最低位字節(jié),最高地址字節(jié)被看作是最高位字節(jié)。因此,存儲器系統(tǒng)字節(jié)0連接到數(shù)據(jù)線0~7。大端格式存儲系統(tǒng)在大端格式中,ARM7TDMI處理器將最高位字節(jié)保存在最低地址字節(jié),最低位字節(jié)保存在最高地址字節(jié)。因此,存儲器系統(tǒng)字節(jié)0連接到數(shù)據(jù)線24~31。一個具體基于ARM的芯片可能只支持小端存儲器系統(tǒng),也可能只支持大存儲器系統(tǒng),還有可能兩者都支持。ARM指令集不包含任何直接選擇大小端的指令。但是一個同時支持大小端的基于ARM的芯片可以在硬件上配置,以匹配存儲器系統(tǒng)所使用的規(guī)則。2.9尋址方式尋址方式是處理器執(zhí)行指令時尋找真實操作數(shù)地址的方式。ARM處理器支持9種尋址方式。其中包括寄存器尋址、立即尋址、寄存器移位尋址、寄存器間接尋址、基址尋址、多寄存器尋址、堆棧尋址、塊拷貝尋址、相對尋址。2.10ARM7指令集ARM7TDMI有兩種指令集:32位ARM指令集和16位Thumb指令集。每種都有自己的優(yōu)缺點和使用范圍。其中ARM指令集可分為5大類指令:分支指令、數(shù)據(jù)處理指令、加載和存儲指令、協(xié)處理器指令和雜項指令。而Thumb指令集包括分支指令、數(shù)據(jù)處理指令、寄存器加載與存儲指令和異常指令。16位結(jié)構(gòu)比32位結(jié)構(gòu)具有更高的代碼密度,并且超多32位結(jié)果50%的性能。Thumb非常適用于那些只有有限的存儲器帶寬并且代碼密度很高的嵌入式應(yīng)用。3ARM7的硬件結(jié)構(gòu)3.1LPC2138簡介LPC2138是基于一個支持實時仿真和跟蹤的32位ARM7TDMI的CPU微控制器,并帶有512KB高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使32位代碼能夠在最大時鐘速率下運行。對代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用1個16位Thumb模式將代碼規(guī)模降低30%以上,而性能的損失卻很小。較小的封裝和極低的功耗使LPC2138可理想地用于小型系統(tǒng)中,如訪問控制和POS機。寬范圍的串行通信接口和片內(nèi)32KB的SRAM,使LPC2138非常適用于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、軟Modem等,可為它們提供巨大的緩沖區(qū)間和強大的處理能力。4個32位定時器、1個10位8路ADC、1個10位DAC、6個PWM通道、多達(dá)47個GPIO、9個邊沿或電平觸發(fā)的外部中斷、看門狗和UART等,使它們非常適合于工業(yè)控制和醫(yī)療系統(tǒng)。3.1.1結(jié)構(gòu)LPC2138包含一個支持仿真的ARM7TDMI-SCPU與片內(nèi)存儲器控制器接口的ARM7局部總線、與中斷控制器接口的AMBA高性能總線AHB和連接片內(nèi)外設(shè)功能的VLSI外設(shè)總線VPB。AHB和VPB通過橋相連,LPC2138外設(shè)功能都連接到VPB總線。片內(nèi)外設(shè)與器件引腳的連接由引腳連接模塊控制,以符合外設(shè)功能與引腳在特定應(yīng)用中的需求。片內(nèi)Flash程序存儲器LPC2138集成了一個512KB的Flash存儲器系統(tǒng)。該存儲器系統(tǒng)可用作代碼和數(shù)據(jù)的存儲。對Flash存儲器的編程可通過幾種方法來實現(xiàn):通過內(nèi)置的串行JTAG接口,或者在應(yīng)用編程的應(yīng)用程序,也可以在應(yīng)用程序運行時對Flash進(jìn)行擦除或編程,這樣就為數(shù)據(jù)存儲和現(xiàn)場固件的升級都帶來了極大的靈活性。片內(nèi)靜態(tài)RAMLPC2138含有32KB的靜態(tài)RAM,可用作代碼和數(shù)據(jù)的存儲。SRAM支持8位、16位和32位的訪問。LPC2138的SRAM是一個字節(jié)尋址的存儲器。對存儲器進(jìn)行字和半字訪問時,將忽略地址對準(zhǔn),訪問被尋址的自然對準(zhǔn)值。因此,有效的讀/寫操作要求半字?jǐn)?shù)據(jù)訪問的地址線0為0;字?jǐn)?shù)據(jù)訪問的地址線0和1都為0。SRAM控制器包含一個回寫緩沖區(qū),用于防止CPU在連續(xù)操作時停止運行。回寫緩沖區(qū)總是保存著軟件發(fā)送到SRAM的最后一字節(jié)。該數(shù)據(jù)只有在軟件請求下一次寫操作時才寫入SRAM。如果發(fā)生芯片復(fù)位,實際的SRAM不會反映最近一次的寫請求。通過對一個單元執(zhí)行兩次相同的寫操作,可保證復(fù)位后數(shù)據(jù)的寫入。3.2存儲器尋址3.2.1存儲器映射LPC2138基于ARM7TDMI-S核,采用馮·諾依曼結(jié)構(gòu),數(shù)據(jù)和指令混合編址,只有加載、存儲和交換指令可以訪問存儲器中的數(shù)據(jù),系統(tǒng)包含幾個不同的存儲器組。外設(shè)存儲空間的映射包括AHB外設(shè)和VPB外設(shè)區(qū)域,AHB和VPB外設(shè)區(qū)域都為2MB,可各自分配最多128個外設(shè),每個外設(shè)空間的規(guī)格都為16KB,這樣可簡化每個外設(shè)的地址譯碼。3.2.2LPC2138存儲器重新映射和BootBlockLPC2138存儲器映射的基本概念是每個存儲器組在存儲器映射中都有一個物理上的位置,它是一個可寫入程序代碼的地址范圍,每一個存儲器空間的容量都永久固定在同一個位置,不需要將部分代碼設(shè)計成在不同的地址范圍內(nèi)運行。中斷向量位置位于ARM7處理器上(地址在0x00000000~0x0000001C)。為了在不同的操作模式下使用中斷,BootBlock和SRAM空間的一小部分需要重新映射,如表3.1。為了與將來器件相兼容,整個BootBlock都被映射到片內(nèi)存儲器的頂端。在這種方式下,使用較大或較小的Flash模塊都不需要改變BootBlock的位置或改變其中斷向量的映射。表3.1中斷向量表地址異常0x00000000復(fù)位0x00000004未定義指令0x00000008軟件中斷0x0000000C預(yù)取指中止0x00000010數(shù)據(jù)中止0x00000014保留0x00000018IRQ0x0000001CFIQ表3.2操作模式模式激活用途BootLoader模式由任意復(fù)位硬件激活在任何復(fù)位后BootLoader都會執(zhí)行,BootBlock中斷向量映射到存儲器底部以允許處理異常并在Boot加載中使用中斷用戶Flash模式由Boot代碼軟件激活當(dāng)在存儲器中一個有效的用戶程序標(biāo)識被識別時并且Boot裝載操作未被執(zhí)行時,由Boot裝載程序激活,中斷向量沒有重新映射,位于Flash存儲器底部用戶RAM模式由用戶程序軟件激活由用戶程序激活,中斷向量重新映射到靜態(tài)RAM的底部存儲器重新映射的部分允許在不同的模式下處理中斷,它包括中斷向量區(qū)和額外的32字節(jié),一共64字節(jié)。重新映射的代碼位置與地址0x00000000~0x0000003F重疊。包含在SRAM、外部存儲器和BootBlock中的向量必須包含跳轉(zhuǎn)到實際中斷處理程序的分支或者其他執(zhí)行跳轉(zhuǎn)到中斷處理程序的跳轉(zhuǎn)指令。使用存儲器重映射的原因有:(1)使Flash存儲器中的FIQ處理程序不必考慮由于重映射所導(dǎo)致的存儲器邊界問題;(2)用來處理代碼空間中邊界仲裁的SRAM和BootBlock向量使用大大減少;(3)為超過單字轉(zhuǎn)移指令范圍的跳轉(zhuǎn)提供空間來保存常量。 3.3系統(tǒng)控制模塊系統(tǒng)控制模塊包括晶體振蕩器、復(fù)位、外部中斷輸入、存儲器映射控制、PLL、VPB分頻器、功率控制和喚醒定時器。3.3.1晶體振蕩器對于LPC2138,如果是從XTAL1腳輸入占空比因數(shù)為50-50的時鐘信號,則時鐘頻率在1~50MHz范圍內(nèi);如果是使用外部晶振,則微控制器的內(nèi)部振蕩電路僅支持1~30MHz的外部晶振。如果需要使用片內(nèi)PLL系統(tǒng)或引導(dǎo)裝載程序(ISP),輸入時鐘頻率被限制在10~25MHz。LPC2138的振蕩器可工作在兩種模式下:從模式和振蕩模式。3.3.2外部中斷輸入LPC2138有4個外部中斷輸入,外部中斷輸入可將處理器從掉電模式中喚醒。外部中斷功能具有4個相關(guān)的寄存器,分別為EXTAINT、EXTWAKE、EXTMODE和EXTPOLAR。其中EXTINT寄存器包含中斷標(biāo)志;EXTWAKE寄存器包含使能喚醒位,可使能獨立的外部中斷輸入將處理器從掉電模式喚醒;EXTMODE和EXTPOLAR寄存器用來指定引腳使用電平或邊沿觸發(fā)方式。3.3.3存儲器映射控制存儲器映射控制用于改變從地址0x00000000開始的中斷向量,這就允許運行于不同存儲器空間的代碼對中斷進(jìn)行控制。使用的寄存器是MEMMAP寄存器。存儲器映射控制只是選擇處理ARM異常必須的是哪個數(shù)據(jù)源中的一個。例如,每當(dāng)產(chǎn)生一個軟件中斷請求,ARM內(nèi)核就從0x00000008的讀取出32位數(shù)據(jù)。這就意味著:當(dāng)MAMMAP[1:0]=10時,從0x00000008的讀取是對0x40000008單元進(jìn)行操作;如果MAMMAP[1:0]=01時,從0x00000008的讀取是對片內(nèi)Flash單元0x00000008進(jìn)行操作;如果MAMMAP[1:0]=00時,從0x00000008的讀取是對0x7FFE008單元的數(shù)據(jù)進(jìn)行操作。3.3.4PLLPLL僅接受10~25MHz的輸入時鐘頻率,輸入頻率通過一個電流控制振蕩器(CCO)倍增到范圍10~60MHz,倍頻器可以是從1到32的整數(shù)(由于CPU最高頻率的限制,LPC2138的倍頻值不能高于6)。CCO的操作頻率范圍為156~320MHz,因此在環(huán)中有一個額外的分頻器,使PLL提供所需要的輸出頻率時CCO保持依然在允許頻率范圍內(nèi)。輸出分頻器可設(shè)置為2,4,8或16分頻。PLL的激活由PLLCON寄存器控制。PLL倍頻器和分頻器的值由PLLCDG寄存器控制。為了防止PLL參數(shù)發(fā)生意外改變或PLL失效,對這兩個寄存器進(jìn)行了保護(hù)。當(dāng)PLL提供芯片時鐘時,由于芯片的所有操作,包括看門狗定時器都依賴于它,因此PLL設(shè)置的意外改變將導(dǎo)致CPU執(zhí)行不期望的動作。對它們的保護(hù)是一個類似于操作看門狗定時器的代碼序列實現(xiàn)。PLL在芯片復(fù)位和進(jìn)入掉電模式時被關(guān)閉并旁路。PLL只能通過軟件使能,程序必須在配置并激活PLL后等待其鎖定,然后再連接PLL。其中,PLL包含的寄存器有PLL控制寄存器、PLL配置寄存器、PLLSTAT狀態(tài)寄存器和PLLFEED饋送寄存器。PLL頻率計算需要使用的包括晶振頻率(Fosc)、PLL電流控制振蕩器的頻率(Fcco)、處理器的時鐘頻率(Fcclk)、PLLCFG寄存器中MSEL位的倍頻值(M)、PLLCFG寄存器中PSEL位的分頻值(P)。PLL輸出頻率如下:(3.3.1)CCO頻率計算如下:(3.3.2)3.3.5功率控制LPC2138支持兩種節(jié)電模式:空閑模式和掉電模式。在空閑模式下,指令的執(zhí)行被掛起直到發(fā)生復(fù)位或中斷為止。外設(shè)功能在空閑模式下繼續(xù)保持并可產(chǎn)生中斷使處理器恢復(fù)運行??臻e模式下的處理器、存儲器系統(tǒng)和相關(guān)控制器以及內(nèi)部總線不再消耗功率。在掉電模式下,振蕩器關(guān)閉,這樣芯片沒有內(nèi)部時鐘。處理器狀態(tài)和寄存器、外設(shè)寄存器以及內(nèi)部SRAM值在掉電模式下被保持。芯片引腳的裸機電平被保持靜態(tài)。復(fù)位或特定的不需要時鐘仍能工作的中斷可終止掉電模式并使芯片恢復(fù)正常運行。由于掉電模式使所有的動態(tài)操作都掛起,因此芯片的功耗降低到幾乎為零。掉電或空閑模式的進(jìn)入是與程序執(zhí)行同步進(jìn)行的。通過中斷喚醒掉電模式不會使指令丟失、不完整或重復(fù)。其中,使用的寄存器包括PCON功率控制寄存器和PCONP外設(shè)功率控制寄存器。3.3.6復(fù)位LPC2138有兩個復(fù)位源:引腳復(fù)位和看門狗復(fù)位。復(fù)位引腳為施密特觸發(fā)輸入引腳,帶有一個額外的干擾濾波器。它可以忽略非常短的外部復(fù)位脈沖。它決定了芯片復(fù)位所需要的最短時間。外部復(fù)位和內(nèi)部WDT復(fù)位有一些小的差別。外部復(fù)位使特定引腳被鎖定以實現(xiàn)配置,內(nèi)部WDT則無此功能。當(dāng)復(fù)位后執(zhí)行BootLoader時,片內(nèi)BootLoader對P0.14進(jìn)行檢測。3.3.7VPB分頻器VPB分頻器決定處理器時鐘(cclk)與外設(shè)時鐘之間的關(guān)系。它具有兩個用途,一個是通過VPB總線為外設(shè)提供所需要的pclk時鐘,以便外設(shè)在合適的頻率下工作。另一個用于就是在應(yīng)用于不需要任何外設(shè)全速運行時,使功耗降低。它使用的寄存器是VPBDIV分頻器寄存器。3.3.8喚醒定時器喚醒定時器的用途是確保振蕩器和芯片所需要的其它模擬電路在處理器開始執(zhí)行指令之前正確工作。喚醒定時器通過檢測晶振是否能可靠地開始代碼的執(zhí)行來對其進(jìn)行監(jiān)視。當(dāng)給芯片加電或某個事件使芯片退出掉電模式,振蕩器需要一段時間來產(chǎn)生足夠振幅的信號驅(qū)動時鐘邏輯。一旦檢測到一個時鐘,則喚醒定時器對4096個時鐘計數(shù),在這段時間內(nèi),F(xiàn)lash進(jìn)行初始化??傊琇PC2138喚醒定時器是根據(jù)晶振的情況來執(zhí)行最短時間復(fù)位,它在從掉電模式中喚醒或任何復(fù)位產(chǎn)生時激活。3.4存儲器加速模塊存儲器加速模塊MAM將下一個需要的ARM指令鎖存起來,以防止CPU取指暫停。MAM所使用的方法是將Flash存儲器分成兩組,每一組都可獨立進(jìn)行訪問,這兩個Flash組都有自己的預(yù)取指緩沖區(qū)和分支跟蹤緩沖區(qū)。當(dāng)一個組的預(yù)取指緩沖區(qū)和分支跟蹤緩沖區(qū)不能滿足指令取指的需要并且預(yù)取指還沒有啟動時,兩個組的分支跟蹤緩沖區(qū)捕獲兩個128位的Flash數(shù)據(jù)行。在MAM啟動的預(yù)取指周期結(jié)束時,每個預(yù)取指緩沖區(qū)從它自身的Flash組捕獲一個128位指令行。若關(guān)閉MAM,所有的存儲器請求都會直接對Flash操作。每個128位值包括了4個32位ARM指令或8個16位Thumb指令。在連續(xù)執(zhí)行代碼時,通常一個Flash組包含當(dāng)前正在取指的指令和包含該指令的整個Flash行;另一個Flash組則包含正在預(yù)取指下一個連續(xù)的代碼行。當(dāng)一個代碼行傳送完最后一條指令時,包含它的Flash組開始對下一行進(jìn)行取值。結(jié)構(gòu)MAM分為以下幾個功能塊:為每個存儲器組提供Flash地址鎖存;兩個Flash存儲器組;指令鎖存,數(shù)據(jù)鎖存,地址比較鎖存;等待邏輯。Flash存儲器組兩個Flash組實現(xiàn)了并行訪問并消除了連續(xù)訪問延時的缺點。Flash編程功能不受存儲器加速器模塊的控制,而是作為一個獨立的功能進(jìn)行處理。指令鎖存和數(shù)據(jù)鎖存指令和數(shù)據(jù)的訪問由存儲器加速器模塊分別進(jìn)行處理。每個Flash組有兩套128位指令鎖存和12位比較地址鎖存。其中一套是分支跟蹤緩沖區(qū),用于保存最近一次指令丟失后的數(shù)據(jù)和比較地址;另一套是預(yù)取指緩沖區(qū),用于保存預(yù)取指的數(shù)據(jù)和比較地址。Flash編程問題在編程和擦除操作過程中不允許訪問Flash存儲器。如果在Flash模塊忙時,存儲器請求訪問Flash地址,MAM就會強制CPU等待。為了防止從Flash存儲器中讀取無效的數(shù)據(jù),MAM使鎖存在Flash編程或擦除操作開始時自動失效。在Flash操作結(jié)束后,任何對Flash地址的讀操作將啟動新的取指操作。其中MAM具有三種操作模式,MAM關(guān)閉、MAM部分使能和MAM全部使能。在復(fù)位后,MAM默認(rèn)為禁止?fàn)顟B(tài),軟件可以隨時將存儲器訪問加速打開或關(guān)閉。使用的寄存器有MAMCR存儲器加速器模塊控制寄存器和MAMTIM存儲器加速器定時寄存器。3.5中斷控制器向量中斷控制器具有32個中斷請求輸入,可將其分為三類:快速中斷請求FIQ、向量中斷請求IRQ和非向量中斷請求IRQ。其中FIQ的優(yōu)先級最高,其次是向量IRQ,最后才是非向量IRQ。向量IRQ可分配32個請求中的16個。其中任何一個都可分配到16個向量IRQslot中的任意一個,其中slot0具有最高的優(yōu)先級。如果用于代碼片內(nèi)RAM中運行并且應(yīng)用程序使用了中斷,中斷向量必須重新映射到Flash地址0x00000000。這樣做是因為所有的異常向量都位于地址0x00000000及上面。通過配置MEMMAP為用戶RAM模式來實現(xiàn)這一點。另外,應(yīng)用程序代碼編譯鏈接時應(yīng)該使用中斷向量表裝載到地址0x40000000。在中斷服務(wù)程序執(zhí)行完畢后,對外設(shè)中斷標(biāo)志的清零將會對VIC寄存器當(dāng)中的對應(yīng)位產(chǎn)生影響。為了能夠服務(wù)下次中斷,必須在中斷返回之前對VICVectAddr寄存器執(zhí)行一次寫操作(一般為0),讀寫操作將清零內(nèi)部中斷優(yōu)先級硬件當(dāng)中的標(biāo)志。為了禁止VIC中斷,需要清零VICIntEnable寄存器中的相應(yīng)位,這可以通過寫該寄存器來完成。如果看門狗在溢出或無效喂狗時產(chǎn)生中斷,那么無法清除中斷。唯一的方法是通過VICIntClr禁止VIC中斷,然后再中斷返回。3.6引腳連接模塊引腳連接模塊使同一個引腳具有多種功能,即引腳復(fù)用,通過配置相關(guān)寄存器控制多路開關(guān)來連接引腳與片內(nèi)外設(shè)。外設(shè)在激活和任何相關(guān)中斷使能之前必須連接到適當(dāng)?shù)囊_,任何使能的外設(shè)功能如果沒有映射到相關(guān)的引腳,則被認(rèn)為是無效的。引腳連接模塊包含3個可以進(jìn)行讀/寫的引腳功能選擇寄存器:PINSEL0,PINSEL1和PINSEL2。4基于ARM7的仿真實驗系統(tǒng)設(shè)計本實驗系統(tǒng)主要采用VB、Keil和Proteus軟件集成設(shè)計,其中包括用VB設(shè)計的實驗系統(tǒng)主界面模塊和各實驗項目模塊。其中實驗項目設(shè)計包括相關(guān)寄存器簡介、Proteus設(shè)計的電路仿真模塊和用Keil設(shè)計的程序模塊,系統(tǒng)目前設(shè)計了6個實驗項目,分別是GPIO實驗、外部中斷輸入實驗、定時器實驗、UART實驗、ADC轉(zhuǎn)換器實驗和看門狗定時器實驗。4.1系統(tǒng)界面設(shè)計(1)系統(tǒng)界面的設(shè)計就是通過用VB軟件設(shè)計一個窗體,將各個實驗項目的電路仿真模塊分別連接到窗體上。連接好的各個電路仿真圖都可以通過點擊控件就可以直接打開相關(guān)的Proteus圖,這樣為講解相關(guān)實驗時提供了方便,同時也能綜合的體現(xiàn)ARM7的主要外設(shè)。系統(tǒng)界面設(shè)計的步驟如下。打開VB6.0軟件,在彈出的窗體中選擇“標(biāo)準(zhǔn)EXE”,如下圖。圖4.1新建工程功能選擇圖(2)在窗體中放置六個控件CommandButton,放置好了之后,分別修改屬性將“Caption”改為相關(guān)實驗項目的名稱,然后雙擊控件,編寫相關(guān)的代碼。下面的例子是以GPIO的代碼為例的。PrivateSubCommand1_Click()IfDir("C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign")<>""ThenOpen"C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign"ForOutputAs#2Shell"C:\WINDOWS\system32\BIN\ISIS.EXE"+""+"C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign"ElseOpen"C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign"ForOutpu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村房屋建房合同范例
- 保姆和家政合同范本
- 兒童樂園實施合同范本
- 前期工程門窗合同范本
- 公地共用合同范本
- 傳媒主播合同范本
- 農(nóng)業(yè)抵押合同范本
- 義診合作協(xié)議合同范本
- 2025年標(biāo)準(zhǔn)鍵盤行業(yè)深度研究分析報告
- 寫結(jié)婚合同范例
- 《行政倫理學(xué)教程(第四版)》課件 第7、8章?行政人格、行政組織倫理
- 2024年江蘇蘇??毓杉瘓F(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 2023年4月自考00504藝術(shù)概論試題及答案含解析
- 美麗的大自然(教案)2023-2024學(xué)年美術(shù)一年級下冊
- 2024年低壓電工考試題庫(試題含答案)
- 成都特色民俗課件
- 地質(zhì)勘探行業(yè)分析
- 花城版音樂四下-第四課-認(rèn)知音樂節(jié)奏(教案)
- 寵物醫(yī)院員工手冊
- 2024年高考英語讀后續(xù)寫高分寶典專題08讀后續(xù)寫肢體動作描寫積累1(詞-句-文)講義
- 商業(yè)與公積金貸款政策
評論
0/150
提交評論