嵌入式系统实验教程_第1页
嵌入式系统实验教程_第2页
嵌入式系统实验教程_第3页
嵌入式系统实验教程_第4页
嵌入式系统实验教程_第5页
已阅读5页,还剩249页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1 EasyARM2200开发板硬件结功能特 硬件原 硬件结 硬件使用的资 其 第2 ADS集成开发环境及EasyJTAG仿真器应ADS1.2集成开发环境的组 AXD调试器简 工程的编 工程的调 为ADS1.2增加LPC2200工程模 使用LPC2200工程模板建立工 EasyJTAG仿真器的安装与应 程 片内FLASH的片外FLASH的第3 基础实ADS1.2集成开发环境练 汇编指令实验 汇编指令实验 汇编指令实验 汇编指令实验 汇编指令实验 ARM微控制器工作模式实 C语言程序实 C语言调用汇编程序实 GPIO输出控制实验 GPIO输出控制实验 GPIO输入实 器重实 外部中断实验 外部中断实验 外部器接口实验 外部器接口实验 定时器实验 定时器实验 Modem接口实 I2C接口实验 I2C接口实验 SPI接口实 输出实验 模数转换器实 WDT实 低功耗实验 低功耗实验 图形液晶显示实 第4 基于μC/OS-II的实蜂鸣器控制实 串口中间件应用实 I2C总线驱动中间件实 SPI总线驱动中间件实 时钟显示实 第5 综合实USB-E2PROM编程器实 ZLG/CF驱动接口函数实 UDP通讯实 TCP通讯实 系统消息循环实 接口实 附录AEasyARM的使用附录B常见问题解答第1 开发板硬件结一些键盘、LED、RS232等常用功能部件,并具有IDE硬盘接口、CF卡接口、以太网接口和MODEM接口等等,并设计有外设PACK,极大地方便了用户在32位ARMLPC2210/2212/2214/2290/2292/2294是世界首款可加密的具有外部器接口的,144引脚LQFP封装,3.3V和1.8V系统电源,PLL时钟调整,功耗更低。使用CPUPACK,可以使用多种兼容(LPC2210/2212/2214/2290/2292/2294/支持外设PACK,可外接丰富外设,并可选配多种外设PACKADC实验EasyARM2200开发板功能框图见图1.1ADCADCCAN2/2294等有效IDECF卡键盘与LED(I2C接口驱动器)I2C储RTL8019RJ45RS232换器(8路接4M16MRS232换器(2路9D型口(20针5V稳压1.1EasyARM2200开发板功能框EasyARM2200开发板电路原理图如图1.2所示电源电路LPC2000ARM7微控制器均要使用两组电源,I/O3.3V,内核及片内外设供电电源为1.8V,所以系统设计为3.3V应用系统。首先,由CZ1电源接口输入9V直流电源,二极管D1防止电源反接,经过C1、C4滤波,然后通过LM7805将电源稳压至5V,再使用LDO(低压差电源)稳压输出3.3V及1.8V电压。PACKLM2575能提供足够的电流。EasyARM2200开发板的5V稳压电路可以使用LM7805线性稳压,电路原理如图1.4所示。1.35V电源电路—1.45V电源电路—LDO采用了SPX1117M3-1.8和SPX1117M3-3.3,其特点为输出电流大,输出电压精度高,稳定性高。系统电源电路如图1.5所示。1.5系统电源电SPX1117系列LDO输出电流可达800mA,输出电压的精度在±1%以内,还具有电出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。地与数字电源/数字地进行,但其PCB板采用了大面积敷地,以降低噪声。注意:EasyARM2200开发板使用的电源是9V直流电源,由CZ1电源接口输入,接头上的电源极性为外正内负。当开发板电源上电后,POWER指示灯应点亮。复位电路复位电路使用了微处理器电源SP708S,提高系统的可靠性。由于在进行JTAG调试时,nRST、TRSTJTAG74HC125进行驱动,电路如图1.6所示。1.6系统复位电如图1.6中,信号nRST连接到LPC2210的复位脚RESET,信号nTRST连接到LPC2210JTAG接口电路复位脚TRST。当复位按键RST按下时,SP708S立即输由上拉电阻R3、R4将信号nRS RST上拉为高电平,系统可正常运行或JTAG仿真调系统时钟电路LPC2000系列ARM7微控制器可使用外部晶振或外部时钟源,PLL电路可调整系统时钟,使系统运行速度更快(CPU60MHz)PLL功能及钟频率范围是10MHz~25MHz。EasyARM2200开发板使用了外部11.0592MHz晶振,电路如图1.7所示,用1MΩ电阻精确,同时能够支持LPC2000系列ARM7微控制器PLL功能及ISP功能。1.7系统时钟电JTAG接口电采用ARM公司标准20脚JTAG仿真调试接口,JTAG信号的定义及与LPC2210的连接如1.8所示。图中,JTAG接口上的信nRSTnTRST与开发板的复位电路连接(参考图1.6),形成线与的关系,达到共同控制系统复位的目的。根据LPC2210的应用手册说明,在RTCK引脚接一个4.7KΩ的下拉电阻,使系统复位后LPC2210JTAG接口使能,这样就可以直接进行JTAG仿真调试了。如果用户需要使用P1.26~P1.31作I/O,不进行JTAG仿真调试,则可以在用户程序中通过设置PINSEL2寄存器来使LPC2210JTAG接口禁能。另外,在TRACESYNC引脚通过跳线器JP10方可使用P1.16~P1.25作I/O。1.8JTAG接口电串口及MODEM接口电路3.3VSP3232ERS232电平转换,SP3232E3V工作电源的RS232转换。另外,LPC2000系列ARM7微控制器的UART1带有完整的调制解调器(MODEM)接口,所以要使用8路的RS232转换SP3243ECA。如图1.9所示,JP3UART1口线连接跳线,当把它们断开时,这些口线保留给用户作为其它功能使用。CZ3MODEMLPC2000ARM7UART1控制MODEM拔号、通讯等等。需要注意的是,LPC2000ARM7ISP使能引脚(P0.14口)DCD1P0.14ISP状态;同JP1DCD1MODEM接口1.9串口MODEM接口电键盘及LED显示电路EasyARM2200168LEDI2C接口的键盘与LED驱动ZLG7290,电路如图1.10、图1.11所示。ZLG7290是一款式功能强大的键盘与LED驱动,最大支持64个按键及8位共阴LED数码管。JP5可以断开EasyARM2200开发板上I2C器件与LPC2210的连接。另外,EasyARM2200开发板采用了一74HC5958LED灯,如1.12所示,其时钟(SCK)、数据(SI)分别接到LPC2210的SPI接口的SCLK0、MOSI0,这样就可以发送数据74HC595片选RCK74HC595输出触发端)与P0.8口连P0.8控制74HC595数据锁存输出;而最输出(SQH)连接到LPC2210的SPI接口的MISO0,可用来读回数据。这样连接就可以进行SPI接口控制实验,并能把74HC595的移位输出读回来(由MISO0读回)。这一部分电路可用JP8跳开。P0.5、P0.6、P0.7SSEL0/110KΩ的上拉电阻。在EasyARM2200开发板上,P0.7复用作以太网RT8019AS的中断输入,所以在使用硬件SPI8LED灯时,要断开P0.7RT8019AS的连接(JP4跳线器)。3512476835124768935124768924246135R14220x8C18C19 Bit7Bit6Bit5Bit4 P0.3SDAP0.2SCLP0.30EINT3 HEADERR47 1.108LED数码管驱动电1.1116按键连接电1.12SPILED若需要进行大量数据显示,则可使用EasyARM.exe进行模拟显示。EasyARM.exe是一款用于EasyARM2200开发实验板的上位机,具有8位模拟数码管显示,全仿真蜂鸣器及电Q2P0.71时,Q2JP9断开,Q2截止,蜂鸣器停止蜂鸣。1.13蜂鸣器控Q2采用开关三极管8550,其主要特点是放大倍数高hFE=300,最大集电极电流ICM=1500mA,特征频率fT=100MHz。R89用于限制Q2的基极电P0.70时R89的电流1.1所示3.3VUec≈0VUeb>Uec,Q2为深度饱和导通,为蜂鸣器提供足够的电流。Ir3.3Veb3.30.70.0026 ( 由于P0.7SPI部件的SSEL0复用,所以此引脚上接一上拉电阻R88,防止在使用硬件SPI总线时由于SSEL0引脚悬空导致SPI操作出错。如图1.14所示,在输出实验上,使用6(即P0.9引脚)输出,经过R90、C34进行RC滤波,实现DAC控制,而JP2可以断开这部分电路。测试点可直接测试波形,DAC测试点可以测量DAC的电压值。图1.14DAC电ADC电路LPC2114/2124/2119/2129/2194410ADC转换器LPC22102212221422902292/2294具有810ADC转换器,其参考电压3.3V(V3a引脚提供),参考电压的精度会影响ADC转换结果。EasyARM2200开发实验板提供了直流电压测量电路,如图1.15W1、W2ADCVIN1、VIN2测试点上用万能表检查当前电压值。R34、R35为I/O口保护电阻,当ADC输入电压调整到3.3V或0V时,而P0.27P0.28GPIO0/1,这两个电阻保证电路不产生短路故障。1.15ADC实验电CAN接口电路LPC2119/2129/2290/22922CAN接口,LPC2194/22944CANEasyARM2200CANJ51.16CAN接口与CAN收发器连接(如TJA1050),即可进行CAN总线通讯操作。1.16CAN接口电外设PACK接口电路LPC2200系列ARM7微控制器是总线开放型的微控制器,它是通过外部器控制BLS1CS2PACK0x82000000~0x82FFFFFF。用户可以使用CS2信号及地址进行译码,达到地址再次分配的目的。外设PACK上还1.17PACK接口电以太网接口电路EasyARM2200开发板上设计有以RTL8019AS为的以太网接口电路,电路原1.18所示。LPC221016RTL8019AS进行,即数据总线D0~D15与的SD0~SD16连接,由于RTL8019AS工作电源是5VLPC2210I/O电压为3.3V,所以在总线上串接470Ω保护电阻。1.18以太网接SA19均接地,SA9接电源。SA8与地址总线的A22相连,SA5与LPC2210的外部器BANK3片选CS3相连,当SA8为1,SA5为0时,选中RTL8019AS,即其操作地址0x83400000~0x8340001F。RTL8019AS。图形液晶模块接口电路EasyARM2200SMG240128A点阵图形液晶模块或其它兼容模块连接使用,接口电路如图1.198位总线方式连接C/DA1A1控制模块处理数据/C/D与A1LPC221016位总线方式操作该图形液晶模块(8位数据被忽略)。模块的片选信号由LPC2210的A22和外部器BANK3片选CS3相“或”后A22nCS300x83000000,命令操作地址为0x83000002。1.19图形液晶模块接口电系统器电EasyARM2200开发板扩4MbitSRAM(IS61LV25616AL)16MbitF160),电路如图1.20所示。为了方便程序的调试及最终代码的应用,使用了当最终代码的到FLASH时,分配FLASH为BANK0地址,SRAM为BANK1地址,端,使系统复位时BOOT1、BOOT0为0b01。16D0~D15A1~A2016SRAM,BLS0、BLS1信号用于控制低字节、高字节的写操作。更详细的接口使用方法请参考LPC2210应用手册的外部器控制器(EMC)部分说明。LPC2210是没有片内FLASH,所以只能使用外部的FLASH保存用户最终的图1.20器接口电电平最小值为4.0VGPIO的输出电平才3.3V,所以只能使用3.3VCF卡供电。为了简化编程;而数据总线D00-D15使用P2.16~P2.31使用连续的GPIO,也是为了编程方便;其IO引脚都没有特别的要1.1LPC2210GPIO引脚CF卡及IDE硬盘引脚连接分配表,表中描述了各GPIOCFIDE硬盘对应的控制信号引脚。1.1LPC2210的GPIO引脚CFIDE硬盘连接引脚分CFIDE硬CFIDE硬--OOIOI--O接上CFIDE硬CFIDE硬--OO--O--II--I-IOI--O:表中“1 1 33P2.28D285P0.17CAP12ATA

VDD31.21LPC2210CF接口

P223

P224P225P226P227P228

P021P022

P020 ATA

P125P1201.22LPC2210IDE接口D12PACK的元件分布。D12PACKJ1、J2EasyARM2200J6、J7相连。PDIUSBD12连接到LPC22101.24PDIUSBD12与LPC2210的连接关系,如表1.2所示。1.2PDIUSBD12LPC2210连接关 D0~PDIUSBD12数据总D0~PDIUSBD12地址总PDIUSBD12PDIUSBD12读使能(低电平有效PDIUSBD12写使能(低电平有效PDIUSBD12中断PDIUSBD12复位PDIUSBD12挂起RST_USB、SUSPLPC2210输出引脚控制,PDIUSBD121.23D12PACK元件分布1.24PDIUSBD12LPC22xx硬件连接原理EasyARM2200开发板布局图如图1.25所示1.25EasyARM2200元件布局EasyARM2200开发实验板跳线器说明如表1.3所示,跳线器分布如图1.26所示1.3EasyARM2200跳线器一览DAC转换的跳 UART1的RS232接口跳线,J6、J6、J6、J6、使用硬件I2C时需断ZLG7290I2C———J3、INSIDE:OUTSIDE:外74HC595SPI接口连接的SPI接口输出控制LED1~LED8——ETM调试接口使能,J3、J17、 1.26EasyARM2200 ISPLPC2000ARM7微控制ISP功能P0.14引为低电平ISP状态。JP1P0.14P0.14口强制为低电平,复位系统后即进入ISP状态。JP1跳线说明见表1.4。1.4JP1跳ISP DAC电路接口在EasyARM2200开发板上将P0.9/6引脚连接到测试点上,同时,开发板6输出连接到RC滤波电路,DA电压由DAC测试点上测量。JP2跳线器说明见1.5。1.5JP2跳—JP3UART1UART1MODEMP0.8~P0.158I/OMODEMEasyARM2200JP3跳线进行RS232CZ3相连。JP3跳线器说明见表1.6。1.6JP3跳P0.12/DSR1SP3243E连P0.13/DTR1SP3243EJP4NETJP4跳线器是设置以太网控制器RTL8019AS的中断信号及复位信号是否连接到LPC2210JP4跳线全部短接时,RTL8019ASP0.7/EINT2,复位信号连接到P0.6上。JP4跳线器说明见表1.7。1.7JP4跳JP5I2CEasyARM2200开发板上有两个I2C器件,一个是E2PROMCAT24WC02,另外一个是键盘与LED驱动ZLG7290,这两个器件的I2C接口通过JP5与LPC2210连接。当1.8JP5跳I2C器件的SDAP0.3/SDA连I2C器件的SCLP0.2/SCLZLG7290中断信号与P0.30/EINT3连JP6板内器分EasyARM2200开发板上使用了LPC2210外部器接口的BANK0、BANK1扩线器说明见表1.9。1.9JP6跳IS61LV25616分配可以使用SST39VF160起可以使用开发板在出厂时已在SST39VF160烧写了一个演示程序,所以JP6的默认设置为“SST39VF160BANK0JTAGJP6设置为“IS61LV25616分配为BANK0”。JP7系统起动选择LPC2200系列具有外部器接口通过BOOT1BOOT0引脚设置可以选择片内可以选择BOOT1引脚接上拉电阻还是接下拉电阻。JP7跳线器说明见表1.10。1.10JP7跳说明:EasyARM2200BOOT0JP7INSIDEJP8SPIJP8跳线器是设置74HC595是否连接P0.4/SCK0P0.5/MISO0P0.6/MOSI0和74HC595P0.4/SCK0、P0.5/MISO0、P0.6/MOSI0P0.8。JP8跳线器说明见1.11。1.11JP8跳 蜂鸣器电路接口跳线器说明见表1.12。1.12JP9跳— ETMJP10跳线器是使能ETM调试接口,当JP10跳线短接时,在系统复位后1.13JP10跳使能ETM调试接P1.20引脚带上拉电EasyARM2200开发实验板连接器说明如表1.14所示,跳线器分布如图1.27所示1.14EasyARM2200连接器电源输入(DCLCM接兼容SMG240128A液晶模ADCI/O接CANI/O接CF卡接ETM调试接

1.27EasyARM2200 LCMJ1LCMSMG240128A的液晶模块。J1的引脚定义如图1.28所示。 1.28J1连接器的引1.28 J220PINJTAG接口,当需JATG仿真调试时,将JTAG仿真器J2连接即JTAG仿真调试时(PINSEL2bit20),P1.27~P1.31可作为GPIO使用。J2的引脚定义如图1.29所示。123456789——图.29J2连接器的引 CAP、MAT、EINTSPI1功能等。J3的引脚定义如图1.30所示。— 26 1.30J3连接器的引器件地址分配EasyARM2200开发板器件地址分配表见表1.15表1.15器件地址分配JP6:Bank0-根据需要将这两个器件分别分配到Bank0Bank1存JP6:Bank1-JP6:Bank0-JP6:Bank1-—SMG240128A——16位总线接口,有P0.10~P0.13、P0.15/EINT2片内地址空EasyARM2200开发板使用CPUPACK可以使用多种兼容/2292/2294/LPC2114/2124/2119/2129/2194等。当使用不同的时,其片内地址空间有所不同,见表1.16。表1.16片内地址空LPC2210无LPC2114~x4003FFBoot扇区不能保存LPC2292~x4003FFBoot扇区不能保存I/OEasyARM2200开发板部分I/O器件的I/O分配表见表1.171.17I/O口分配CAT24WC02P0.2/SCLP0.3/SDACAT24WC02-(ZLG7290控制LED9ZLG7290-LED10及按键~)ZLG7290中断P0.4/SCK0(控制EP0.5/MISO0P0.6/MOSI0W1调节电—W2调节电—EasyARM2200开发板EasyARM2200开发板电源输入接口为CZ1,输入的电源为DC9V,接头上的电源极性为外正内负,当正确连接电源后,POWERJ4、J5PACK均有电源EasyARM2200开发实验板上的部分功能部件有相应的连接跳线,当用户使用某个功能0.8~0.15UART1MODEMI/OP0.9P0.10~P0.13等,所以在不使用UART1MODEM功能时,最好断开JP3所有跳线。1.311.31CPUPACK安装第2 ADS集成开发环境及EasyJTAG仿真器应ADSARMARM核微控制器集成开发工具,英文全称为ARMDeveloperSuiteADS1.2。ADS1.2ARM10ARM系列微控制器,支持调试及JTAG硬件仿真调试,支持汇编、C、C++源程序,具有编译效率LPC2200ARM7微控制器的工程模板的使用,EasyJTAG仿真器的安装与使用。ADS1.22.1ADS1.2的组成部ARM的C、C++编译器,Thumb的C、C++ARM由CodeWarriorIDE调实用程序(一些实用程序由CodeWarriorIDEAXD调试器,所以这一2.12.1CodeWarrior步、全速和断点等调试功能,可以观察变量、寄存器和内存的数据等等。AXD调试器主窗口如图2.2所示。2.2AXDWINDOWS操作系统的【开始】->【程序】->【ARMDeveloperSuitev1.2】forARMDeveloperSuite”快捷方式起动。启动ADS1.2IDE如图2.3所示。2.3ADS1.2点击【File】菜单,选择【New…】即弹出New框,如图2.4所示工程存放路图2.4NewARM可执行映象(ARMExecutableImage)Thumb可执行映象然后在【Location】项选择工程存放路径,并在【Projectname】项输入工程名称,点击【确定】按钮即可建立相应工程,工程文件名后缀为mcp(下文有时也把工程称为项目)。2.5“NewTextFile”图标按择【Save】),输入文件全名,如TEST1.S。注意,请将文件保存到相应工程的下,以当然,您也可以New框选择【File】页来建立源文件,如图2.4所示,或使用其它文Files…”即可弹出“Selectfilestoadd…”框,选择相应的源文件(可按着Ctrl键一次选框选择【File】页来建立源文件时选择加入工程(即选中“AddtoProject”项)。添加文件操作如图2.6、图2.7所示。2.6在工程窗口中添加图2.7Selectfilestoadd… 工程设置,如地址设置、输出文件设置、编译选项等其中DebugRel为当前的生成目标(system)SynchronizeModification 发现有更新(如使用其它编辑器编辑源文件),则在Touch栏标记“√”。 编译连接(快捷键为F7) 启动AXD进行调试(快捷键为F5) Project 工程检查,查看和配置工程中源文件的信息。2.8工程窗口中的图标按2.9DebugRelSettings窗点击“DebugRelSettings…”图标按钮,即可进行工程的地址设置、输出文件设置、编对于简单的调试,可以不进行连接地址的设置,直接点击工程窗口的“Make”图编辑窗即会使用光标当前出错的源代码行,编译连接输出窗口如图2.10所示。同样,2.10编译连接输出窗2.11所示,Touch栏用于标记文件是否已编译,若打上“√”则表明对应文件需译。可以通过单击该栏位置来设置/取消符号“√”,或将工程下的*.tdt文件删除也可以2.11工程窗口Make操点击【File】菜单,选择【Open…】即弹出“打开”框,找到相应的工程文件图2.12Choose窗当工程编译连接通过后,在工程窗口中点击“DebugAXD进行即弹出Choose窗口,如图2.12所示。在没有添加其它仿真驱动程序前,项中只有两项,分别为ADP(JTAG硬件仿真)和ARMUL(仿真)。选择仿真驱动程序后,点击【File】选择【LoadImage…ELF格式的可执行文件,即*.axf文件。说明:当工程编译连接通过后,在“工程名\工程名_Data\当前的生成目标”下就会生成一个*.axf调试文件。比如工程TEST,当前的生成目标Debug,编译连接通过后,则在…\TEST\TEST_Data\Debug下生成TEST.axf文件。2.13运行调试工具全速运行(Go)单步运行(Step),每次执行一条语句,这时函数调用将被作为一条语句执行。单步运行(StepOut),执行完当前被调用的函数,停止在函数调用的下一条语句。运行到光标(RunToCursor),运行程序直到当前光标所在行时停止。2.14调试观察窗口工具打开 2.15文件操作工具加载调试文件(LoadImage)执行映象(ARM指令的代码)Thumb可执行映象(Thumb指令的代码),或Thumb、ARM交织映象(生成Thumb、ARM指令交织的代码)。针对LPC2200系列ARM7微控制器,我们定义了6个工程模板,这些模板一般包含的FLASH起始地0x00000000、片RAM起始0x40000000、片RAM起始地址为0x80000000、编译连接选项及编译优化级别等等;模板中包含了LPC2200系列ARM7STACK.S、HEAP.S、STARTUP.S、.C;模板还LPC2200ARM7微控制器的头文件(如:LPC2294.hLPC2294.inc,LPC2294将“lpc2200project 拷贝到“<ADS1.2安>\Stationery\”即可,操作如图2.16和图2.17所示。这个步骤只需1次,以后就可以直接使2.16选择拷贝的文件图2.17文启动ADS1.2IDE,点击【File】菜单,选择【New…】即弹出New框,如图2.18所示。由于事先增加了LPC2200工程模板,所以在工程模板栏中多出几项工程模板选2.18增加的工LPC2200工程模板说明如下ARMExecutableImageforlpc22xxCARM指令asmforlpc22xx:ThumbARMInterworkingImageforlpc22xx:无操作系统时部分C代码编译为ARM指令,部分C代码编译为Thumb指令的工程模板。ThumbExecutableImageforlpc22xx:CThumb指令的工ThumbExecutableImageforUCOSII(forlpc22xx):CARM指令,编译成Thumb指令。2.19ARMExecutableImageforlpc22xx工程模板建立的一个工程。工程有四个生成目标(system):DebugInExram、注意:选用RelInChip目标时,将会对LPC2200进行加密(没有片内FLASH的 表2.2LPC2200工程模板各生成目标的配图2.19用LPC2200工程模板建立的工本模板假设用户系统使用片外器。如果用户不使用片外器,可以使用LPC2100的工程模板,地址为htt 的EasyARM2100开发套件快速入门和LPC210...。本模板假设用户系统片外器使用16位总线,且不使用ETM功能。如果用户的片外器不是使用16位总线,和/或使用ETM功能,需要修改Startup.s这个文件,修改点见程序2.1。如何修改请参考LPC2200的使用手册,地址为: /philips/philips-arm.asp。注意:各个工程模板中的Startup.s不完全相同,可根据需程序2.1Startup.s文件需要更改的代 IF:DEF:EN_CRP R1, R1,0x0f814914改成需要的数值,如果使用ETM46 R1,R0,R1, R1,R0,R1, R1,生成目标DebugInExRam。假设用户系统在调试时片外RAMbank0(即起始地址为0x80000000),这一条不可修改。如果用户系统不是这样,就不能使用DebugInExRam生成目标DebugInExRam。假设用户系统在调试时片外RAM大小512K字节,此条仅影响DebugInExRam这个生成目标。如果不是,则需要修改mem_b.scf这个文件,修改点见程序2.2。注意:windows会隐藏这种文件的扩展名,仅显示为mem_b。程序2.2mem_b.scf文件需要修改的代ERAM {*}生成目标RelOutChipFLASH起始地址必须为0x80000000(这是LPC2200的要求),片外RAM使用Bank1(即起始地址为0x8100mem_a。程序2.3mem_a.scf文件需要修改的代码—片外ERAM {*}程序2.4mem_a.scf文件需要修改的代码—片内IRAM{Startup.o(+RW,+ZI)}ERAM/*ERAM段位置变STACKS{*}{stack.o}生成目标DebugInChipFlash和RelInChip。假设用户系统片外RAM使用Bank0(即起始地址为0x80000000如果片外RAM起始地址不为0x80000000mem_c.scf文件,修改点见程序2.3。mem_a.scf、mem_b.scf、mem_c.scf这几个文件对内存的使用进行更为了适应不同速度的器,工程模板默认配置4个Bank器接口为最慢的序2.5。程序2.5在.c文件中配置器接口速{#ifdefMEMMAPMEMMAP=/*重新配置Bank0BCFG0=#ifdefOUT_CHIP/*重新配置Bank0BCFG0=#ifdefIN_CHIP/*重新配置Bank0BCFG0=}用户还可以修改.c的ResetInit()函数在进入main函数前初始化的东EasyJTAG仿真器是广州周立功单片机发展开发的LPC2000系列ARM7微控制器JTAG仿真器,支持ADS1.2集成开发环境,支持单步、全速及断点等调试功能,支持程序到片内FLASH和特定型号的片外FLASH,采用ARM公司标准20脚JTAG仿采用同步Flash刷新技术(synFLASH同步用户代码到Flash中,即下即调(synTIMEEasyJTAG仿真器外观如图2.20所示,其驱动程序可在htt ban/EasyARM2200.asp网页获得,或在产品光盘上获得(其名为EasyJTAG_drive,该下有一个readme.txt的文件说明)。2.20EasyJTAG仿真器实物外首先EasyJTAG仿真器的驱动程序(比如产品EasyJTAG_drive下的所有文件)到ADS的BIN,如C:\ProgramFiles\ARM\ADSv1_2\BIN。接着,将EasyJTAG仿真器的25针接口通过并口延长线与PC机的并口连接,将Files\ARM\ADSv1_2\BINEasyJTAG.dll,点击“打开”即可。说明:WindowsARMDeveloperSuitev1.2仿真器设置在“Environments”框中选择“EasyJTAG...”项。EasyJTAG控制,原先运行的程序被停止。注意:有时,AXD会弹出如图2.23所示的错误框,或者类似的框,此时可以加载调试文件,进行JTAG调试。2.21“EasyJTAGSetup”设置窗Connection,硬件连接接口选择;HaltModeHaltprogram(CPU)Haltandreset(复位然后停CPU)两项;Aux.OptionStepInInterrupt(允许单步运行进入中断)EraseFlashwhenneed(允许EasyJTAG擦除Flash)两项;系列CPU时此项才有效。当程序需要到片外FLASH时,EasyJTAG仿真器会按所选芯Flash0AddrssFlashStartAddress(Flash的起始地址,比如Bank0时为0x80000000)和MemorySize(器容量,按实际容量填写,比如SST39VF160的容量为0x200000)。当程序不需要到片外FLASH,或系统没有片外FLASH时,StartAddressMemorySize0。仿真器的应用问题ADS1.2IDE环境中F5Debug图标按钮即可直接AXD,但有时会出现如效时,此时需要重新打开【Options】->【Configure...】点击“OK”,再点击【File】选择【LoadImage…】加载调试文件。2.22session文件错误提AXDFatalAXDError2.23所示,此时可可以使用【File】->【LoadImage...】加载调试文件,进行JTAG调试。PCCMOSSPP378H~37FH。2.23FatalAXD错误提ARM7微控制器的片内外设寄存器窗口。有些寄存器是不能读出显示或读操作会影响使用JTAG程序到FLASH。进入AXD调试环境,打开【Options】->【地址的调试文件时,将会擦除FLASH并代码到FLASH中。 在JTAG仿真调试通过后,要将程序到片内的FLASH或外部的FLASH中(即对于LPC2200系列ARM7微控制器来说,程序到片内FLASH可通过两种方式实现:JTAG接口和使用ISP功能。不管使用哪式,用户均要先设置编译的地址,即代码地址从0x00000000地址开始,比如使用LPC2200工程模板时,在生成目标选用RelInChip,其分散加载描述文件mem_c.scf如程序2.6所示。放程序代码的起始地址,也可以在后面添加其空间大小,如“ROM_LOAD0x000000000x20000”表示加载区起始地址为0x00000000,大小为128K字节;ROM_EXEC描述了执一致。从起始地址开始放置向量表(即Startup.o(vectors,+ 栈,所以堆栈区起始地址设置为0x40004000,放置描述为stack.o(+ZI)。程序2.6用于程序的分散加载描述文件ROM_LOADROM_LOAD{ROM_EXEC{Startup.o(vectors, *}IRAM{}ERAM{*}HEAP+0{heap.o}{stack.o}}JTAG接口使用JTAG接口程序到FLASH是需要JTAG仿真器的支持EasyJTAG仿真器可支持LPC2000系列ARM7微控制器的片内FLASH,这样就可以使用这能将程序下载到FLASH中,以便脱机运行。图2.24片内FLASH的EasyJTAG设加载调试映像文件时即会程序到FLASH中。FLASH的地址,EasyJTAG仿真器即把程序到指定的FLASH空间。LPC2200系列ARM7微控制器具有ISP功能(LPC2210无片内FLASH,不能进行ISP编程),可以通过串口进行程序。HEXDebugRelSettings窗口,在Settings项中设置Post-linkerARMfromELF(如图2.25所示。2.25Post-在ARMformELF项中设置输出文件类型,如设置为In32bitHex,然后设置输出文件名,也可指定,若不指定,则生成文件存放在当前工程的中(2.26所2.26生成文件设HEX文件后,接下来使用串口延长线连接PC串口(COM1)EasyARM2200实验板(UART0),并将实验板上的ISP(JP1)跳线短接。打开LPC2000FlashUtility,并设置串口、波特率、系统晶振(注意,晶振频率项单位为kHz)等,如图2.27所示。!首先按EasyARM2200开发板上的RST键复位,然后再确定提示,如图2.28所示。EraseFLASHFilename项中输入要的HEX文件全名,点击UploadtoFlash按钮即开始程序。程序后,将ISP(JP1)跳线断开,重新复位系统即可运行程序。说明,LPC2200系列ARM7微控制器要求向量表中所有的数据(即0x00000000~0x0000001c地址上的指令机器码)32位累加和为零,才能启动用户程序。通过设置保留异常向量地址0x14上的数据实现。图2.27LPC2000FlashUtility设2.28LPC2000提脱机运行代码地址从0x80000000地址开始,比如使用LPC2200工程模板时,在system选用RelOutChip,其分散加载描述文件mem_a.scf如程序2.7所示。其中,ROM_LOAD0x80000000表示加载区的起始地址(因FLASHBank0);ROM_EXEC描述了执行区的地址,放在第一块位置定义,Startup.o(vectors,+)Startup.oStartup.s的目标文件),接着放置其它代码(即*(+RO));变量区IRAM的起始地0x40000000,放Startup.oRW,+ZI);堆栈STACKS使用片内RAM,由于ARM的堆栈一般采用满递减堆栈,所以堆栈区起始地址设置为(RAMBANK1)Startup.o文件之外的其它文件的变量(即*RW,+ZI));紧靠ERAM变量区之后的是系统堆空间(HEAP),放置描述为heap.o(+ZI);程序2.7用于程序的分散加载描述文件{{Startup.o(vectors, *}IRAM{}{stack.o}ERAM{*}HEAP+0{heap.o}}JTAG接口支持对特定的片外FLASH程序,这样就可以使用这能将程序到片外然后设置EasyJTAG仿真器,参见图2.29;图2.29片外FLASH的EasyJTAG设在加载调试映像文件时即会程序到片外FLASH中。实际上,只要你加载调试映像文件,且代码的地址是设置为片外 脱机运行第3 基础实ADS1.2硬件:PC 一工程模板建立一个工程,工程名称为ADS,见图3.13.1ARM指令代码的工图3.2。输入如程序3.1所示的代码,并保存,见图3.3。3.2新建文件程序3.1TEST1.S文件代;标识程;代码段;32ARM指;设置;R0=R0+B3.3添加了TEST1.S的工程管理窗Linker项,然后在Output页设置连接地址(见图3.4),在Options页设置调试地址(见图3.4工程连接地址设图3.5工程调试地址设删除工程中的*.obj文件)硬件:PC 一令把结果写回原地址,若结果大于等于10,则把0写回原地址。使用ADS1.2仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视R0、R1的值,打开器观察窗口(Memory)监视0x40003100上的值。ROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。打开寄存器窗口(ProcessorRegisters)Current项监视R0、R1器观察窗口(Memory0x40003100Size32Bit,监视0x40003100地址上的值。如图3.6所示。时观察寄存器和0x40003100地址上的值。运行结果见图3.7。3.6Memory窗口显示格式设3.7汇编1程序运行结程序3.2汇编指令实验1参考程 ; ;代码段;标识程;32位ARM指 ;R1<= ;R0<= ;R0<= ;R0<=R0+ R010比较,影响条件码标 ;R0大于10,则此指令执行,R0 BLDR伪指令与LDR加载指令的功能和应用有何区别,举例说明?(提示:LDR伪指令 指令的前索引偏移指令如何编写?指令是怎样操作的?AXD调试时如何复位程序?(提示:选择【File】->【ReloadCurrentImage】重新加硬件:PC 一使用ADD、SUB、AND、ORR、CMP、TSTROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。格式Hex、Decimal等等。如图示。3.8设置寄存器显示3.9寄存器值更新的程序3.3汇编指令实验2参考程X ;定义X的值Y ;定义Y的值 ;定义BIT23的值 ;代码段;;32位ARM指 ;MOV、ADD指令实现:R8R3XR0X,X的值必须8;即是R3X;R8<=;MOV、MVN、SUB指令实现:R50x5FFFFFF8R8*R5,R0,R8,LSLR83R8*;;计算R0Y4*YR0,R0,LSR;计算R0R1,R1,LSL;计算R1;R0R1,即(5*Y/2)和(2*X)进行比;若(5*Y/2)>(2*X),则R2<=;若(5*Y/2)>(2*X),则R5=;若(5*Y/2)≤(2*X)R5;使用TST指令测试R5的bit23是否为1,若是则将bit6位清零(使用BIC指令) 指令 否则R5=R5&0xFFFF0000,程序应如何修改?硬件:PC 一STMFD/LDMFD、MUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算Xn的值。R2n-1R0=R0*R1R0中。(不考虑结果溢ROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。R14(LR)的值。打开器观察窗口(Memory)设置观察地址为0x40003EA0,显示方式Size调试程序时,更改参数X和n来测试程序,观察是否得到正确的结果。例如:先复位程序(选择【File】->【ReloadCurrentImage】),接着单步执行到“BLPOW”指令,在寄存器窗口中将R0、R1的值进行修改,然后继续运行程序。数(如136、198),也可以是十六进数(如0x123,0xF0),输入数据后回车确定。程序3.4汇编指令实验3参考程;;文件名;功能:计算X的n次方的;说明:X和n均为无符Xn98;定义X的值;定义n的值;代码段;标识程;32ARM指;;B;名称SP!,{R1-;寄存器入栈保;0,则设置;;;计数器R2=;DO_MUL子程序,R0R1*;R2;SP!,{R1-;寄存器出栈;功;功能:整数乘方 ;出口参数;占用资源:R0、;说明:本子程序不考虑溢;名称;功能:32位乘法运算 ;;占用资源:R0、乘; ;R0=R1*;返若需要考虑溢出问题(32位运算结果,判断运算是否溢出),如何修改实验参考程序?(提示:使用UMULL指令)硬件:PC 一N为1时结果1)。令切换到Thumb状态,才能开始执行Thumb指令。R00R0=R0+R1,R1为循环ROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。 R0指令前后CPSR寄存器的T位0(比如“TT1,“tT0)。程序3.5汇编指令实验4参考程;;文件名;;说明:N≥0,当N=00;当N=1时结果1N;定义N的值 代码段;;;32ARM指令;;;;16Thumb指令;B;名称;;参数 N的;出口参数 ;占用资源;说明:当N=0时结1;当N=11 ;寄存器入栈保 ;将N的值到R2,并影响条件码标 ;若N的值0,则返回。(R0没有被更改 ;若N的值1,则返回。(R0没有被更改 ;初始化计数器 ;初始化结果寄存器R0=0 ;R0=R0+R1 ;将计数器的值与N比较 ;若计数器的值≥N,则运算结 ;寄存器出栈,返Thumb指令 Thumb指令 硬件:PC 一使用ARM汇编指令实现if条件执行;ARM汇编指令实现for循环结构;使用ARM汇编指令实现switch开关结构。执行,if(x>y)z=0xR0,yR1,zR2,汇编代码如何编写。ROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。程序3.6汇编指令实验5参考程;标识程;代码段;32ARM指;if(x>y);else;设xR0,yR1,zR2x、y、z均为无符号整数;初始化x的;初始化y的;判断x>y条件正确;条件失败;for(i=0;i<10;;{;;设xR0,i为R2i、x均为无符号整数;初始化x的;设置;判断;若条件失败,退;循环体;B;;{x*=;;设x为R0,y为R1(x、y均为无符号整数) ;初始化x的值 ;初始化y的 ;首先要判断条 R0,R0,LSL#1 ;循环体,x*=2 ;判断x≤y? ;若条件正确,继 ;;{x--; ;设x为R0x为无符号整数 ;初始化x的 ;循环体,xR0R0,并影响条件码标;R0不为0(即x不为0),则继续循;;;;x=key+;;x=key-;;;x=key*;x=;;;设x为R0,y为R1,key为R2(x、y、key均为无符号整数) ;初始化y的值 ;初始化key的 ; ;case ;case ;case x=key+ SWITCH_END ;case x=key- SWITCH_END ;case x=key*y SWITCH_END; ;default:x=SWITCH_ENDB{if表达2)1;else语句2;}{if表达3)3;else语句4;}{if表达2)1;else语句2;}{if表达3)3;else语句4;}硬件:PC 一ROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。单步运行程序,注意观 CPSR、SPSR、R13(SP)、R14(LR)、R15(PC)寄存器标志位NZCVQ为条件码标志N、Z、C、V、Q,显示为大写字母,表示该位为1大写字母,表示该位1;显示为小写字母,表示该位为0。T标志在ARM体系v4及以上版本的T变量中才有效。工作模式ARMUser(用户模式)、FIQ(FIQ中断模式)、IRQ(IRQ中断模式)、SVC(管理模式)、Abort(中止模式)、Undef(未定义模式)、SYS(系3.10CPSR寄存器显示方程序3.7ARM微控制器工作模式实验参考程USR_STACK_LEGTHEQUSVC_STACK_LEGTHEQU IRQ_STACK_LEGTHEQUABT_STACK_LEGTHUND_STACK_LEGTH000;标识程;代码段;32ARM指 ;;打开IRQ中断(CPSR寄存器的I位清零;R0<=;CPSR<=;;切换到用户模 CPSR_c, ;切换到管理模;名称; ;出口参数:;说明: R0, SP,StackIrqSP,StackAbtSP,StackUndSP,StackUsrPC,UsrStackSpace+(USR_STACK_LEGTH-1)*4SvcStackSpace+(SVC_STACK_LEGTH-1)*4IrqStackSpace+(IRQ_STACK_LEGTH-1)*4FiqStackSpace+(FIQ_STACK_LEGTH-1)*4AbtStackSpace+(ABT_STACK_LEGTH-; USR_STACK_LEGTH*4 ;用户(系统)模式堆栈空间 SVC_STACK_LEGTH*4 ;管理模式堆栈空间 IRQ_STACK_LEGTH*4 ;中断模式堆栈空间 FIQ_STACK_LEGTH*4 ;快速中断模式堆栈空间 ABT_STACK_LEGTH*4 ;中止义模式堆栈空间 UND_STACK_LEGTH*4 ;未定义模式堆栈在非模式下能否对CPSR寄存器设置?能否CPSR寄存器的值?(提示:参考在非模式下如何使能/IRQ或FIO中断?(提示:可以先使用SWI指令切换到硬件:PC 一C程序文件。汇编程序的功能是初始化堆栈指针和初始CC程序运行,这就是一个简单的起动程序。C程序使用加法运算来计算1+2+3+...+(N-1)+N的值(N>0)。ROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。3.11设置位于开始位置的起始 程序3.8C语言实验参考程#define#define#defineunsignedunsigned#defineuint321+2+3+...+(N-1)+N的值。(N>0)voidMain(void){uint32sum=for(i=0;i<=N;{sum+=}}程序3.9简单的起动代;;起动文件。初始化C程序的运行环境,然后进入C程序代码 ; ;标识程;32ARM指;初始化C程序的运行环 ;跳转到CMain()函硬件:PC 一 Add(uint32x,uint32 ROBase0x40000000,RWBase0x40003000。设置调试入口地址Imageentrypoint为0x40000000。在Test.c文件中的调用Add()C语言调用汇编程序实验的参考程序见程序3.10。汇编加法函数代码见程序程序3.10C语言调用汇编程序实验参考程#define#define#defineunsignedunsignedexternuint32Add(uint32x,uint32uint32void{sum=Add(555,}程序3.11汇编加法函数代;;加法函数,原型为uint32Add(uint32x,uint32y)EXPORTAddC,CODE,READONLY;标识程;32ARM指;输入参数xR0,y;,函数能够在EasyARM2200开发板上运行第一个程序(无操作系统硬件:PC 一EasyARM2200开发 一节的GPIO仔细阅读本书第2章的内容,了解ADS1.2集成开发环境、LPC2200工程模板如何在EasyARM2200上运行第一 (PC)属于在PC机上操作,即的操 使用ADS1.2建立工程,编译连接设置,调试操作等,参考本书第2章的内容。更详细的使用方法参考ADS1.2的文档或相关资料。连接EasyJTAG仿真器和EasyARM2200开发EasyJTAG仿真器25针接口通过并口PC机的并口EasyJTAG仿真器20针接20PIN连接电缆EasyARM2200开发板J2上,然后使用配套的EasyJTAG仿真器的安装与应用添加工程模板用工程模板建立第一个工程使用LPC2200工程模板建立工程(比如ARMExecutableImageforlpc22xx工程模仿真调试第一个工程启动AXD进行仿真调试。ADS1.2ARMExecutableImageforlpc22xx3.12选择生成目将EasyARM2200开发板上的JP9跳线短接,JP4跳线断开,JP6Bank0-RAM、Bank1-Flash置为Bank0-RAM、Bank1-Flash,在AXD中设置仿真器参考如图3.13所示。3.13RAM调试的仿真器设beepcon.c的主函数中停止(main函数起始处默认量观察窗口,通过此窗口可以观察局部变量和全局变量。选择【SystemViews】->Bank0-Flash、Bank1-RAM,JP7跳线设置为OUTSIDE器将会把程序到片外FLASH上(需要正确设置仿真器,参考第2.5节)。注意:使用RelOutChip生成目标时,使用片外FLASH进行仿真调试(或程序),JP6跳线要设置为Bank0-Flash、Bank1-RAM,在AXD中设置仿真器参考如图3.14所示。3.14FLASH调试的仿真器设按EasyARM2200开发板上的RSTAXDRAM调试方式的设置,以便于后面实程序3.12GPIO输出控制实验1参考程 使用I/O口直接控制,采用灌电流方式#include"configh" /*P0.7引脚控B1,低电平蜂鸣 参数 voidDelayNS(uint32dly){uint32for(;dly>0;dly--for(i=0;i<5000;}}intmain(void){PINSEL0 //设置管脚连接IO0DIR //设置I/O{IO0SET=IO0CLR=}//BEEPCON=//BEEPCON=}为什么这个实验的工程不需要设置连接地址?(提示:LPC2200工程模板已集成了在LPC2000系列ARM7微控制器两个管脚作GPIO输出时需要外接上拉电阻?硬件:PC 一EasyARM2200开发 一仔细阅读本书第2章的内容,了解ADS1.2集成开发环境、LPC2200工程模板ADS1.2ARMExecutableImageforlpc22xxLedDisp_C将EasyARM2200开发板上的JP8跳线短接,JP6跳线设置为Bank0-RAM、1LED74HC595数据移位输出是否正确。全速运行程序,观察1ED的显示。通过I/O74HC59574HC595驱动LED显通过I/O74HC59574HC595驱动LED显示 参数 voidDelayNS(uint32dly){uint32for(;dly>0;dly--for(i=0;i<5000;"config/*P0.8/*P0.6/*P0.4/*SPI接口的I/O设置字}参数 voidHC595_SendDat(uint8dat){uint8IO0CLR= //SPI_CS=for(i=0i<8 //8{IO0CLR= //SPI_CLK=/*SPI_DATAif((dat&0x80)!=0)IO0SET=SPI_DATA;elseIO0CLR=SPI_DATA;dat<<=IO0SET= //SPI_CLK=}IO0SET }constuint8DISP_TAB[16]={0x81,0x42,0x24,0x18,0x24,0x42,0x81,0x00intmain(void){uint8PINSEL0 IO0DIR //SPI控制口为输{for(i=0;i<16;{HC595_SendDat(~DISP_TAB[i]);//输出LED显示数 //}}}硬件:PC 一EasyARM2200开发 一节的GPIO电路及JP1跳线器的说明。仔细阅读本书第2章的内容,了解ADS1.2集成开发环境、LPC2200工程模板P0.14口设置为输入模式时,口线无上拉电阻,当与按键或跳线器连接使用时需要外接上拉电阻,防止口线悬空。GPIO输入实验原理图如图3.15所示。3.15GPIO输入实验原理ADS1.2ARMExecutableImageforlpc22xxReadPin_C将EasyARM2200开发板上的JP9跳线短接,JP4跳线断开,JP6Bank0-RAM、Bank1-Flash单步运行程序,先短接JP1,观察IO0PIN寄存器的值,然后断开JP1,观察寄存器的值。全速运行程序,短接/断开JP1,控制蜂鸣器的Watch窗口观察寄存器的值。选择【ProcessorViews】->【Watch】打WatchWatchAddWatch…3.163.16Watch窗AddWatchExpression项输入*((unsignedlong*)0xE0028000),然后回车,3.17所示,然后选AddToView按钮即可Watch窗口观IO0PIN寄存器(IO0PIN寄存器的地址0xE0028000)。图3.17AddWatch注意:有些寄存器不能读出显示或读操作会影响到其它寄存器的值。程序3.14GPIO输入实验参考程功能 使用I/O口输入方式P0.14口进行扫描#include"configh" /*P0.7引脚控B1,低电平蜂鸣/* intmain(void){uint32IO0DIR=BEEPCON;//设置管脚连接B1控制口为输出,其它I/O{{if((IO0PIN&PIN_P014)!=0)IO0SET=BEEPCON;elseIO0CLR=BEEPCON;for(i=0;i<1000;}}硬件:PC 一EasyARM2200开发 一设置MEMMAP=2,然后将3F地址上的单元全部写入0x55,0x0000003F地址上的数据。30x7FFFE03F地址上的数据是否一致。ADS1.2ARMExecutableImageforlpc22xx监视从000003的数据。单步运行程序,观察0x0003地址上的数据当运行MEMMAP=0之后,观察0000000~0x000003FE0程序3.15器重实验参考程功能: 器 MF~ 00000000x0003F#include"configh"#define((unsignedchar*) intmain(void){uint8uint8MEMMAP=for(i=0;i<64;i++){*addr=0x55;}for(i=0;i<64;i++){*addr=0xAA;}//中断向量从静态RAM 0x55x00~//0xAAMEMMAP=//中断向量从BootBlock (Boot装载程序模式}实验工程中的启动代码.c文件,在ResetInit()函数的MEMMAP寄存器的设置硬件:PC 一EasyARM2200开发 一P0.14EINT1功能,初始化为非向量中断,并设置为电平触发模式,然后等ADS1.2ARMExecutableImageforlpc22xxVICDef_CStartup.sInitStack子程序中,修改设置系统模式堆栈处的代码为“MSRCPSR_c,#0x5f”,即使能IRQ中断。将EasyARM2200开发板上的JP9跳线短接,JP4跳线断开,JP6Bank0-RAM、Bank1-Flash程序3.16外部中断实验1参考程#include"configh" /*P0.7引脚控B1,低电平蜂鸣功能:外部中断EINT1B1 irqIRQ_Eint1(void){uint32i= ( //控制B1{IO0SET=}{IO0CLR=}/*等待外部中断信号恢复为高电平(若信号保持为低电平,中断标志会一直置位*/while((EXTINT&0x02)!=0){EXTINT 清除EINT1中断标} //}功能:初始化外部中断intmain(void){PINSEL0=0x20000000; //设置管脚连接,P0.14设置为EINT1IO0DIR=BEEPCON; //设置B1控制口为输出,其它I/O为输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论