電子教案-ARM7嵌入式系統(tǒng)實踐教程_第1頁
電子教案-ARM7嵌入式系統(tǒng)實踐教程_第2頁
電子教案-ARM7嵌入式系統(tǒng)實踐教程_第3頁
電子教案-ARM7嵌入式系統(tǒng)實踐教程_第4頁
電子教案-ARM7嵌入式系統(tǒng)實踐教程_第5頁
已閱讀5頁,還剩228頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

2.1編寫匯編語言程序一、目的(1)學(xué)會使用ADS1.2編寫、調(diào)試匯編語言程序。(2)掌握使用存取指令讀寫存儲器的編程方法。(3)掌握單步、分段調(diào)試程序方法。二、步驟1、啟動IDE在WindowsXP系統(tǒng)窗口,執(zhí)行【所有程序】|ARMDeveloperSuiteV1.2|CodeWarriorForARMDeveloperSuite菜單命令,打開IDE二、步驟2、創(chuàng)建工程在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇工程模板:ARMExecutableImage(B)為工程起一個名字:Exp2101(C)配置工程存儲路徑:G:\Exp2101(D)擊【確定】按鈕,完成工程創(chuàng)建工程模板工程名工程存儲路徑二、步驟2、創(chuàng)建工程工程管理窗口文件選項卡鏈接順序選項卡生成目標(biāo)二、步驟2、創(chuàng)建工程工程管理存儲路徑內(nèi)容數(shù)據(jù)目錄工程文件輸出文件存儲路徑二、步驟3、創(chuàng)建源程序文件在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇File選項卡(B)為文件起一個名字:Exp.s(C)配置文件存儲路徑為工程存儲路徑:G:\Exp2101(D)使AddtoProject復(fù)選框處于選中狀態(tài)(E)Targes欄所有選項全部選中(F)擊【確定】按鈕,文件創(chuàng)建完畢二、步驟3、創(chuàng)建源程序文件源程序管理窗口二、步驟4、編寫源程序(A)在源程序管理窗口中,錄入源程序代碼(B)執(zhí)行菜單命令File|Save保存源程序二、步驟5、配置編譯鏈接參數(shù)(A)執(zhí)行菜單命令Edit|DebugRelSettings,打開DebugRelSettings窗口(B)在DebugRelSettingsPanels中,選中Linker|ARMLinker項二、步驟(5)、配置編譯鏈接參數(shù)(A)在ARMLinker子窗口中,選擇Output選項卡(B)在SimpleImage組內(nèi)ROBase配置為0x40000000;

RWBase配置為0x40003000;二、步驟5、配置編譯鏈接參數(shù)(A)在ARMLinker子窗口中,選擇Options選項卡(B)在ImageEntryPoint錄入0x40000000點擊按鈕OK,參數(shù)配置完畢二、步驟6、編譯程序(A)打開源程序編輯窗口二、步驟6、編譯程序(B)執(zhí)行菜單Project|Compile命令,對源程序編譯操作,如有錯誤,顯示如下錯誤信息窗口(C)錯誤信息:Unknownopcode操作碼錯誤,AREAExp101,code,READONLY指令前無空格(D)點擊錯誤信息位置,進入源程序編輯窗口,將指令A(yù)REAExp101,code,READONLY指令前加入空格一條錯誤信息錯誤信息位置二、步驟6、編譯程序(E)重復(fù)執(zhí)行編譯、改錯操作,直至編譯無錯誤。(F)編譯Exp.s后生成的輸出文件Exp.o保存到C:\Exp101\Exp101_Data\Debug\ObjectCode中,如下圖輸出文件生成目標(biāo)二、步驟7、鏈接程序(A)執(zhí)行Project|Make菜單命令,進行鏈接操作,生成的可執(zhí)行鏡像文件保存在C:\Exp101\Exp101_Data\Debug目錄下,如下圖:鏡像文件生成目標(biāo)二、步驟8、調(diào)試程序(1)啟動AxdDebugger軟件:IDE工程管理窗口中,鼠標(biāo)點擊按鈕,啟動調(diào)試器,如下圖:PC要調(diào)試的源程序文件名二、步驟8、調(diào)試程序(2)顯示觀察窗口(A)執(zhí)行ProcessorViews|Registers菜單命令,顯示寄存器窗口,如下圖:(B)執(zhí)行ProcessorViews|Memory菜單命令,顯示存儲器窗口,如下圖:寄存器窗口存儲器窗口二、步驟8、調(diào)試程序(2)調(diào)試語句MOVR1,R1,ROR#8(A)程序指針PC定位到指令MOVR1,R1,ROR#8在指令MOVR1,R1,ROR#8前設(shè)置一斷點鼠標(biāo)移到行號12前空白處,雙擊鼠標(biāo),則在指令MOVR1,R1,ROR#8前設(shè)置一斷點,如下圖:要調(diào)試的語句斷點二、步驟8、調(diào)試程序(2)調(diào)試語句MOVR1,R1,ROR#8(B)程序指針PC定位到指令MOVR1,R1,ROR#8運行程序,使程序指針PC指向指令MOVR1,R1,ROR#8鼠標(biāo)點擊按鈕,執(zhí)行程序,程序指針PC指向指令MOVR1,R1,ROR#8程序指針PC、斷點要調(diào)試的語句二、步驟8、調(diào)試程序(2)調(diào)試語句MOVR1,R1,ROR#8(C)指令MOVR1,R1,ROR#8調(diào)試前已知條件查看寄存器窗口,得知R1=0x11223344指令MOVR1,R1,ROR#8功能為,R1循環(huán)右移8個二進制位,理論結(jié)果R1=0x44112233寄存器名稱寄存器值二、步驟8、調(diào)試程序(2)調(diào)試語句MOVR1,R1,ROR#8(D)單步執(zhí)行指令MOVR1,R1,ROR#8鼠標(biāo)單擊按鈕,單步執(zhí)行指令MOVR1,R1,ROR#8,如下如斷點程序指針PC要調(diào)試的指令二、步驟8、調(diào)試程序(2)調(diào)試語句MOVR1,R1,ROR#8(E)指令MOVR1,R1,ROR#8執(zhí)行后,R1的結(jié)果查看寄存器窗口,得知R1=0x44112233(F)結(jié)果分析:調(diào)試結(jié)果與指令執(zhí)行理論結(jié)果一致寄存器名稱R1寄存器的值二、步驟8、調(diào)試程序(3)調(diào)試語句STRR1,[R0](A)程序指針PC定位到指令STRR1,[R0]在指令STRR1,[R0]前設(shè)置一斷點鼠標(biāo)移到行號13前空白處,雙擊鼠標(biāo),則在指令STRR1,[R0]前設(shè)置一斷點,如下圖:斷點要調(diào)試的語句二、步驟8、調(diào)試程序(2)調(diào)試語句STRR1,[R0](B)程序指針PC定位到指令STRR1,[R0]運行程序,使程序指針PC指向指令STRR1,[R0]鼠標(biāo)點擊按鈕,執(zhí)行程序,程序指針PC指向指令STRR1,[R0]要調(diào)試的語句程序指針PC、斷點二、步驟8、調(diào)試程序(2)調(diào)試語句STRR1,[R0](C)指令STRR1,[R0]調(diào)試前已知條件查看寄存器窗口,得知R1=0x44112233,R0=0x40003000指令STRR1,[R0]功能為,R1存入字存儲單元0x40003000,即

[0x40003000]=0x44112233寄存器名稱寄存器值二、步驟8、調(diào)試程序(2)調(diào)試語句STRR1,[R0](D)單步執(zhí)行指令STRR1,[R0]鼠標(biāo)單擊按鈕,單步執(zhí)行指令STRR1,[R0],如下如存儲區(qū)起始地址存儲單元[0x40003000]=0x44112233二、步驟8、調(diào)試程序(2)調(diào)試語句STRR1,[R0](E)指令STRR1,[R0]執(zhí)行后,R1=0x44112233R0=0x40003000查看存儲器窗口,得知[0x40003000]=0x44112233(F)結(jié)果分析:調(diào)試結(jié)果與指令執(zhí)行理論結(jié)果一致存儲區(qū)起始地址存儲單元[0x40003000]=0x44112233二、步驟8、調(diào)試程序(4)調(diào)試程序段:包括行號為12、13、14指令的程序段(A)在程序段第一條指令前設(shè)置斷點在指令MOVR1,R1,ROR#8前設(shè)置一斷點鼠標(biāo)移到行號12前空白處,雙擊鼠標(biāo),則在指令MOVR1,R1,ROR#8前設(shè)置一斷點,如下圖:要調(diào)試的語句斷點:程序段第一條指令二、步驟8、調(diào)試程序(4)調(diào)試程序段:包括行號為12、13、14指令的程序段(B)程序指針PC定位到程序段第一條指令處運行程序,使程序指針PC指向指令MOVR1,R1,ROR#8鼠標(biāo)點擊按鈕,執(zhí)行程序,程序指針PC指向指令MOVR1,R1,ROR#8程序指針指向程序段第一條指令要調(diào)試的程序段二、步驟8、調(diào)試程序(4)調(diào)試程序段:包括行號為12、13、14指令的程序段(C)刪除指令MOVR1,R1,ROR#8前的斷點鼠標(biāo)移到行號12前空白處,雙擊鼠標(biāo),則在指令MOVR1,R1,ROR#8前斷點刪除,如下圖:程序指針指向程序段第一條指令要調(diào)試的程序段二、步驟8、調(diào)試程序(4)調(diào)試程序段:包含行號為12、13、14指令的程序段(D)在程序段隨后一條語句設(shè)置另一斷點在指令BL前設(shè)置一斷點鼠標(biāo)移到行號15前空白處,雙擊鼠標(biāo),則在指令BL前設(shè)置一斷點,如下圖:斷點:程序段隨后指令PC:程序段第一條指令二、步驟8、調(diào)試程序(4)調(diào)試程序段:包含行號為12、13、14指令的程序段(E)程序段調(diào)試前已知條件查看寄存器窗口,得知R1=0x11223322,R0=0x40003000程序段功能為,R1循環(huán)右移8個二進制位,即R1=0x44112233

將R1的值存入以R0值為存儲器地址的字單元中,即[0x40003000]=0x44112233讀入以R0值為存儲器地址的字單元值,存入R1中,即R1=0x44112233二、步驟8、調(diào)試程序(4)調(diào)試程序段:包含行號為12、13、14指令的程序段(F)執(zhí)行程序段鼠標(biāo)單擊按鈕,執(zhí)行包含行號為12、13、14指令的程序段

,如下如二、步驟8、調(diào)試程序(4)調(diào)試程序段:包含行號為12、13、14指令的程序段(G)執(zhí)行程序段結(jié)果R1=0x44112233

[0x40003000]=0x44112233

R1=0x44112233與理論值一致2.2編寫C語言程序一、目的(1)學(xué)會使用ADS1.2編寫、調(diào)試C語言程序。(2)掌握使用地址指針訪問存儲器的編程方法。(3)熟悉單步、分段調(diào)試程序方法與技巧。二、步驟1、啟動IDE在WindowsXP系統(tǒng)窗口,執(zhí)行【所有程序】|ARMDeveloperSuiteV1.2|CodeWarriorForARMDeveloperSuite菜單命令,打開IDE二、步驟2、創(chuàng)建工程在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇工程模板:ARMExecutableImage(B)為工程起一個名字:Exp2102(C)配置工程存儲路徑:G:\Exp2102(D)擊【確定】按鈕,完成工程創(chuàng)建工程模板工程名工程存儲路徑二、步驟2、創(chuàng)建工程工程管理窗口文件選項卡鏈接順序選項卡生成目標(biāo)二、步驟2、創(chuàng)建工程工程管理存儲路徑內(nèi)容數(shù)據(jù)目錄工程文件輸出文件存儲路徑二、步驟3、創(chuàng)建源程序文件在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇File選項卡(B)為文件起一個名字:Exp2102.c(C)配置文件存儲路徑為工程存儲路徑:G:\Exp2102(D)使AddtoProject復(fù)選框處于選中狀態(tài)(E)Targes欄所有選項全部選中(F)擊【確定】按鈕,文件創(chuàng)建完畢二、步驟3、創(chuàng)建源程序文件源程序管理窗口二、步驟4、編寫源程序(A)在源程序管理窗口中,錄入源程序代碼(B)執(zhí)行菜單命令File|Save保存源程序二、步驟5、配置編譯鏈接參數(shù)(1)、顯示ARMLinker配置窗口(A)執(zhí)行菜單命令Edit|DebugRelSettings,打開DebugRelSettings窗口(B)在DebugRelSettingsPanels中,選中Linker|ARMLinker項二、步驟5、配置編譯鏈接參數(shù)(2)配置程序區(qū)、數(shù)據(jù)區(qū)參數(shù)(A)在ARMLinker子窗口中,選擇Output選項卡(B)在SimpleImage組內(nèi)ROBase配置為0x40000000;

RWBase配置為0x40003000;二、步驟5、配置編譯鏈接參數(shù)(3)配置鏡像入口點參數(shù)(A)在ARMLinker子窗口中,選擇Options選項卡(B)在ImageEntryPoint錄入0x40000000點擊按鈕OK,參數(shù)配置完畢二、步驟5、配置編譯鏈接參數(shù)(4)配置生成目標(biāo)(A)單機生成目標(biāo)欄的按鈕,下拉列表顯示所有可用生成目標(biāo)(B)選擇Debug作為生成目標(biāo)生成目標(biāo)二、步驟6、編譯程序(A)打開源程序編輯窗口二、步驟6、編譯程序(B)單擊編譯按鈕,對源程序執(zhí)行編譯操作,如有錯誤,修改錯誤。重復(fù)執(zhí)行編譯、改錯操作,直至無錯。(C)編譯源程序文件Exp2102.c后,生成輸出文件Exp2102.O二、步驟7、鏈接程序(A)單擊鏈接按鈕,進行鏈接操作,生成的可執(zhí)行鏡像文件保存在G:\Exp2102\Exp2102_Data\DebugRel目錄下,如下圖:鏡像文件生成目標(biāo)二、步驟8、調(diào)試程序(1)啟動AxdDebugger軟件:WindowsXP操作桌面,執(zhí)行【開始】|

【所有程序】|ARMDeveloperSuiteV1.2|AxDDebugger菜單命令,運行調(diào)試器軟件AxDDebugger,如下圖:

二、步驟8、調(diào)試程序(2)調(diào)入可執(zhí)行鏡像文件Exp2102.axf

(A)執(zhí)行File|LoadImage菜單命令,顯示LoadImage窗口,如下圖:二、步驟8、調(diào)試程序(2)調(diào)入可執(zhí)行鏡像文件Exp2102.axf

(B)選擇G:\Exp2102\Exp2102_Data\DebugRel目錄下的鏡像文件Exp2102.axf,然后點擊打開,進入調(diào)試界面,如下圖:程序指針二、步驟8、調(diào)試程序(3)定位到用戶程序的第一條語句處(A)單擊程序執(zhí)行按鈕,執(zhí)行程序,程序指針執(zhí)向用戶程序的第一條語句,如下圖:程序指針二、步驟8、調(diào)試程序(4)顯示變量窗口(A)執(zhí)行ProcessorViews|Variables菜單命令,顯示變量窗口,如下圖:全局變量選項卡局部變量選項卡二、步驟8、調(diào)試程序(4)顯示存儲器窗口(B)執(zhí)行ProcessorViews|Memory菜單命令,顯示存儲器窗口,在StartAddress后編輯框內(nèi)錄入0x40003000,然后回車。顯示以0x40003000為起始地址的存儲區(qū)如下圖:二、步驟8、調(diào)試程序(5)調(diào)試語句ClearMemory((unsignedchar*)0x40003000,256);(A)程序指針PC定位到語句ClearMemory((unsignedchar*)0x40003000,256);在語句ClearMemory((unsignedchar*)0x40003000,256)前設(shè)置一斷點鼠標(biāo)移到行號30前空白處,雙擊鼠標(biāo),則在語句

ClearMemory((unsignedchar*)0x40003000,256)前設(shè)置一斷點,如下圖:斷點要調(diào)試的語句二、步驟8、調(diào)試程序(5)調(diào)試語句ClearMemory((unsignedchar*)0x40003000,256);(B)程序指針PC定位到ClearMemory((unsignedchar*)0x40003000,256);運行程序,使程序指針PC指向本語句鼠標(biāo)點擊按鈕,執(zhí)行程序,程序指針PC指向

ClearMemory((unsignedchar*)0x40003000,256);程序指針PC、斷點要調(diào)試的語句二、步驟8、調(diào)試程序(5)調(diào)試語句ClearMemory((unsignedchar*)0x40003000,256);(C)語句ClearMemory((unsignedchar*)0x40003000,256)的功能

將以0x40003000為起始地址,連續(xù)256個字節(jié)存儲單元清0。(D)語句ClearMemory((unsignedchar*)0x40003000,256)執(zhí)行前,將查看0x40003000為起始地址,連續(xù)256個字節(jié)存儲單元內(nèi)容。

在存儲器窗口,StartAddress地址欄輸入0x40003000,然后回車,則0x40003000為起始地址,連續(xù)256個字節(jié)存儲單元內(nèi)如如下圖:二、步驟8、調(diào)試程序(5)調(diào)試語句ClearMemory((unsignedchar*)0x40003000,256);(F)單步執(zhí)行語句ClearMemory((unsignedchar*)0x40003000,256)鼠標(biāo)單擊按鈕,單步執(zhí)行語句ClearMemory((unsignedchar*)0x40003000,256),如下圖斷點程序指針PC要調(diào)試的指令二、步驟8、調(diào)試程序(5)調(diào)試語句ClearMemory((unsignedchar*)0x40003000,256);(G)語句ClearMemory((unsignedchar*)0x40003000,256)執(zhí)行結(jié)果查看以0x40003000為起始地址,連續(xù)256個字節(jié)存儲單元內(nèi)容,執(zhí)行結(jié)果與語句功能一致,如下圖2.1UART

一、目的(1)掌握嵌入式處理器LPC2290UART接口電路設(shè)計方法(2)掌握UART的編程方法。2.1UART

二、題目編程程序?qū)崿F(xiàn)通過Uart0向PC機串行發(fā)送數(shù)據(jù)要求UART0通信格式為:通訊波特率115200BPS,8位數(shù)據(jù)位,1位停止位,無奇偶校驗發(fā)送ASCII字符串“ARM7LPC2290!”UART0使用查詢方式發(fā)送數(shù)據(jù)2.1UART

三、UART接口電路(1)SP3232ERS232接口芯片(2)LPC2290UART0P0.0為UART0數(shù)據(jù)發(fā)送線TxD0,

P0.1為UART0數(shù)據(jù)接收線RxD0(3)連接插座2腳為基于RS232標(biāo)準(zhǔn)的TxD數(shù)據(jù)發(fā)送線連接插座3腳為基于RS232標(biāo)準(zhǔn)的RxD數(shù)據(jù)接收線2.1UART

四、UART數(shù)據(jù)發(fā)送相關(guān)(1)使用PINSEL0配置P0.0為UART0TxD0,

P0.1為UART0RxD0(2)使用U0LCR配置數(shù)據(jù)傳輸格式;使用U0DLL、U0DLM配置數(shù)據(jù)傳輸速率

(3)發(fā)送一字節(jié)數(shù)據(jù):將字節(jié)數(shù)據(jù)寫入寄存器U0THR

監(jiān)視U0LSR位6,當(dāng)位6=1發(fā)送完成

2.1UART

五、UART編程(1)UART0初始化(A)管腳功能配置

將管腳P0.0為UART0TxD0,將PINSEL0的位1位0配置為01即可;將管腳P0.1為UART0RxD0,將PINSEL0的位3位2配置為01即可;配置語句:

PINSEL0=

PINSEL0&0xFFFFFF00|0x05(B)UART0幀格式配置

依據(jù)實驗要求,配置U0LCR寄存器各位值,實現(xiàn)幀格式傳輸格式:8個數(shù)據(jù)位、1個停止位、無校驗8位數(shù)據(jù)D1D0=111個停止位D2=0

無校驗

D3=0配置語句:

U0LCR=0x03

2.1UART

五、UART編程(1)UART0初始化(C)波特率配置DLAB(U0LCR位7)=1時才能訪問寄存器U0DLM,U0DLL配置語句:U0LCR|=0x80依據(jù)公式BaudRate=Fpclk/([U0DLM,U0DLL]×16)計算U0DLM,U0DLL寄存器配置值其中BaudRate為波特率,比如115200BPS;U0DLM波特率16位配置值的高8位;U0DLL波特率16位配置值的低8位;Fpclk系統(tǒng)時鐘配置語句:U0DLL=(Fpclk/(BaudRate*16))&0xff//低8位

U0DLM=(Fpclk/(BaudRate*16))/256//高8位

=(Fpclk/(BaudRate*16))>>82.1UART

五、UART編程(2)UART0數(shù)據(jù)發(fā)送(A)發(fā)送數(shù)據(jù):將字節(jié)數(shù)據(jù)寫入寄存器U0THR即可.發(fā)送數(shù)據(jù)語句:U0THR=字節(jié)數(shù)據(jù)(B)監(jiān)測發(fā)送數(shù)據(jù)是否結(jié)束:當(dāng)U0LSR位6=1時,數(shù)據(jù)發(fā)送完成監(jiān)測發(fā)送結(jié)束語句:

while((U0LSR&0x40)==0);2.1UART

六、編程1、啟動IDE在WindowsXP系統(tǒng)窗口,執(zhí)行【所有程序】|ARMDeveloperSuiteV1.2|CodeWarriorForARMDeveloperSuite菜單命令,打開IDE2.1UART

六、編程1、創(chuàng)建工程:在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇工程模板:ARMExecutableImageForMagicARM2200(B)為工程起一個名字:Exp2201(C)配置工程存儲路徑:G:\Exp2201(D)擊【確定】按鈕,完成工程創(chuàng)建工程模板工程名工程存儲路徑2.1UART

六、編程工程管理窗口文件選項卡鏈接順序選項卡生成目標(biāo)2.1UART

六、編程工程管理存儲路徑內(nèi)容數(shù)據(jù)目錄工程文件輸出文件存儲路徑2.1UART

六、編程2、打開源程序編輯窗口(1)、在工程管理窗口中,展開User目錄;(2)、雙擊文件main.c,打開源程序main.c編程窗口,如下圖2.1UART

六、編程3、錄入源程序在源程序編輯窗口中,錄入程序代碼,然后執(zhí)行File|Save菜單命令,保存源程序。2.1UART

六、編程4、編譯、改錯單擊按鈕,編譯程序,如有錯誤,根據(jù)錯誤提示信息,修改程序。然后重復(fù)執(zhí)行編譯、改錯操作,直至編譯通過,生成輸出文件如下圖:編譯main.c生成的輸出文件2.1UART

六、編程5、鏈接程序單擊按鈕,鏈接程序,生成的可執(zhí)行鏡像文件如下圖:鏡像文件2.1UART

七、調(diào)試1、啟動調(diào)試器、調(diào)入要調(diào)試的鏡像文件單擊按鈕,啟動調(diào)試器AxDDebugger、調(diào)入要調(diào)試的鏡像文件Exp2201.axf,如下圖:2.1UART

七、調(diào)試2、計算機端運行SerialPort201.Exe程序,執(zhí)行“接收數(shù)據(jù)”菜單命令3、執(zhí)行程序單擊按鈕,執(zhí)行程序4、觀察分析觀察計算機端是否接收到數(shù)據(jù),如果接收到,調(diào)試結(jié)束;否則。按如下順序檢查:串行電纜連接是否牢固UART0初始化是否正確接收兩端幀格式、波特率是否一致

2.2UART

一、目的(1)掌握嵌入式處理器LPC2290UART接口電路設(shè)計方法(2)掌握UART的編程方法。2.2UART

二、題目使用UART0接收PC機數(shù)據(jù),在發(fā)送給PC機要求UART0通信格式為:通訊波特率115200BPS,8位數(shù)據(jù)位,1位停止位,無奇偶校驗發(fā)送ASCII字符串“ARM7LPC2290!”UART0使用查詢方式發(fā)送數(shù)據(jù)2.2UART

三、UART接口電路(1)SP3232ERS232接口芯片(2)LPC2290UART0P0.0為UART0數(shù)據(jù)發(fā)送線TxD0,

P0.1為UART0數(shù)據(jù)接收線RxD0(3)連接插座2腳為基于RS232標(biāo)準(zhǔn)的TxD數(shù)據(jù)發(fā)送線連接插座3腳為基于RS232標(biāo)準(zhǔn)的RxD數(shù)據(jù)接收線2.2UART

四、UART數(shù)據(jù)發(fā)送接收1、數(shù)據(jù)接收相關(guān)(1)使用PINSEL0配置P0.1為UART0RxD0(2)使用U0LCR配置數(shù)據(jù)傳輸格式;使用U0DLL、U0DLM配置數(shù)據(jù)傳輸速率

使用U0FCR配置FIFO可用(3)接收數(shù)據(jù):U0LSR位0=1時FIFO接收緩沖區(qū)有數(shù)據(jù),可通過讀取U0RBR接收一字節(jié)數(shù)據(jù)2.2UART

四、UART數(shù)據(jù)發(fā)送接收2、數(shù)據(jù)接收中斷相關(guān)(1)

U0FCR配置使用TxFIFO、RxFIFO,配置接收中斷出發(fā)級別(2)使用VICIntSelect配置RDA為IRQ類型或FIQ類型(3)使用VICVectCntl0、VICVectAddr0配置記錄與識別中斷服務(wù)程序(4)使用配置VICIntEnable使對RDA開中斷(5)中斷過程:UART0監(jiān)控RxFIFO接收數(shù)據(jù)狀況,當(dāng)達(dá)到觸發(fā)級別,向VIC申請中斷,VIC根據(jù)找到并調(diào)用針對RDA編寫的中斷服務(wù)程序.2.2UART四、UART數(shù)據(jù)發(fā)送接收3、數(shù)據(jù)發(fā)送相關(guān)(1)使用PINSEL0配置P0.0為UART0TxD0(2)使用U0LCR配置數(shù)據(jù)傳輸格式;使用U0DLL、U0DLM配置數(shù)據(jù)傳輸速率

(3)發(fā)送一字節(jié)數(shù)據(jù):將字節(jié)數(shù)據(jù)寫入寄存器U0THR

監(jiān)視U0LSR位6,當(dāng)位6=1發(fā)送完成

2.2UART

五、UART編程(1)UART0初始化(A)管腳功能配置

將管腳P0.0為UART0TxD0,將PINSEL0的位1位0配置為01即可;將管腳P0.1為UART0RxD0,將PINSEL0的位3位2配置為01即可;配置語句:

PINSEL0=

PINSEL0&0xFFFFFF00|0x05(B)UART0幀格式配置

依據(jù)實驗要求,配置U0LCR寄存器各位值,實現(xiàn)幀格式傳輸格式:8個數(shù)據(jù)位、1個停止位、無校驗8位數(shù)據(jù)D1D0=111個停止位D2=0

無校驗

D3=0配置語句:

U0LCR=0x03

2.2UART

五、UART編程(1)UART0初始化(C)波特率配置DLAB(U0LCR位7)=1時才能訪問寄存器U0DLM,U0DLL配置語句:U0LCR|=0x80依據(jù)公式BaudRate=Fpclk/([U0DLM,U0DLL]×16)計算U0DLM,U0DLL寄存器配置值其中BaudRate為波特率,比如115200BPS;U0DLM波特率16位配置值的高8位;U0DLL波特率16位配置值的低8位;Fpclk系統(tǒng)時鐘配置語句:U0DLL=(Fpclk/(BaudRate*16))&0xff//低8位

U0DLM=(Fpclk/(BaudRate*16))/256//高8位

=(Fpclk/(BaudRate*16))>>82.2UART

五、UART編程(1)UART0初始化(D)配置使用FIFO緩沖區(qū)、RDA接收中斷觸發(fā)級別為10配置U0FCR位0=1,使用FIFO緩沖區(qū)配置U0FCR位[7:6]=10,RxFIFO數(shù)據(jù)達(dá)到8字節(jié)出發(fā)接收中斷配置語句:

U0FCR=0x81;(E)配置RDA中斷類型為IRQRDA中斷源編號為6配置VICIntSelect寄存器位6=0即可配置語句:

VICIntSelect=

VICIntSelect&(~(1<<6))2.2UART

五、UART編程(1)UART0初始化(F)配置記錄、識別中斷服務(wù)程序配置VICVectCntl0的位[4:0]記錄RDA中斷源編號6配置VICVectCntl0的位[5]為1聲明VICVECTAddr0保存的是中斷源編號6的中斷源中斷服務(wù)程序配置語句:

VICVectCntl0=0x20|0x06;VICVECTAddr0=(uint32)IRQ_UART0;//IRQ_UART0為中斷服務(wù)程序(G)配置VICIntEnable的位[6]=1,開RDA中斷配置語句:

VICIntEnable&=1<<6;(H)配置RDA可申請中斷配置U0IER的位0=1,使RDA可申請中斷配置語句:

U0IER=0x01;2.2UART

五、UART編程(2)UART0編程(A)發(fā)送字節(jié)數(shù)據(jù)將字節(jié)數(shù)據(jù)寫入寄存器U0THR即完成數(shù)據(jù)發(fā)送,語句如下:

U0THR=Data;(B)中斷服務(wù)程序中斷服務(wù)程序聲明void__irq

中斷服務(wù)程序名(void)其中,__irq為中斷服務(wù)程序標(biāo)識中斷源識別:U0IIR的位[3:1]=010時為RDA中斷數(shù)據(jù)接收

從U0RBR讀取數(shù)據(jù)存入用戶接收緩沖區(qū)rcv_buf[255]中斷服務(wù)程序結(jié)束處理清除接收中斷

data=U0IIR清除正在服務(wù)的中斷服務(wù)程序地址

VICVectAddr=0x002.2UART

六、編程1、啟動IDE在WindowsXP系統(tǒng)窗口,執(zhí)行【所有程序】|ARMDeveloperSuiteV1.2|CodeWarriorForARMDeveloperSuite菜單命令,打開IDE2.2UART

六、編程1、創(chuàng)建工程:在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇工程模板:ARMExecutableImageForMagicARM2200(B)為工程起一個名字:Exp2202(C)配置工程存儲路徑:G:\Exp2202(D)擊【確定】按鈕,完成工程創(chuàng)建工程模板工程名工程存儲路徑2.2UART

六、編程工程管理窗口文件選項卡鏈接順序選項卡生成目標(biāo)2.2UART

六、編程工程管理存儲路徑內(nèi)容數(shù)據(jù)目錄工程文件輸出文件存儲路徑2.2UART

六、編程2、打開源程序編輯窗口(1)、在工程管理窗口中,展開User目錄;(2)、雙擊文件main.c,打開源程序main.c編程窗口,如下圖2.2UART

六、編程3、錄入源程序在源程序編輯窗口中,錄入程序代碼,然后執(zhí)行File|Save菜單命令,保存源程序。2.2UART

六、編程4、編譯、改錯單擊按鈕,編譯程序,如有錯誤,根據(jù)錯誤提示信息,修改程序。然后重復(fù)執(zhí)行編譯、改錯操作,直至編譯通過,生成輸出文件如下圖:編譯main.c生成的輸出文件2.2UART

六、編程5、鏈接程序單擊按鈕,鏈接程序,生成的可執(zhí)行鏡像文件如下圖:鏡像文件2.2UART

七、調(diào)試1、啟動調(diào)試器、調(diào)入要調(diào)試的鏡像文件單擊按鈕,啟動調(diào)試器AxDDebugger、調(diào)入要調(diào)試的鏡像文件Exp2201.axf,如下圖:2.2UART

七、調(diào)試2、計算機端運行SerialPort202.Exe程序,執(zhí)行“發(fā)送接收數(shù)據(jù)”菜單命令3、執(zhí)行程序單擊按鈕,執(zhí)行程序4、觀察分析計算機端錄入數(shù)據(jù),然后執(zhí)行”發(fā)送”菜單命令,觀察計算機端是否接收到數(shù)據(jù),如果接收到,調(diào)試結(jié)束;否則。按如下順序檢查:串行電纜連接是否牢固UART0初始化是否正確接收兩端幀格式、波特率是否一致

2.3.1蜂鳴器實驗一、目的(1)掌握蜂鳴器的工作原理。(2)掌握蜂鳴器接口電路的設(shè)計方法。(3)掌握蜂鳴器編程方法。2.3.1蜂鳴器實驗二、題目存儲器0x40003100字節(jié)單元保存嵌入式系統(tǒng)各部件的運行狀態(tài)數(shù)據(jù),數(shù)據(jù)位信息定義如下:

0=0存儲器無故障;

=1存儲器故障;

位1=0

串行通信無故障;

=1串行通信故障。依據(jù)內(nèi)存0x40003100單元的內(nèi)容,控制蜂鳴器報警。報警策略如下:存儲器故障,每隔一定時間蜂鳴器發(fā)出“嘟嘟”報警聲;串行通信故障,每隔一定時間蜂鳴器發(fā)出“嘟嘟嘟”報警聲。如果兩種錯誤都發(fā)生,則按以上策略交替報警。編寫程序,實現(xiàn)以上功能。2.3.1蜂鳴器實驗

三、蜂鳴器接口電路(1)Buzzer為蜂鳴器;8550為三極管;R88、R87、R86為電阻(2)p0.7為ARM處理器LPC2290P0口的第七引腳(3)P0.7為低電平時,三極段8550的ec級導(dǎo)通,電源正通過三極管ec作用于蜂鳴器,蜂鳴器響;P0.7為高電平時,三極段8550的ec級截止,蜂鳴器一端無電源,蜂鳴器不響;2.3.1蜂鳴器實驗

四、蜂鳴器編程1、配置P0.7引腳為GPIO功能

將PINSEL0的位[15:14]配置00,P0.7引腳即為GPIO功能配置語句:

PINSEL0&=(~(3<<14));

2、配置P0.7引腳為GPIO輸出

將IO0DIR的位7配置為1,P0.7引腳即為GPIO輸出功能配置語句:IO0DIR|=1<<7;

3、控制蜂鳴器響與不響

將IO0SET的位[7]配置1,P0.7引腳輸出高電平,蜂鳴器不響;配置語句:IO0SET|=1<<7;

將IO0CLR的位[7]配置1,P0.7引腳輸出低電平,蜂鳴器響;配置語句:IO0CLR|=1<<7;

2.3.1蜂鳴器實驗

五、編程1、啟動IDE在WindowsXP系統(tǒng)窗口,執(zhí)行【所有程序】|ARMDeveloperSuiteV1.2|CodeWarriorForARMDeveloperSuite菜單命令,打開IDE2.3.1蜂鳴器實驗五、編程1、創(chuàng)建工程:在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇工程模板:ARMExecutableImageForMagicARM2200(B)為工程起一個名字:Exp2301(C)配置工程存儲路徑:G:\Exp2301(D)擊【確定】按鈕,完成工程創(chuàng)建工程模板工程名工程存儲路徑2.3.1蜂鳴器實驗五、編程工程管理窗口文件選項卡鏈接順序選項卡生成目標(biāo)2.3.1蜂鳴器實驗五、編程工程管理存儲路徑內(nèi)容數(shù)據(jù)目錄工程文件輸出文件存儲路徑2.3.1蜂鳴器實驗五、編程2、打開源程序編輯窗口(1)、在工程管理窗口中,展開User目錄;(2)、雙擊文件main.c,打開源程序main.c編程窗口,如下圖2.3.1蜂鳴器實驗五、編程3、錄入源程序在源程序編輯窗口中,錄入程序代碼,然后執(zhí)行File|Save菜單命令,保存源程序。2.3.1蜂鳴器實驗五、編程4、編譯、改錯單擊按鈕,編譯程序,如有錯誤,根據(jù)錯誤提示信息,修改程序。然后重復(fù)執(zhí)行編譯、改錯操作,直至編譯通過,生成輸出文件如下圖:編譯main.c生成的輸出文件2.3.1蜂鳴器實驗五、編程5、鏈接程序單擊按鈕,鏈接程序,生成的可執(zhí)行鏡像文件如下圖:鏡像文件2.3.1蜂鳴器實驗六、編程1、啟動調(diào)試器、調(diào)入要調(diào)試的鏡像文件單擊按鈕,啟動調(diào)試器AxDDebugger、調(diào)入要調(diào)試的鏡像文件Exp2301.axf,如下圖:2.3.1蜂鳴器實驗六、編程2、調(diào)用變量窗口(1)單擊按鈕,進入用戶程序調(diào)試窗口(2)執(zhí)行菜單ProcessorViews|Variables菜單命令,打開變量窗口,如下圖:2.3.1蜂鳴器實驗六、編程3、調(diào)試控制蜂鳴器(1)、調(diào)試前準(zhǔn)備將鼠標(biāo)移動到行號38前的空白處,雙擊鼠標(biāo),去掉斷點將鼠標(biāo)移動到行號21前的空白處,雙擊鼠標(biāo),設(shè)置斷點,記錄為斷點1將鼠標(biāo)移動到行號23前的空白處,雙擊鼠標(biāo),設(shè)置斷點,記錄為斷點2點擊按鈕,執(zhí)行程序,程序停在斷點1處2.3.1蜂鳴器實驗六、編程3、調(diào)試控制蜂鳴器(2)、配置蜂鳴器控制數(shù)據(jù)執(zhí)行ProcessorViews|Memory菜單命令,打開存儲器窗口在StartAddress欄輸入0x40003100,回車確認(rèn)雙擊存儲單元0x40003100,錄入0x03,回車確認(rèn),如下圖:2.3.1蜂鳴器實驗六、編程3、調(diào)試控制蜂鳴器(3)、調(diào)試點擊按鈕,程序停在斷點2處。如果蜂蜜器響,正確;如果蜂鳴器不響。檢查P0.7初始化、蜂鳴器電路。點擊按鈕,程序停在斷點1處。蜂蜜器不響。去掉斷點1、斷點2,運行程序。4、思考題設(shè)計調(diào)試項,按照設(shè)計思路調(diào)試2.3.2

LED顯示與按鍵識別實驗

一、目的(1)進一步掌握GPIO接口電路設(shè)計方法。(2)了解LED、按鍵接口電路的工作原理。(3)掌握LED顯示控制、按鍵識別的編程方法。2.3.2

LED顯示與按鍵識別實驗

二、題目1、

8個LED按流水方式顯示,即LED1亮,其他LED滅;然后LED2亮,其他LED滅;以此類推。重復(fù)進行以上操作。2、

當(dāng)LED2、LED4、LED6、LED8亮?xí)r,蜂鳴器響;否則蜂鳴器不響。3、

檢測KEY1按鍵,如果KEY1按下,當(dāng)前LED、蜂鳴器操作狀態(tài)保持不變;否則,繼續(xù)執(zhí)行1、2控制策略。2.3.2

LED顯示與按鍵識別實驗

三、接口電路1、按鍵識別電路(1)、Key1為按鍵;(2)、R18電阻(3)、P0.20為嵌入式處理器LPC2290P0口的20引腳(4)、工作原理:Key1鍵處于按下狀態(tài),P0.20引腳為低電平;Key1鍵處于釋放狀態(tài),P0.20引腳為高電平.編寫程序測試P0.20引腳為低電平或高電平從而確認(rèn)KEY1鍵是按下或未按下。2.3.2

LED顯示與按鍵識別實驗

三、接口電路1、按鍵識別電路(1)、LED1、LED2、。。。、LED8為發(fā)光二極管;(2)、R89、R90、R91、R92、R93、R94、R95、R96為電阻(3)、P2.16、。。。P2.23為嵌入式處理器LPC2290P2口的引腳(4)、工作原理:8路發(fā)光二極管控制電路。以LED1發(fā)光二極管控制電路為例,說明發(fā)光二極管控制原理:P2.16引腳高電平,LED1滅;P2.16引腳低電平,LED1亮;編寫程序,控制P2.16引腳為高低電平,從而可控制LED1滅或亮。2.3.2

LED顯示與按鍵識別實驗

四、Key1編程1、配置P0.20引腳為GPIO功能

將PINSEL1的位[9:8]配置00,P0.20引腳即為GPIO功能配置語句:

PINSEL1&=(~(3<<8));

2、配置P0.20引腳為GPIO輸入

將IO0DIR的位20配置為0,P0.20引腳即為GPIO輸入功能配置語句:IO0DIR&=~(1<<20);

3、KEY1按鍵識別原理

IO0PIN寄存器位20=0P0.20引腳為低電平;

IO0PIN寄存器位20=1P0.20引腳為高電平;編寫程序,判斷IO0PIN位20為0或1來判斷KEY1按鍵是否按下2.3.2

LED顯示與按鍵識別實驗

五、LED編程1、配置P2.16、。。。、P2.23引腳為GPIO輸出

將IO2DIR的[23:16]配置為1,P2.16、。。。、P2.23引腳即為GPIO輸出功能配置語句:IO2DIR&=0xFF<<16;

2、控制LED(1)、僅控制LED1配置IO2SET的位[16]=1P2.16引腳為高電平,LED1滅,控制數(shù)據(jù)為0xFF01FFFF配置

IO2CLR的位[16]=1P2.16引腳為低電平,LED1亮,控制數(shù)據(jù)為0xFF01FFFFLED2、。。。、LED8控制原理與LED1相同,控制數(shù)據(jù)分別為0xFF02FFFF、0xFF04FFFF、

0xFF08FFFF、

0xFF10FFFF、

0xFF20FFFF、

0xFF40FFFF、

0xFF80FFFF(2)編寫程序,使LED1、。。。、LED8按照控制策略顯示。2.3.2

LED顯示與按鍵識別實驗

六、編程1、啟動IDE在WindowsXP系統(tǒng)窗口,執(zhí)行【所有程序】|ARMDeveloperSuiteV1.2|CodeWarriorForARMDeveloperSuite菜單命令,打開IDE2.3.2

LED顯示與按鍵識別實驗

六、編程1、創(chuàng)建工程:在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇工程模板:ARMExecutableImageForMagicARM2200(B)為工程起一個名字:Exp2302(C)配置工程存儲路徑:G:\Exp2302(D)擊【確定】按鈕,完成工程創(chuàng)建工程模板工程名工程存儲路徑2.3.2

LED顯示與按鍵識別實驗

六、編程工程管理窗口文件選項卡鏈接順序選項卡生成目標(biāo)2.3.2

LED顯示與按鍵識別實驗

六、編程工程管理存儲路徑內(nèi)容數(shù)據(jù)目錄工程文件輸出文件存儲路徑2.3.2

LED顯示與按鍵識別實驗

六、編程2、打開源程序編輯窗口(1)、在工程管理窗口中,展開User目錄;(2)、雙擊文件main.c,打開源程序main.c編程窗口,如下圖2.3.2

LED顯示與按鍵識別實驗

六、編程3、錄入源程序在源程序編輯窗口中,錄入程序代碼,然后執(zhí)行File|Save菜單命令,保存源程序。2.3.2

LED顯示與按鍵識別實驗

六、編程4、編譯、改錯單擊按鈕,編譯程序,如有錯誤,根據(jù)錯誤提示信息,修改程序。然后重復(fù)執(zhí)行編譯、改錯操作,直至編譯通過,生成輸出文件如下圖:編譯main.c生成的輸出文件2.3.2

LED顯示與按鍵識別實驗

六、編程5、鏈接程序單擊按鈕,鏈接程序,生成的可執(zhí)行鏡像文件如下圖:鏡像文件2.3.2

LED顯示與按鍵識別實驗

六、編程1、啟動調(diào)試器、調(diào)入要調(diào)試的鏡像文件單擊按鈕,啟動調(diào)試器AxDDebugger、調(diào)入要調(diào)試的鏡像文件Exp2301.axf,如下圖:2.3.2

LED顯示與按鍵識別實驗

六、編程2、調(diào)用變量窗口、存儲窗口(1)單擊按鈕,進入用戶程序調(diào)試窗口(2)執(zhí)行菜單ProcessorViews|Variables菜單命令,打開變量窗口,如下圖:(3)執(zhí)行菜單ProcessorViews|Memory菜單命令,打開存儲器窗口,如下圖:2.3.2

LED顯示與按鍵識別實驗

六、編程3、調(diào)試(1)、KEY1按鍵識別鼠標(biāo)移動到行號29前的空白處,雙擊鼠標(biāo),刪除斷點鼠標(biāo)移動到行號18前的空白處,雙擊鼠標(biāo),設(shè)置斷點,記錄為斷點1單擊按鈕,執(zhí)行程序,程序停在斷點1;單擊按鈕,執(zhí)行x=IO0PIN語句在Variable窗口,鼠標(biāo)移動到變量x值處,右擊鼠標(biāo),執(zhí)行Format|Binary菜單命令。鍵KEY1未按下,查看變量X位20的值,X[20]=0按下KEY1單擊按鈕,執(zhí)行程序,程序停在斷點1;單擊按鈕,執(zhí)行x=IO0PIN語句在Variable窗口,鼠標(biāo)移動到變量x值處,右擊鼠標(biāo),執(zhí)行Format|Binary菜單命令。鍵KEY1按下,查看變量X位20的值,如果X[20]=1,正確;否則,錯誤,錯誤檢查次序為:P0.20初始化KEY1電路如果以上都正確,KEY1損壞。2.3.2

LED顯示與按鍵識別實驗

六、編程3、調(diào)試(2)、調(diào)試LED鼠標(biāo)移動到行號18前的空白處,雙擊鼠標(biāo),刪除斷點鼠標(biāo)移動到行號41前的空白處,雙擊鼠標(biāo),設(shè)置斷點,記錄為斷點2單擊按鈕,執(zhí)行程序,程序停在斷點1處,如果有一個LED亮,依據(jù)DISP_TAB[nStep]查看顯示數(shù)據(jù),判別顯示數(shù)據(jù)是否對應(yīng)亮LED,如果不對應(yīng),修改顯示數(shù)據(jù)。如果沒有一個LED亮,依據(jù)以下順序排除錯誤:依據(jù)DISP_TAB[nStep]查看顯示數(shù)據(jù),如果錯,修改顯示數(shù)據(jù)查看P2.16、。。。、P2.23初始化,如有錯,修改錯誤查看電路,如果電路沒有問題,LED相應(yīng)電路損壞(3)、運行程序刪除所有斷點單擊按鈕,執(zhí)行程序。按照要求操作,觀察程序運行效果.2.3.2

LED顯示與按鍵識別實驗

六、編程3、調(diào)試控制蜂鳴器(2)、配置蜂鳴器控制數(shù)據(jù)執(zhí)行ProcessorViews|Memory菜單命令,打開存儲器窗口在StartAddress欄輸入0x40003100,回車確認(rèn)雙擊存儲單元0x40003100,錄入0x03,回車確認(rèn),如下圖:2.3.2

LED顯示與按鍵識別實驗

六、編程3、調(diào)試控制蜂鳴器(3)、調(diào)試點擊按鈕,程序停在斷點2處。如果蜂蜜器響,正確;如果蜂鳴器不響。檢查P0.7初始化、蜂鳴器電路。點擊按鈕,程序停在斷點1處。蜂蜜器不響。去掉斷點1、斷點2,運行程序。4、思考題設(shè)計調(diào)試項,按照設(shè)計思路調(diào)試2.4.1外部中斷一、目的(1)掌握蜂鳴器的工作原理。(2)掌握蜂鳴器接口電路的設(shè)計方法。(3)掌握蜂鳴器編程方法。2.4.1外部中斷二、題目1、內(nèi)容編寫程序,實現(xiàn)以下功能:如果按鍵以前蜂鳴器響,則按鍵后,蜂鳴器不響;如果按鍵以前蜂鳴器不響,則按鍵后,蜂鳴器響。2、

編程要求采用外部中斷技術(shù)識別KEY1按鍵。2.4.1外部中斷三、接口電路(1)、Key1為按鍵;(2)、R18電阻(3)、P0.20為嵌入式處理器LPC2290P0口的20引腳(4)、工作原理:Key1鍵處于按下狀態(tài),P0.20引腳為低電平;Key1鍵處于釋放狀態(tài),P0.20引腳為高電平.(5)按鍵操作:按KEY鍵,在P0.20引腳輸入信號為可通過P0.20高電平向電平跳變作為按鍵識別方法。編寫程序采用中斷方式識別KEY1按鍵操作。2.4.1外部中斷四、Key1編程1、配置P0.20引腳為GPIO功能

將PINSEL1的位[9:8]配置11,P0.20引腳為EINT3功能配置語句:

PINSEL1&=3<<8;

2、配置EINT3中斷類型為IRQ方式EINT3中斷編號為17,只要配置VICIntSelect位17為0即可,配置語句:VICIntSelect=VICIntSelect&(~(1<<17));3、配置中斷向量配置中斷識別,即設(shè)置VICVectCntl0位5為1;配置中斷識別號(即中斷編號),即設(shè)置VICVectCntl0位[4:0]為17配置VICVectAddr0中斷服務(wù)程序首地址配置語句:VICVectCntl0=0x20|17; VICVectAddr0=(int)IRQ_Eint3; 2.4.1外部中斷四、Key1編程4、配置中斷觸發(fā)模式EXTINT=1<<3;//清除EINT3中斷標(biāo)志EXTMODE=1<<3;//設(shè)置EINT3中斷為邊沿觸發(fā)模式

EXTPOLAR=0x00;//設(shè)置EINT3中斷為下降沿觸發(fā)5、配置EINT3開中斷

配置VICIntEnable位17=1,使EINT3開中斷配置語句:VICIntEnable=1<<17;6、中斷服務(wù)程序void__irqIRQ_Eint3(void){

中斷處理EXTINT=1<<3; //清除EINT3中斷標(biāo)志

VICVectAddr=0;}2.4.1外部中斷五、編程1、啟動IDE在WindowsXP系統(tǒng)窗口,執(zhí)行【所有程序】|ARMDeveloperSuiteV1.2|CodeWarriorForARMDeveloperSuite菜單命令,打開IDE2.4.1外部中斷五、編程1、創(chuàng)建工程:在IDE窗口中,執(zhí)行File|New菜單命令,打開New窗口(A)選擇工程模板:ARMExecutableImageForMagicARM2200(B)為工程起一個名字:Exp2401(C)配置工程存儲路徑:G:\Exp2401(D)擊【確定】按鈕,完成工程創(chuàng)建工程模板工程名工程存儲路徑2.4.1外部中斷五、編程工程管理窗口文件選項卡鏈接順序選項卡生成目標(biāo)2.4.1外部中斷五、編程工程管理存儲路徑內(nèi)容數(shù)據(jù)目錄工程文件輸出文件存儲路徑2.4.1外部中斷五、編程2、打開源程序編輯窗口(1)、在工程管理窗口中,展開User目錄;(2)、雙擊文件main.c,打開源程序main.c編程窗口,如下圖2.4.1外部中斷五、編程3、錄入源程序在源程序編輯窗口中,錄入程序代碼,然后執(zhí)行File|Save菜單命令,保存源程序。2.4.1外部中斷五、編程4、編譯、改錯單擊按鈕,編譯程序,如有錯誤,根據(jù)錯誤提示信息,修改程序。然后重復(fù)執(zhí)行編譯、改錯操作,直至編譯通過,生成輸出文件如下圖:編譯main.c生成的輸出文件2.4.1外部中斷五、編程5、鏈接程序單擊按鈕,鏈接程序,生成的可執(zhí)行鏡像文件如下圖:鏡像文件2.4.1外部中斷六、編程1、啟動調(diào)試器、調(diào)入要調(diào)試的鏡像文件單擊按鈕,啟動調(diào)試器AxDDebugger、調(diào)入要調(diào)試的鏡像文件Exp2301.axf,如下圖:2.4.1外部中斷六、編程2、調(diào)用變量窗口(1)單擊按鈕,進入用戶程序調(diào)試窗口(2)執(zhí)行菜單ProcessorViews|Variables菜單命令,打開變量窗口,如下圖:2.4.1外部中斷六、編程3、調(diào)試是否可調(diào)用中斷(1)、調(diào)試前準(zhǔn)備將鼠標(biāo)移動到行號44前的空白處,雙擊鼠標(biāo),去掉斷點將鼠標(biāo)移動到行號33前的空白處,雙擊鼠標(biāo),設(shè)置斷點,記錄為斷點1將鼠標(biāo)移動到行號36前的空白處,雙擊鼠標(biāo),設(shè)置斷點,記錄為斷點2點擊按鈕,執(zhí)行程序2.4.1外部中斷六、編程3、調(diào)試是否可調(diào)用中斷(2)、按KEY1鍵,進入中斷服務(wù)程序按下KEY1鍵如果進入中斷服務(wù)程序,則調(diào)試完畢;否則,俺下邊檢查順序檢查:調(diào)試KEY1按鍵是否損壞檢查初始化(P0.20、中斷初始化、中斷服務(wù)程序定義)2.4.1外部中斷六、編程3、調(diào)試是否可調(diào)用中斷(3)、測試去掉所有斷點點擊按鈕,運行程序。觀察蜂鳴器蜂鳴效果2.4.2

定時器實驗

一、目的(1)了解定時器的組成與工作原

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論