




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1、 嵌入式微處理器體系結(jié)構(gòu)嵌入式微處理器的體系結(jié)構(gòu)可以采用馮·諾依曼體系結(jié)構(gòu)或哈佛體系結(jié)構(gòu),指令系統(tǒng)可以選用精簡指令系統(tǒng)RISC和復(fù)雜指令集系統(tǒng)CISC。1、 馮·諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu);(1)馮·諾依曼結(jié)構(gòu)的計算機由CPU和存儲器構(gòu)成,其程序和數(shù)據(jù)共用一個存儲空間,程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存儲器的不同物理位置;采用單一的地址及數(shù)據(jù)總線,程序指令和數(shù)據(jù)的寬度相同。程序計數(shù)器(PC)是CPU內(nèi)部指示指令和數(shù)據(jù)的存儲位置的寄存器。(2)哈佛結(jié)構(gòu)的主要特點是將程序和數(shù)據(jù)存儲在不同的存儲空間中,即程序存儲器和數(shù)據(jù)存儲器是兩個相互獨立的存儲器,每個存
2、儲器獨立編址、獨立訪問。提高執(zhí)行速度,提高數(shù)據(jù)的吞吐率,具有較高的執(zhí)行效率。2、CISC和RISC類別 CISC RISC指令系統(tǒng)指令數(shù)量很多 較少,通常少于100執(zhí)行時間有些指令執(zhí)行時間很長, 如整塊的存儲器內(nèi)容拷貝; 或?qū)⒍鄠€寄存器的內(nèi)容 拷貝到存貯器 沒有較長執(zhí)行時間的指令編碼長度編碼長度可變,1-15字節(jié) 編碼長度固定,通常為4個字節(jié)尋址方式尋址方式多樣 簡單尋址操作 可以對存儲器和寄存器 只能對寄存器對行算術(shù)和邏輯操作, 進行算術(shù)和邏輯操作 Load/Store體系結(jié)構(gòu)編譯 難以用優(yōu)化編譯器生成 高效的目標代碼程序 采用優(yōu)化編譯技術(shù),生成高效的目標代碼程序 二、ARM狀態(tài)各模式下的寄
3、存器1、所有的37個寄存器,分成兩大類: (1)31個通用32位寄存器; (2) 6個狀態(tài)寄存器。 2、R0R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。3、寄存器R8R14為分組寄存器。它們所對應(yīng)的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器4、寄存器R8R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度5、寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。3、
4、處理器工作模式1、 ARM處理器有7種工作模式; usr(用戶模式):ARM處理器正常程序執(zhí)行模式。 fiq(快速中斷模式):用于高速數(shù)據(jù)傳輸或通道處理 1 / 17 irq(外部中斷模式):用于通用的中斷處理 svc(管理模式):操作系統(tǒng)使用的保護模式 abt (數(shù)據(jù)訪問終止模式): 當數(shù)據(jù)或指令預(yù)取終止時進入該模式,可用于虛擬存儲及存儲保護。 sys(系統(tǒng)模式): 運行具有特權(quán)的操作系統(tǒng)任務(wù)。 und(未定義指令中止模式):當未定義的指令執(zhí)行時進入該模式,可用于支持硬件協(xié)處理器的軟件仿真。 ARM微處理器的運行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。 除用戶模式以外,其余的
5、所有6種模式稱之為非用戶模式,或特權(quán)模式(Privileged Modes);其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式(Exception Modes),常用于處理中斷或異常,以及需要訪問受保護的系統(tǒng)資源等情況。2、除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部全部系統(tǒng)資源和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。3、此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。4、 ARM異常處理1、當異常產(chǎn)生時, ARM 核: (1)拷貝 CPSR 到 SPSR_<mode> (2)設(shè)置適當?shù)?CPSR 位: a.改變處理器狀態(tài)進
6、入 ARM 態(tài) b.改變處理器模式進入相應(yīng)的異常模式 c.設(shè)置中斷禁止位禁止相應(yīng)中斷 (如需要) (3)保存返回地址到 LR_<mode> (4)設(shè)置 PC 為相應(yīng)的異常向量地址2、返回時, 異常處理程序需要: (1)從 SPSR_<mode>恢復(fù)CPSR (2)從LR_<mode>恢復(fù)PC (3)注意:這些操作只能在 ARM 態(tài)執(zhí)行.5、 ARM指令集1、 ARM尋址方式:掌握ARM微處理器9種尋址方式的特點。 (1)寄存器尋址 操作數(shù)的值在寄存器中,指令中的地址碼字段給出的是寄存器編號,寄存器的內(nèi)容是操作數(shù),指令執(zhí)行時直接取出寄存器值操作。 例如指令:
7、MOV R1,R2 ;R1R2 SUB R0,R1,R2 ;R0R1- R2(2)立即尋址 在立即尋址指令中數(shù)據(jù)就包含在指令當中,立即尋址指令的操作碼字段后面的地址碼部分就是操作數(shù)本身,取出指令也就取出了可以立即使用的操作數(shù)(也稱為立即數(shù))。立即數(shù)要以“”為前綴,表示16進制數(shù)值時以“0x”表示。 例如指令: ADD R0,R0,#1 ;R0R0 + 1 MOV R0,#0xff00 ;R00xff00 (3)寄存器移位尋址 寄存器移位尋址是ARM指令集特有的尋址方式。第2個寄存器操作數(shù)在與第1個操作數(shù)結(jié)合之前,先進行移位操作。 例如指令: MOV R0,R2,LSL #3 ;R2的值左移3位
8、,結(jié)果放入R0,即R0=R2 * 8 ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相與操作,結(jié)果放入R1可采用的移位操作如下:LSL:邏輯左移(Logical Shift Left),寄存器中字的低端空出的位補0。LSR:邏輯右移(Logical Shift Right),寄存器中字的高端空出的位補0。ASR:算術(shù)右移(Arithmetic Shift Right),移位過程中保持符號位不變,即如果源操作數(shù)為正數(shù),則字的高端空出的位補0,否則補1ROR:循環(huán)右移(Rotate Right),由字的低端移出的位填入字的高端空出的位RRX:帶擴展的循環(huán)右移(Rotat
9、e Right extended by 1 place),操作數(shù)右移一位,高端空出的位用原C 標志值填充。 (4)寄存器間接尋址 指令中的地址碼給出的是一個通用寄存器編號,所需要的操作數(shù)保存在寄存器指定地址的存儲單元中,即寄存器為操作數(shù)的地址指針,操作數(shù)存放在存儲器中。 例如指令 :LDR R0,R1 ;R0R1(將R1中的數(shù)值作為地址,取出此地址中的數(shù)據(jù)保存在R0中)STR R0,R1 ;R1 R0 (5)變址尋址 變址尋址是將基址寄存器的內(nèi)容與指令中給出的偏移量相加,形成操作數(shù)的有效地址,變址尋址用于訪問基址附近的存儲單元,常用于查表,數(shù)組操作,功能部件寄存器訪問等。例如指令: LDR R
10、2,R3,#4 ;R2R3 + 4(將R3中的數(shù)值加4作為地址,取出此地址的 數(shù)值保存在R2 中) STR R1,R0,#-2 ;R0-2 R1(將R0中的數(shù)值減2作為地址,把R1中的內(nèi)容保存到此地址位置) (6)多寄存器尋址(LDM/STM) LDM/STM指令可以把存儲器中的一個數(shù)據(jù)塊加載到多個寄存器中,也可以把多個寄存器中的內(nèi)容保存到存儲器中。尋址操作中的寄存器可以是R0-R15這16個寄存器的子集或是所有寄存器。采用多寄存器尋址方式,一條指令可以完成多個寄存器值的傳送,這種尋址方式用一條指令最多可以完成16個寄存器值的傳送。 格式為: LDM(或STM)條件類型 基址寄存器!,寄存器列
11、表 該指令的常見用途是將多個寄存器的內(nèi)容入棧或出棧。(7)堆棧尋址 堆棧是一種數(shù)據(jù)結(jié)構(gòu),堆棧是特定順序進行存取的存儲區(qū),操作順序分為“后進先出”和“先進后出”,堆棧尋址時隱含的,它使用一個專門的寄存器(堆棧指針)指向一塊存儲區(qū)域(堆棧),指針所指向的存儲單元就是堆棧的棧頂。(8)塊復(fù)制尋址 塊復(fù)制尋址用于把一塊從存儲器的某一位置復(fù)制到另一位置,是一個多寄存器傳送指令。(9)相對尋址 相對尋址是變址尋址的一種變通,由程序計數(shù)器PC提供基準地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。2、堆棧尋址滿遞增堆棧(FA):堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生成
12、。滿遞減堆棧(FD):堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生成??者f增堆棧(EA):堆棧指針指向下一個將要放入數(shù)據(jù)的空位置,且由低地址向高地址生成。空遞減堆棧(ED):堆棧指針指向下一個將要放入數(shù)據(jù)的空位置,且由高地址向低地址生成。3、多寄存器尋址(塊拷貝尋址) (1)塊拷貝尋址是多寄存器傳送指令LDM/STM的尋址方式。LDM/STM指令可以把存儲器中的一個數(shù)據(jù)塊加載到多個寄存器中,也可以把多個寄存器中的內(nèi)容保存到存儲器中。尋址操作中的寄存器可以是R0-R15這16個寄存器的子集或是所有寄存器。 (2)LDM/STM指令依據(jù)其后綴名的不同其尋址的方式也有很大不同。 (3)LDMIA
13、 R1!,R0,R2,R3指令執(zhí)行后,R1的值變?yōu)镽1+12>R1;注:!決定Rn的值是否隨著傳送而改變尋址模式 描述 起始地址 結(jié)束地址 Rn!IA 執(zhí)行后增加 Rn Rn+4*N Rn+4*NIB 執(zhí)行前增加 Rn+4 Rn+4*N Rn+4*NDA 執(zhí)行后減少 Rn Rn-4*N Rn-4*NDB 執(zhí)行前減少 Rn-4 Rn-4*N Rn-4*N六ARM狀態(tài)與Thumb狀態(tài) 的轉(zhuǎn)換1、實現(xiàn)ARM工作狀態(tài)轉(zhuǎn)換的指令,其句法如下: BX 目標地址(1)BX指令將引起處理器轉(zhuǎn)移到目標地址所指向的地址處執(zhí)行。(2)目標地址的位0不用來作為地址的一部分。a.若目標地址的位0為1,則指令將CP
14、SR中的標志T置位,且將目標地址的代碼解釋為Thumb代碼;b.若目標地址的位0為0,則指令將CPSR中的標志T復(fù)位,且將目標地址的代碼解釋為ARM代碼。7、 ARM的硬件系統(tǒng)結(jié)構(gòu)1、S3C2410的存儲器系統(tǒng)(1)S3C2410支持大、小端模式,可通過軟件選擇大小端模式;(2)存儲空間分成8個Bank,每個Bank 128Mbytes,總共 1GB; 6個Bank用于控制 ROM, SRAM, etc. 剩余的2個Bank用于控制 ROM, SRAM, SDRAM, etc .(3)除 Bank0 (16/32-bit) 外,所有的Bank都可以通過編程選擇總線寬度= (8/16/32-bi
15、t) ;(4)7個Bank固定起始地址,最后一個Bank可調(diào)整起始地址;(5)最后兩個Bank大小可編程(6)所有Bank存儲周期可編程控制;(7)如果同時使用Bank6/ Bank7,則要求連接相同容量的存儲器,而且其地址空間在物理上是連續(xù)的。2、S3C2410的I/O口配置 S3C2410有117個多功能口,掌握如何通過軟件編程對每個I/O口進行配置。如將端口C的最低2為設(shè)置為01,既設(shè)置成輸出模式,其余位不變。 rGPCCON = rGPCCON&0xfffffffc|0x00000001; rGPCDAT= rGPCDAT |0x001; /PC0口電平輸出高 表3.4.3 S
16、3C2410A的端口C I/O口配置情況端口C可選擇的引腳端功能GPC15GPC8輸入/輸出VD7 VD0GPC7GPC5輸入/輸出LCDVF2LCDVF0GPC4輸入/輸出VMGPC3輸入/輸出VFRAMEGPC2輸入/輸出VLINEGPC1輸入/輸出VCLKGPC0輸入/輸出LEND寄存器地址 讀/寫 描述 復(fù)位值GPCCON 0x56000020 R/W 配置端口C引腳端,使用位31:0,分別對端口B的16個引腳端進行配置。00:輸入;01:輸出;10:第2功能;11:保留0x0 GPCDAT 0x56000024 R/W 端口C數(shù)據(jù)寄存器,使用位15:0 未定義GPCUP 0x5600
17、0028 R/W 端口C上拉電阻不使能寄存器,使用位15:0 。0:使能;1:不使能0x0 保留0x5600002C 保留未定義 表 端口C控制寄存器3、掌握ARM微處理器的中斷系統(tǒng)的特點 了解:一旦有中斷發(fā)生,ARM的中斷系統(tǒng)將如何處理。 在ARM系統(tǒng)中,支持復(fù)位、未定義指令、軟中斷、預(yù)取中止、數(shù)據(jù)中止、IRQ和FIQ 7種異常,每種異常對應(yīng)于不同的處理器模式,有對應(yīng)的異常向量(固定的存儲器地址)。在ARM系統(tǒng)中,一旦有中斷發(fā)生,正在執(zhí)行的程序都會停下來,通常都會執(zhí)行如下的中斷步驟: (1)保存現(xiàn)場。保存當前的PC值到R14,保存當前的程序運行狀態(tài)到SPSR。 (2)模式切換。根據(jù)發(fā)生的中斷
18、類型,進入IRQ模式或FIQ模式。 (3)獲取中斷服務(wù)子程序地址。PC指針跳到異常向量表所保存的IRQ或FIQ地址處,IRQ或FIQ的異常向量地址處一般保存的是中斷服務(wù)子程序的地址,PC指針跳入到中斷服務(wù)子程序,進行中斷處理。 (4)多個中斷請求處理。在ARM系統(tǒng)中,可以存在多個中斷請求源,比如串口中斷、AD中斷、外部中斷、定時器中斷及DMA中斷等,所以可能出現(xiàn)多個中斷源同時請求中斷的情況。為了更好地區(qū)分各個中斷源,通常為這些中斷定義不同的優(yōu)先級別,并為每一個中斷設(shè)置一個中斷標志位。當發(fā)生中斷時,通過判斷中斷優(yōu)先級以及訪問中斷標志位的狀態(tài)來識別哪一個中斷發(fā)生了,進而調(diào)用相應(yīng)的函數(shù)進行中斷處理。
19、 (5)中斷返回,恢復(fù)現(xiàn)場。當完成中斷服務(wù)子程序后,將SPSR中保存的程序運行狀態(tài)恢復(fù)到CPSR中,R14中保存的被中斷程序的地址恢復(fù)到PC中,繼續(xù)執(zhí)行被中斷的程序。4、 了解S3C2410的DMA控制器的基本工作原理。DMA(Direct Memory Acess,直接存儲器存取)方式是指存儲器與外設(shè)在DMA控制器的控制下,直接傳送數(shù)據(jù)而不通過CPU,傳輸速率主要取決于存儲器存取速度。在DMA傳輸過程中,DMA控制器負責管理整個操作,并且無須CPU介入,從而大大提高了CPU的工作效率。DMA方式為高速I/O設(shè)備和存儲器之間的批量數(shù)據(jù)交換提供了直接的傳輸通道。由于I/O設(shè)備直接同內(nèi)存發(fā)生成塊的
20、數(shù)據(jù)交換,可以提高I/O效率?,F(xiàn)在大部分計算機系統(tǒng)均采用DMA技術(shù)。許多輸入輸出設(shè)備的控制器都支持DMA方式。采用DMA方式進行數(shù)據(jù)傳輸?shù)木唧w過程如下。(1) 外設(shè)向DMA控制器發(fā)出DMA請求。(2) DMA控制器向CPU發(fā)出總線請求信號。(3)CPU執(zhí)行完現(xiàn)行的總線周期后,向DMA控制器發(fā)出響應(yīng)請求的回答信號。(4)CPU將控制總線、地址總線及數(shù)據(jù)總線讓出,由DMA控制器進行控制。(5)DMA控制器向外部設(shè)備發(fā)出DMA請求回答信號。(6)進行DMA傳送。(7)數(shù)據(jù)傳送完畢,DMA控制器通過中斷請求線發(fā)出中斷信號。CPU在接收到中斷信號后,轉(zhuǎn)人中斷處理程序進行后續(xù)處理。(8)中斷處理結(jié)束后,C
21、PU返回到被中斷的程序繼續(xù)執(zhí)行。CPU重新獲得總線控制權(quán)。每個DMA控制器可以處理以下4種情況: (1)源和目的都在系統(tǒng)總線上; (2)源在系統(tǒng)總線上,目的在外圍總線上; (3)源在外圍總線上,目的在系統(tǒng)總線上; (4)源和目的都在外圍總線上。5、嵌入式存儲系統(tǒng)的特點。(1)高速緩沖存儲器原理及特點。高速緩沖存儲器(cache)用來提高存儲器系統(tǒng)的性能,許多微處理器體系結(jié)構(gòu)都把它作為其定義的一部分。cache能夠減少內(nèi)存平均訪問時間。Cache可以分為統(tǒng)一cache和獨立的數(shù)據(jù)程序cache。(2) 存儲器管理單元MMU主要完成的功能。 (1)虛擬存儲空間到物理存儲空間的映射。采用了頁式虛擬存
22、儲管理,它把虛擬地址空間分成一個個固定大小的塊,每一塊稱為一頁,把物理內(nèi)存的地址空間也分成同樣大小的頁。MMU實現(xiàn)的就是從虛擬地址到物理地址的轉(zhuǎn)換。 (2)存儲器訪問權(quán)限的控制。 (3)設(shè)置虛擬存儲空間的緩沖的特性。8、 嵌入式系統(tǒng)I/O設(shè)備接口1、掌握S3C2410的I/O接口的編程要求:掌握I/O口編程,能編寫實現(xiàn)LED1、 LED2 、 LED3、 LED4 輪流閃爍的程序。 實現(xiàn)LED1和LED2輪流閃爍的程序代碼 void Main(void) int flag,i; Target Init();/進行硬件初始化操作,包括對IO口的初始化操作 for(;) if(flag = = 0
23、) for(i = 0;i < 1000000;i+); /延時 rGPGCON rGPGCON0xfff0ffff | 0x00050000;/配置第8、第 /9位為輸出引腳 rGPGDAT rGPGDAT0xeff | 0x200; /第8位輸出為低電平 /第9位輸出高電平 for(i = 0;i< 10000000;i+); /延時 flag = 1; else for(i = 0;i< 1000000;i+); /延時 rGPGCONrGPGCON0xfff0ffff(0x00050000;/配置第8、 /第9位為輸出引腳 rGPGDATrGPGDATOxdff |
24、0x100;/第8位輸出為高電平 /第9位輸出低電平 for(i = 0;i< 1000000;i+); /延時 flag = 0; 2、掌握S3C2410的A/D轉(zhuǎn)換器接口的原理要求:掌握A/D轉(zhuǎn)換器接口的原理,能編寫A/D轉(zhuǎn)換器初始化函數(shù)和獲取A/D的轉(zhuǎn)換值的程序。 (1)A/D轉(zhuǎn)換器(模數(shù)轉(zhuǎn)換器)完成電模擬量到數(shù)字量的轉(zhuǎn)換。實現(xiàn)A/D轉(zhuǎn)換的方法很多,常用的方法有計數(shù)法、雙積分法和逐次逼近法等。(2)對A/D轉(zhuǎn)換器進行初始化程序中的參數(shù)ch表示所選擇的通道號,程序如下: void AD_Init (unsigned char ch) rADCDLY=100; /ADC啟動或間隔延時
25、rADCTSC=0; /選擇ADC模式 rADCCON=(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0); /使能前置分頻器,設(shè)置前置分頻值為49,正常模式,禁止讀操作啟動,不啟動。 (3).獲取A/D的轉(zhuǎn)換值程序中的參數(shù)ch表示所選擇的通道號,程序如下:int Get_AD(unsigned char ch) int i; int val= 0; i f (ch>7) return 0; /通道不能大于7 for(i=0; i< 16; i+) /為轉(zhuǎn)換準確,轉(zhuǎn)換16次 rADCCON
26、|=0x1; /啟動A/D轉(zhuǎn)換 rADCCON= rADCCON0xffc7 |(ch<<3); /設(shè)置通道號 while (rADCCON0x1); /等待啟動位清零 while(?。╮ADCCON0x8000); /等待轉(zhuǎn)換結(jié)束 val +=(rADCDAT00x03ff); Delay(10); return(val >> 4); /為轉(zhuǎn)換準確,除以16取均值3、 掌握四線式電阻式觸摸屏的工作原理,能分析觸摸點的X軸坐標和Y軸坐標是如何測量出來的。觸摸屏按其工作原理可分為矢量壓力傳感式、電阻式、電容式、紅外線式和表面聲波式5類。在嵌入式系統(tǒng)中常用的是電阻式觸摸屏。
27、四線式觸摸屏的X工作面和Y工作面分別加在兩個導電層上,共有4根引出線:X、X,Y、Y分別連到觸摸屏的X電極對和Y電極對上。四線電阻屏觸摸壽命小于100萬次。當給X方向的電極對施加一確定的電壓,而Y方向電極對不加電壓時,在x平行電壓場中,觸點處的電壓值可以在Y(或Y)電極上反映出來,通過測量Y電極對地的電壓大小,通過A/D轉(zhuǎn)換,便可得知觸點的X坐標值。同理,當給Y電極對施加電壓,而X電極對不加電壓時,通過測量X電極的電壓,通過A/D轉(zhuǎn)換便可得知觸點的Y坐標。四線電阻觸摸屏的分辨方法是將四線電阻觸摸后變化的模擬量轉(zhuǎn)換成數(shù)字量,經(jīng)過軟件計算得出不同的屏幕上不同的,坐標。此工作主要是靠S3C2440A
28、 芯片中的模數(shù)轉(zhuǎn)換器來實現(xiàn)的。4、 了解 S3C2410的UART串行接口的工作原理,掌握S3C2410的UART發(fā)送和接收數(shù)據(jù)的程序設(shè)計。UART(通用異步收發(fā)器)主要由數(shù)據(jù)線接口、控制邏輯、配置寄存器、波特率發(fā)生器、發(fā)送部分和接收部分組成,采用異步串行通信方式,采用RS-232C 9芯接插件(DB-9)連接,是廣泛使用的串行數(shù)據(jù)傳輸方式. 本程序?qū)嵗龑崿F(xiàn)從UART0接收數(shù)據(jù),然后分別從UART0和UART1發(fā)送出去。其功能可以把鍵盤敲擊的字符通過PC機的串口發(fā)送給ARM系統(tǒng)上的UART0,ARM系統(tǒng)上的UART0接收到字符后,再通過UART0和UART1送給PC機,這樣就完成了串口間的收發(fā)
29、數(shù)據(jù)。要實現(xiàn)以上數(shù)據(jù)的收發(fā)功能,需要編寫的主要代碼如下。(1)發(fā)送數(shù)據(jù)其中whichUart為全局變量,指示當前選擇的UART通道,使用串口發(fā)送一個字節(jié)的代碼如下: void Uart_SendByte(int data) if(whichUart= =0) if(data= =n) while(?。╮UTRSTAT00x2); Delay(10); /延時,與終端速度有關(guān) WrUTXH(r); while(?。╮UTRSTAT00x2); /等待,直到發(fā)送狀態(tài)就緒 Delay(10); WrUTXH0(data); else if(whichUart= =1) if(data=n) whil
30、e(?。╮UTRSTAT10x2); Delay(10); /延時,與終端速度有關(guān) rUTXH1=r; while(!(rUTRSTAT10x2); /等待,直到發(fā)送狀態(tài)就緒 Delay(10); rUTXH1data; else if(whichUart= =2) if (data= =n) while(?。╮UTRSTAT20x2); Delay(10); /延時,與終端速度有關(guān) rUTXH2r; while(!(rUTRSTAT20x2); /等待,直到發(fā)送狀態(tài)就緒 Delay(10); rUTXH2data; (2)接收數(shù)據(jù)如果沒有接收到字符則返回0。使用串口接收一個字符的代碼如下:
31、char Uart_GetKey(void) if(whichUart0) if(rUTRSTAT00x1) /UARTO接收到數(shù)據(jù) return RdURXH0(); else return 0; else if(whichUart= =1) if(rUTRSTAT10x1) /UART1接收到數(shù)據(jù) return RdURXH1(); else return 0; else if(whichUart= =2) if(rUTRSTAT20x1) /UART2接收到數(shù)據(jù) return RdURXH2(); else return 0; else return 0; 5、掌握鍵盤接口設(shè)計的方法。
32、要求:掌握矩陣式鍵盤的掃描原理,能設(shè)計一個與S3C2410連接的4X4的矩陣式鍵盤的接口電路 ,并編寫鍵盤掃描程序。(1) 矩陣鍵盤的按鍵按N行M列排列,每個按鍵占據(jù)行列的一個交點,需要的I/O口數(shù)目是N+M,容許的最大按鍵數(shù)是N×M。矩陣鍵盤可以減少與微控制器I/O接口的連線數(shù),是常用的一種鍵盤結(jié)構(gòu)形式。根據(jù)矩陣鍵盤的識鍵和譯鍵方法的不同,矩陣鍵盤又可以分為非編碼鍵盤和編碼鍵盤兩種。(2) 一個用I/O口實現(xiàn)的鍵盤接口,為了識別鍵盤上的閉合鍵,常采用行掃描法。行掃描法是使鍵盤上某一行線為低電平,而其余行接高電平,然后讀取列值,如果列值中有某位為低電平,則表明行列交點處的鍵被按下;否
33、則掃描下一行,直到掃描完全部的行線為止。(3) 根據(jù)行掃描法的原理,識別矩陣鍵盤按鍵閉合分兩步進行: a.識別鍵盤哪一行的鍵被按下:讓所有行線均為低電平,檢查各列線電平是否為低,如果有列線為低,則說明該列有鍵被按下,否則說明無鍵被按下。 b.如果某列有鍵被按下,識別鍵盤哪一行的鍵被按下:逐行置低電平,并置其余各行為高電平,檢查各列線電平的變化,如果列電平變?yōu)榈碗娖剑瑒t可確定此行此列交叉點處按鍵被按下。1.鍵盤控制初始化程序void keyboard_test(void) UINT8T ucChar; UINT8T szBuf40; uart_printf(“n Keyboard Test Ex
34、amplen”); uart_printf(“Press any key to exitn”); Keyboard_init(); g_nKeyPress=0xFE; While(1) f_nKeyPress=0; while(f_nKeyPress=0) if(uart_tetkey() /Press any key from UART0 to exit return; else if(ucChar=7) /or press 5*4 Key-7 to exit return; else if(g_nKeyPress!=0xFE) /or SB1202/SB1203 to exit retur
35、n; iic_read_keybd(0x70,0x1,&ucChar); /get data from ZLG7290 If(ucChar!=0) ucChar-key_set(ucChar); /key map for Edukit II if(ucChar<16) sprintf(&szBuf,”press key %d”,ucChar); else if(ucChar<255) sprintf(&szBuf,”press key %d”,ucChar); if(ucChar=0xFF) sprintf(&szBuf,”press key %c”
36、,ucChar); if(ucChar=0xFF) sprintf(&szBuf,”press key FUN”); #ifdef BOARDTEST print_lcd(200,170,0x1c,&szBuf); #endif uart_printf(szBuf); uart_printf(“n”) uart_printf(“end.n”);9、 嵌入式軟件及操作系統(tǒng)1、 正確理解進程、線程的概念,掌握進程及進程的主要特點,并能說明進程和程序有什么區(qū)別。 (1) 進程(process)是在描述多道系統(tǒng)中并發(fā)活動過程引入的一個概念。進程和程序是兩個既有聯(lián)系又有區(qū)別的概念,兩者不能混為一談。而進程則是一次執(zhí)行過程,它是暫時的,是動態(tài)地產(chǎn)生和終止的。 一個進程通常包含有以下幾個方面的內(nèi)容: 相應(yīng)的程序;CPU上下文;一組系統(tǒng)資源。進程的特點:進程具有動態(tài)性;進程具有獨立性;進程具有并發(fā)性。(2)線程(thread)是一個比進程更小的能獨立運行的基本單位。所謂的線程,就是進程當中的一條執(zhí)行流程。包括運行上下文、內(nèi)存地址空間、打開的文件等。可以用線程來作為CPU的基本調(diào)度單位,使得各個線程之間可以并發(fā)執(zhí)行。對于同一個進程當中的各個線程來說,運行在相同的資源平臺上,可以共享該進程的大部分資源,但也有
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯贈予合同7篇
- 小產(chǎn)權(quán)轉(zhuǎn)讓合同6篇
- 國際貿(mào)易之間合作合同
- 公司技術(shù)合作合同協(xié)議書
- 2025年中山貨運資格證模擬考試題庫
- 2025年揚州貨運從業(yè)資格證模擬考試下載安裝
- 室內(nèi)裝修合同二5篇
- 的擔保借款合同7篇
- 觀看湖北消防119宣傳月節(jié)目心得感悟集合4篇
- 在民主生活會上的點評講話模板
- 現(xiàn)代控制理論課件-矩陣復(fù)習
- 《化工生產(chǎn)技術(shù)》配套教學課件
- 液壓與氣壓傳動技術(shù)全套課件
- 中國傳媒大學《紀錄片創(chuàng)作教程》課件
- 蛋白電泳在腎臟疾病中的實際臨床應(yīng)用
- T∕CCCMHPIE 1.3-2016 植物提取物 橙皮苷
- 毫火針療法PPT課件
- 三年級部編版語文下冊第二單元日積月累
- 前輪轂止口不合格8D報告
- 蝴蝶蘭溫室工廠化栽培管理技術(shù)
- 銀行對賬單(共9頁)
評論
0/150
提交評論