嵌入式系统及应用实验内容_第1页
嵌入式系统及应用实验内容_第2页
嵌入式系统及应用实验内容_第3页
嵌入式系统及应用实验内容_第4页
嵌入式系统及应用实验内容_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统及应用实验嵌入式系统及应用实验以SmartARM2300工控开发平台及PC机为主要硬件设备。SmartARM2300工控开发平台采用NXP公司生产的芯片LPC2378(ARM7TDMI-S核),具有JTAG调试等功能,除了本身的GPIO、TIMER、 PWM、SPI、 A/D 、D/A功能外,还提供4个UART串口、IrDA接口、USB Device接口、CAN总线、SD/MMC卡、MODEM接口、以太网接口等功能。1相关的硬件电路系统电源电路图3.1 系统电源电路键盘、蜂鸣器及LED电路图3.2 7个独立按键电路图3.3 直流蜂鸣器电路图3.4 SPI驱动8个LED指示灯 串行口接

2、口电路图3.5 UART0UART2UART3串行口接口电路 IrDA(红外)通讯接口电路图3.6 IrDA(红外)通讯接口电路 JTAG 调试接口、RST复位键及ISP选择电路图3.7 JTAG 调试接口电路图3.8 RST复位键及ISP选择电路2跳线器说明SmartARM2300工控开发平台跳线器说明如表3.1所列。JP1跳线布局如图3-9所示。图3.9 JP1跳线布局表3.1 SmartARM2300跳线器一览表跳线器标号I/O功能说明I/O复用情况JP1JP1-1RXD3P4.29UART3接口,至SP3232E输入端,短接时有效JP1-5的IRR,做UART3实验时,必须将JP1-5

3、的IRR跳线断开TXD3P4.28JP1-5的IRT,做UART3实验时,必须将JP1-5的IRT跳线断开JP1-2RXD0P0.3UART0接口,至SP3232E输入端,短接时有效TXD0P0.2JP1-3RXD2P0.11UART2接口,至SP3232E输入端,短接时有效TXD2P0.10JP1-4MDCDP2.3UART1接口,至SP3232E输入端,具有MODEM接口功能,短接时有效MDSRP2.4MRXDP2.1JP24接口MCTSP2.2MRIP2.6MDTRP2.5MTXDP2.0JP24接口MRTSP2.7JP1-5IRENP3.26模式选择,短接时有效IRRP4.29IrDA

4、收发器数据输出,短接时有效JP1-1的RXD3,做IrDA实验时,必须将JP1-1的RXD3跳线断开IRTP4.28IrDA收发器数据输入,短接时有效JP1-1的TXD3,做IrDA实验时,必须将JP1-1的TXD3跳线断开JP1-64线,CAN控制器发送/接收线JP1-79线,SD/MMC卡控制及数据线JP1-8KEY1P0.6独立按键1,短接时有效KEY2P0.7独立按键2,短接时有效KEY3P0.8独立按键3,短接时有效KEY4P0.9独立按键4,短接时有效KEY5P0.10独立按键5,短接时有效KEY6P0.11独立按键6,短接时有效KEY7P0.25独立按键7,短接时有效JP1-9B

5、EEPP1.27蜂鸣器驱动输入,短接时有效JP1-10MOSIP1.2474HC595与SPI接口连接的跳线,短接时有效/CSP1.21SCLKP1.20MISOP1.23JP4V-TESTP1.31LPC2378片内A/D的AD0.5通道电压输入,短接时有效JP5ISPP2.10ISP功能使能,短接时有效实验一 ADS集成开发环境使用与仿真调试一实验目的熟悉ADS集成开发环境与仿真调试的使用方法。二实验设备及器件PC机 一台SmartARM2300工控开发平台 一台三实验内容与实验步骤ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具式,ADS(ARM Developer Su

6、ite)成熟版本为ADS1.2。ADS1.2支持ARM10之前的所有ARM系列微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、C、C+源程序。ADS1.2由代码生成工具、CodeWarrior IDE 集成开发环境、AXD调试器、指令模拟器、ARM开发包和ARM应用库6个部分组成,用户一般直接操作的是CodeWarrior IDE 集成开发环境和AXD调试器。ADS1.2使用了CodeWarrior IDE 集成开发环境,并集成了ARM汇编器、ARM的C/C+编译器、Thumb的C/C+编译器、ARM连接器,包含工程管理器、代码生成接口中、语法敏感编辑器、源文件和类浏览器等等。AXD调

7、试器为ARM扩展调试器(即ARM Extended Debugger),包括ADW/ADU的所有特性,支持硬件仿真和软件仿真(ARMulator),AXD能够装载映像文件到目标内存,具有单步、全速和断点等调试功能,可以观察变量,寄存器和内存的数据等等。1工程的编辑 建立工程点击windows操作系统【开始】->【程序】->【ARM Developer Suite v1.2】->【CodeWarrior for ARM Developer Suite】启动Metrowerks Code Warrior,或者双击“Code Warrior for ARM Developer Su

8、ite”快捷方式启动。启动ADS1.2 IDE, 如图3.10所示。图3.10 ADS1.2IDE 界面点击【File】菜单,选择【New.】即弹出New对话框,如图3.11所示。图3.11 New对话框选择工程模块为ARM可执行映像(ARM Executable Image),在其它场合也可能选ARM Executale Image for LPC2300,或Thumb可执行印象(Thumb Executable Image),或Thumb,ARM交至映像(Thumb ARM Interworking Image)等,然后在【location】项选择工程存放路径(请建立自己的文件夹),并在【

9、project name】项输入工程名称(后缀名自动设置,为mcp),点击【确认】按钮即可建立相应工程(下文有时也把工程称为项目)。在集成环境中会弹出工程窗口如图3.12所示,此时工程中还没有任何源文件。图3.12 集成环境中的工程窗口系统自动为每个工程建立三个目标(默认的名称为DebugRel,Release,Debug),主要是方便同一个工程在调试应用不同场合对应不同目标(可在后续的设置中为每个目标建立不同的参数);对简单应用可不考虑目标之间的区别,只对其中的一个默认目标(DebugRel)进行操作即可。 建立文件建立一个文本,以便输入用户程序,点击“New Text File”图标按钮,

10、如图3.13所示。图3.13 “New Text File”图标按钮然后在新建文件(untiled)中,根据需要完成的任务,编写合适的程序,程序编写结束后,点击“save”图标按钮将文件存盘(或从【File】菜单选择【save】,要求输入文件全名(汇编程序后缀名为.S;C语言程序后缀名为.C),如TEST1.S(汇编程序),TEST1.C(C语言程序)。注意,请将文件保存到步骤中建立的工程目录下,以便于管理和查找。当然,也可以New对话框选着【File】页来建立源文件,如图3.11所示,或使用其他文本编辑器建立或编辑源文件。 添加文件到工程在工程窗口中【File】页空白处点击鼠标右键,弹出浮动

11、菜单,如图3.14所示。选着“add Flie.”即可弹出“Sslect file to add.”对话框,如图3.15所示,选择相应工程需要的源文件(可按着Ctrl键一次选择多个文件),点击【打开】按钮;弹出“Add Files” 对话框, 如图3.16所示,点击【OK】按钮,为工程中的三个目标均添加文件即可。C语言中的头文件(.h)及汇编语言中的包含文件(.INC)编译系统会自动添加,但这些文件必须在相应的目录下,编译系统才能找到并确定。另外,用户也可以在【Project】菜单中选择【Add File.】来添加源文件,或使用New对话框选择【File】页来建立源文件时选择加入工程(即选中“

12、Add to Project”项)。图3.14 在工程窗口中添加源程序图3.15 Select files to add.对话框图 3.16 Add files to targets 窗口 编辑连接工程工程窗口中的图标按钮如图3.17所示,通过这些图标按钮,可以快速地可对目标DebugRel进行工程设置,编译连接,启动调试等等(在不同的菜单项上可以分别找到相应的菜单命令)。6个图标按钮,它们从左至右分别为:DebugRel Settings. 工程设置,如地址设置,输出文件设置,编译选项灯,其中DebugRel为当前的生成目标(target system);Synchronize Modifi

13、cation Dates 同步修改日期,检查工程中每个文件的修改日期,若发现有更新(如使用其它编辑器编辑源文件),则在Touch栏标记“”;Make 编译连接(快捷键为F7);Debug 启动AXD进行调试(快捷键为F5);Run 启动AXD进行调试,并直接运行程序;Project Inspector 工程检查,查看和配置工程中源文件的信息。图3.17 工程窗口中的图标按钮点击“DebugRel Settings.”图标按钮,即可对目标DebugRel进行工程的地址设置、输出文件设置、编辑选项等。在“Target Settings”对话框,将Post-linker选择为ARM formELF(

14、ARM可执行格式),如图3.18所示。图3.18 DebugRel Settings 窗口在“ARM Linker”对话框设置连接地址,由汇编语言编写的软件,在Linktype 单选项选择Simple, 设置连接地址为 0x40000000(LPC2300 SRAM 的地扯),如图3.19所示。若由C语言编写的软件,在Linktype 单选项选择Scattered,由分散加载文件设置连接地址,如实验三及实验三以后的程序。图3.19 连接地址设置窗口其余DebugRel Settings采用默认设置即可,设置结束后直接点击工程窗口的“Make”图标按钮,即可完成编译连接。若编译出错,会有相应的出

15、错提示,双击出错提示行信息,编辑窗即会使用光标指出当前出错的源代码,编辑连接输出窗口如3.20图所示。同样可在【Project】菜单中找到相应的命令。图3.20 编译连接输出窗口Touch栏用于标记文件是否已编译,若打上“”则表明对应文件需要重新编译,如图3.21所示,。可以通过单击该栏位置来设置/取消符号“”。图3.21 工程窗口中Make 操作重新编译之前,建议将原来生成的目标文件都删除,方法如下,点选“project”下拉菜单的“Remove Object code”->“All Targets”,如图3.22所示,删除了旧目标文件后,所有文件都被“touch”上了,此时可对整个工

16、程进行重新编译。图3.22 删除旧的目标文件 打开旧工程点击【Flie】菜单,选择【Open】即弹出“打开”对话框,找到相应的工程文件(*.mcp),单击【打开】即可。在工程窗口的【files】页中,双击源程序的文件名即可打开该文件进行编辑。2工程的调试 选择调试的方式当工程编译连接通过后,在工程窗口中点击“Debug”图标按钮(或者使用快捷F5),即可启动AXD(也可以通过【开始】菜单启动AXD)。点击菜单【options】选择【Configure Target.】,即弹出Choose Target窗口,如图3.23所示。Target项中的前两项,分别为ADP(JTAG硬件仿真)和ARMUL

17、(软件仿真),为ADS1.2自带;Target项中的第三项H-JTAG为EasyJTAG-H仿真器驱动,参见稍后的描述。图3.23 Choose Target窗口选择仿真驱动程序后,点击【File】选择【Load Image.】加载ELF格式的可执行文件,即*.axf文件。(说明:当工程编译连接通过后,在“工程名工程名_Data当前的生成目标”目录下就会生成一个*.axf调试文件。比如工程TEST,当前的生成目标Debug,编译连接通过后,则在.TESTTEST_DataDebug目录下生成TEST.axf文件。) 调试工具条AXD运行调试工具条如图3.24所示,调试观察窗口工具条如图3.25

18、所示,文件操作工具条如图3.26所示。具有单步、全速和断点等调试功能,可以观察变量,寄存器和内存的数据等等。图3.24 运行调试工具条图3.25 调试观察窗口工具条图3.26 文件操作工具条3LPC2300系列ARM工具模板在建立工程时,们已经接触了ADS1.2提供的几个标准工程模板。使用各个模板建立的工程,它们的各项设置均有不同之处,方便生成不同的结构的代码,如ARM可执行映像(生成ARM指令的代码)或Thumb可执行映像(生成Thumb指令的代码),或Thumb、ARM交织映像(生成Tumb、ARM指令交织的代码)。针对LPC2300系列ARM7微控制器,定义了2个工程模板,这些模板一般包

19、含的设置信息有FLASH起始地址0x00000000、片内RAM起始地址0x40000000、编译连接选项及编译优化级别等等。模板中包含了LPC2300系列ARM7微控制器的启动文件,包括Startup.S、target.c,模板还包含了LPC2300系列ARM7控制器的头文件(如:LPC23xx.h),分散加载描述文件(如:mem_a.scf、mem_b.scf、mem_c.scf)等等。 为AD1.2增加LPC2300专用工程模板将“lpc2300 project module”目录下的所有文件和目录拷贝到“ADS1.2安装目录>Stationery”即可,这个步骤只需1次,以后就可

20、以直接使用该工程模板。 使用LPC2300专用工程模板建立工程启动ADS1.2集成开发环境,点击【file】菜单,选择【New】即弹出New对话框,如图3.27所示。由于事先增加了LPC2300专用模板和其他模板。所以在工程模板栏中多出几项工程模板选项。图3.27 增加工程模板LPC2300专用工程模板说明如下:ARM Executale Image for LPC2300:无操作系统,所有代码均编译成ARM指令的工程模板。 用户选择相应的工程模板建立一个工程,如图3.28所示为使用ARM Executale Image for LPC2300工程模板建立一个工程。工程有3个生成目标:Debu

21、ginRAM、DebugInFlash、RelInFLASH.工程模板已经将相应的编译参数设置好了,直接使用即可。注意: 工程模板的分散加载文件mem_a.scf、mem_b.scf、mem_c.scf、的堆栈和内存大小需要根据不同的芯片进行设置,LPC2366/68/78和LPC2364的大小不一样,用户可以打开这3个文件根据芯片型号进行相应修改; 选用RellnFlash目标时,将会对LPC2300芯片进行加密,加密的芯片只能使用ISP进行芯片整片擦除后,才能恢复JTAG调试及ISP读/写操作。图3.28 使用LPC2300系列ARM专用工程模板建立的工程4EasyJTAG-H仿真的安装与

22、应用 EasyJTAG-H简介EasyJTAG-H仿真器是一款新型的仿真器,目前,可以支持LPC2300系列ARM7微控制器和部分ARM9芯片,支持ADS1.2集成开发环境,支持单步、全速及断点等调试功能,支持下载程序到片内FLASH和特定型号的片外FLASH,采用ARM公司提出的标准20脚JTAG仿真调试接口。这款仿真器需要H-JATAG软件(调试代理)的支持。 H-JTAG软件安装在PC上运行安装文件H-JTAG.EXE,根据安装提示完成安装即可。安装好的H-JTAG软件包含有H-JTAG Server(下文简称为H-JTAG)和H-Flasher,在桌面上有它们的快捷图标。运行程序H-J

23、TAG和H-Flasher后,用户任务栏中将出现3.29所示图标。图3.29 H-JTAG提示图标将计算机并口与EasyJTAG-H仿真器相连,然后在将EasyJTAG-H仿真器的JTAG接口连接到开发板上左上方的CON5,注意不要连接到右下方的JPI3,否则会造成短路,然后给开发板上电。 H-JTAG配置H-JTAG设置较简单,只要进行以下两步操作,其他采用默认即可。 单击任务栏的H提示图标,将看见H-JTAG的主窗口,如图3.30所示。单击“放大器”图标按钮后,能看见调试代理搜索到ARM内核信息。图3.30 H-JTAG主窗口 选择【Flasher】->【Aoto Download】

24、选择自动下载,如图3.31所示(正常情况下,H-JTAG能检测并显示ARM内核信息)。注意,在Flash中调试时必须选择“Auto Download”,而在RAM中调试可以不选择。图3.31 打开自动下载功能 H-Flasher配置H-Flasher的配置,只需要选择正确的CPU型号,然后验证(Check)通过即可。 单击任务栏的H-Flasher提示图标,确认目标板的CPU型号后,打开H-Flasher的Flash Selection选项,选择正确的CPU型号即可。如:开发板上的CPU型号为NXP公司的LPC2378,操作如图3.32所示。图3.32 选择Flash类型 验证调试代理配置是否

25、正确,打开H-Flasher的Programming选项单击Check按钮,如图3.33所示。如果正常,可以看到所使用的Flash芯片的型号,单击Check按钮时,H-Flasher就会启用当前新的配置值。到此配置完成。图3.33 Flash编程选项 EasyJTAG-H仿真器的使用 将计算机并口与EasyJTAG-H仿真器相连,再将EasyJTAG-H仿真器的JTAG接口连接到开发板上左上方的CON5,并给开发板上电。然后打开H-JTAG软件,单击放大镜图标按钮,如果正常就能检测到芯片内核信息。然后可以最小化或关闭H-JTAG和H-FLASH窗口(注意:不能使用exit菜单关闭)。 选择wi

26、ndoes系统的【开始】->【程序】->【ARM developer suite v1.2】->【AXD debugger】启动AXD软件。再AXD软件中,打开【Options】->【Configure Target.】,弹出choose target对话框,单击ADD添加仿真器的驱动程序,在添加文件窗口选择如D:Progarm FilesH-JTAG.dll,如图3.34所示,接着单击“打开”即可(若已经安装,此步省略)。图3.34 为AXD添加H-JTAG驱动 添加完H-JTAG驱动后选择该驱动程序,如图3.35所示,然后单击OK。图3.35 Choose Targ

27、et窗口 关闭AXD窗口,以后调试就直接在ADS中打开一个工程,编译链接通过后,单击Debug或按下“F5”即可启动AXD调试软件,进行JTAG仿真调试,AXD典型界面如图3.36所示。图3.36 AXD调试界面注意:如果工程文件的路径中存在中文,进行AXD调试环境可能会出现错误。因此,建议工程路径中不要包含中文(包含标点符号)。 EasyJTAG-H常见问题 在进行AXD仿真调试前,需要打开H-JTAG检测芯片内核。同时要正确配置H-Flasher,否则无法进入AXD正常调试。 如果目标板没有上电,或者JTAG仿真器没有连接好,H-JTAG会出现错误,如图3.37所示,调试时将SmartAR

28、M2300工控开发平台的ISP(JP5)跳线短接上,这样可避免片内程序自动脱机运行。图 3.37 H-JTAG连接错误 如在ADS启动AXD仿真器调试时出现如图3.38所示的错误,单击“确定”按钮,然后会弹出Load Session对话框,如图3.39所示。图3.38 启动仿真时出错图3.39 Load Session窗口 此时不必选择Session 文件,直接单击“取消”,然后进入到AXD调试界面。点选“ Option ” -> “Configure Interface”,如图3.40所示。图 3.40 点选配置窗口 在“ Action on close/restart ”项,将“ S

29、ave and load default sessi”前面的“”去掉,如图3.41所示。图 3.41 去掉保存 sessi 点击“确定”,关闭AXD,在ADS工程窗口中点击“Debug”进入AXD调试环境,会弹出如图3.42所示对话框,选择“H-JTAG”并点击确定。成功连接目标板后,就进入了AXD进行仿真调试。图 3.42 选择“H-JTAG”四实验要求熟练掌握ADS1.2集成开发环境的工程建立、编辑与调试功能。了解相关的SmartARM2300工控开发平台硬件结构。五实验参考程序参考实验二相关程序(使用ARM Executable Image模板建立工程,“ARM Linker”设置连接地

30、址为 0x40000000);或参考实验三中的GPIO输出实验程序(使用ARM Executale Image for LPC2300模板建立工程,“ARM Linker”连接地址由分散加载文件自动设置)。 实验二 LPC2300开发过程及程序下载实验一实验目的熟悉LPC2300开发过程及程序下载。二实验设备及器件PC机 一台SmartARM2300工控开发平台 一台三实验内容及步骤 将计算机并口与EasyJTAG-H仿真器相连,EasyJTAG-H仿真器的JTAG接口连接到SmartARM2300工控开发平台上左上方的CON5,启动H-JTAG和H-FLASH软件,选择NXP LPC2378

31、器件,并最小化窗口。 启动ADS1.2,使用ARM Executable Image工程模板建立一个工程,如图3.43所示。图3.43 工程模板窗口 编写一个汇编语言文件,控制蜂鸣器每隔一定时间鸣叫一次,并将文件添加到工程。 将SmartARM2300工控开发平台的JP1上的P1.27和BEEP连接,参见图3.3 直流蜂鸣器电路。 在工程窗口进行工程设置, 在“Target Settings”对话框,将Post-linker选择为ARM formELF(ARM可执行格式),如图3.44所示。在“ARM Linker”对话框设置连接地址,在Linktype 单选项选择Simple, 设置连接地址

32、为 0x40000000(LPC2300 SRAM 的地扯),如图3.45所示。其余DebugRel Settings采用默认设置。图3.44 Target Settings设置窗口图3.45 ARM Linker设置窗口 设置结束后点击工程窗口的“Make”图标按钮,进行编译连接;若编译出错,修改源代码,直至编译连接通过。 当工程编译连接通过后,在工程窗口中点击“Debug”图标按钮,启动AXD调试环境。在AXD窗口可运用单步运行、全速运行和断点设置等工具、方法测试程序。如程序功能达不到要求,则返回修改源程序代码,直至功能完全满足要求。上面步骤编写的程序在LPC2300 SRAM运行满足要求

33、后,下面的步骤将程序下载至LPC2300 Flash,脱机运行,构成独立系统。 关闭AXD窗口,返回工程设置。在“ARM Linker”对话框设置连接地址,在Linktype 单选项选择“Simple”, 设置连接地址为 0x00000000(LPC2300 Flash 的地扯),如图3.46所示。图3.46 ARM Linker设置窗口在“ARM fromELF” 对话框,在Output format 中选择“Intel 32 bit Hex ”,在Outputfile name中键入生成的hex文件名称,如“T1.hex”,注意一定要加上后缀.hex, 如图3.47所示。图3.47 ARM

34、 fromELF设置窗口 设置好后,点击确定,在工程的“touch”栏中将所有的文件都“touch”(打上钩),如图3.48所示。图3.48 touch所有文件重新编译将整个工程重新编译后,在工程文件夹下的DebugRel文件夹下可以看到生成的“1.hex”文件,如图3.49所示。图3.49 生成的hex文件 使用随机附带的串口直通延长线,将目标版的UART0(CON6口)和PC的串口相连,将目标板的ISP(JP5)短接,打开烧写FlashMegic 软件(光盘里有FlashMegic 的安装源程序,如未安装,请先安装此软件)。 按图3.50所示设置FlashMegic 软件参数。图3.50

35、FlashMegic 软件参数设置窗口Step1设置波特率为9600,Device为LPC2378,晶振频率为12.000000MHz ;Step2点选“Erase all Falsh +Code Rd prot ” 在烧写新程序前,先擦除芯片内原来的程序;Step3选择需要烧写的程序;Step4 options中勾上“Verify after Promgraning”,这样就可以烧写程序后自动完成校验。在完成上述Step1至Step4 FlashMegic 软件参数设置后,点击Step5中的 “Start“按钮,就开始对芯片进行烧写并校验hex文件。 关闭目标版的电源;断开EasyJTAG-

36、H仿真器与目标扳的JTAG接口连接;断开UART0(CON6口)与PC的串行口连接;断开目标板的ISP(JP5)短接块。重新给目标板上电,目标板构成独立系统,运行下载到Falsh中的程序,蜂鸣器每隔一定时间鸣叫一次。四实验要求掌握LPC2300开发及程序下载过程。理解实验参考程序,有关细节参考深入浅出ARM7-LPC2300(上册)中的“系统控制模块”及“通用输入/输出口(GPIO)”部分。五实验参考程序 INCLUDE LPC23XX.INC ;/包含文件,在所建的工程目录下须有LPC23XX.INC文件SOUNDCON EQU 0X08000000 ;/P1.27引脚控制发声 CODE32

37、 AREA vectors,CODE,READONLY ENTRYReset LDR PC, ResetAddr ;/异常向量表 LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0xb9206e50 LDR PC, PC, #-0x120 LDR PC, FIQ_AddrResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD Prefe

38、tchAbortDataAbortAddr DCD DataAbortNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_HandlerUndefined B Undefined ;/未定义指令异常SoftwareInterrupt B SoftwareInterrupt ;/软件中断异常PrefetchAbort B PrefetchAbort ;/预取指中止异常DataAbort B DataAbort ;/数据中止异常 FIQ_Handler B FIQ_Handler ;/ 快中断 ResetInit B MAIN ;/复位转主程序 MAIN LDR R

39、0,=SCS ;/以下为主程序 MOV R1,#0X00000000 STR R1,R0 ;/设置SCS,置P0,P1为低速模式 LDR R0,=PINSEL3 STR R1,R0 ;/ P1引脚功能均为GPIO LDR R0,=IO1DIR LDR R1,=SOUNDCON STR R1,R0 ;/P1.27引脚为输出,P1口其余引脚为输入LOOP LDR R1,=SOUNDCONSSET LDR R0,=IO1SET STR R1,R0 ;/P1.27引脚为1,不发声 BL DELYCSET LDR R0,=IO1CLR STR R1,R0 ;/P1.27引脚为0,发声 BL DELY B

40、 LOOP DELY MOV R7,#0X000FF000 ;/延时子程序DLY1 SUBS R7,R7,#1 BNE DLY1 MOV PC,LR ALIGN LTORG END 实验三 GPIO输出控制实验一实验目的熟悉GPIO功能及输出控制的使用。二实验设备及器件PC机 一台SmartARM2300工控开发平台 一台三实验原理及实验内容LPC2300系列ARM具有5组通用输入输出:P0P4。对于LPC2300系列ARM来说,GPIO分为“高速模式(增强型)”和“低速模式(通用型)”。其中: P0和P1口既能够使用“高速模式”操作也能够使用“低速模式”来操作; P2、P3和P4口,只能够使

41、用“高速模式”来操作。P0和P1口能够使用“低速模式”操作主要是为了兼容LPC2300系列ARM的早期型号。有关这两种模式的详细说明,请参考深入浅出ARM7LPC2300系列上册中的通用输入/输出口一节。蜂鸣器是一种以一体化结构的电子讯响器,采用直流或者交流供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中做发声器件。蜂鸣器通常使用中功率的三极管来驱动,如C8550等。图3.51为SmartARM2300工控开发平台蜂鸣器的驱动电路,此处直流蜂鸣器的驱动电压为3.3V,有P1.27控制,在实验中通过短接跳线JPI-9,连接P1.27与BEEP引脚

42、。图3.51 蜂鸣器控制电路由于蜂鸣器是线路板上的器件,因此,直接使用非隔离的方式驱动即可。当P1.27的输出低电平时,三极管Q4会进入饱和状态,VDD电压加到了蜂鸣器上使之鸣叫;反之,当P1.27的输出高电平时,三极管Q4会进入截止状态,蜂鸣器上的驱动电压消失,蜂鸣器停止鸣叫。1. 低速模式控制在使用P1.27控制蜂鸣器前,需要先通过“管脚连接寄存器”将P1.27引脚设置为GPIO,接下来设置GPIO的输入/输出方式,由于使用低速模式,所以需要通过IO1DIR寄存器将其设置为输出模式,程序清单如下: PINSEL3 =0x00000000; /设置管脚连接GPIOIO1DIR =BEEP;

43、/设置BEEP控制口为输出在低速模式下,使用IO1CLR和IO1SET寄存器来控制P1.27引脚输出低电平和高电平,从而达到控制蜂鸣器鸣叫目的,程序清单如下: IO1SET =BEEP; /P1.27输出高电平,蜂鸣器停止蜂鸣DelayNS(50); /延时IO1DIR=BEEP; / P1.27输出低电平,蜂鸣器蜂鸣DelayNS(50); /延时2. 高速模式控制在LPC2300系列ARM中,所有的端口都可以通过高速模式来控制,其中,P2、P3和P4只能使用高速模式来控制。要想通过高速模式来操作P0和P1端口,必须在使用之前置位“系统控制和状态寄存器(SCS)”中的“GPIOM”位,程序清

44、单如下: 如果GPIOM=“0”,只能使用“低速模式”来操作P0和P1端口; 如果GPIOM=“1”,只能使用“高速模式”来操作P0和P1端口。无论使用高速模式还是低速模式,P1.27都是作为GPIO来使用的,因此,也需要设置“管脚连接寄存器”,但是设置引脚输入/输出模式时。在高速模式下需要使用FIO1DIR寄存器,程序清单如下: SCS =SCS|0x01; /P0和P1端口连接到高速端口PINSEL3 =PINSEL3&(0x03<<(27-16); /设置P1.27管脚连接GPIOFIO1DIR =FIO1DIR|(1<<27); /设置高速端口P1.27

45、为输出口在高速模式下,使用FIO1CLR和FIO1SET寄存器来控制P1.27引脚输出低电平和高电平,从而达到控制蜂鸣器鸣叫的目的,程序清单如下: FIO1SET = 1<<27; / P1.2输出高电平,蜂鸣器停止蜂鸣DelayNS(50); /延时FIO1DIR =1<<27; / P1.2输出低电平,蜂鸣器蜂鸣DelayNS(50); /延时注意:LPC2300系列ARM的I/O引脚正常拉出/灌入电流为4mA,短时间极限值为40mA。四实验要求熟练掌握GPIO功能及输出控制的使用方法。五实验参考程序将计算机并口与EasyJTAG-H仿真器相连,EasyJTAG-H

46、仿真器的JTAG接口连接到SmartARM2300工控开发平台上左上方的CON5,启动H-JTAG和H-FLASH软件,选择NXP LPC2378器件,并最小化窗口。使用ARM Executale Image for LPC2300工程模板建立工程,根据任务编写程序,并将程序文件添加到工程,然后编译、调试。实验三以后的实验于此相同,将不再缀述。实验程序一、GPIO输出实验蜂鸣器控制#include "config.h"#define BEEP (1 << 27)/ P0.7控制蜂鸣器,低电平蜂鸣/* 函数名称 :DelayNS* 函数功能 :长软件延时* 入口参

47、数 :dly延时参数,值越大,延时越久* 出口参数 :无*/void DelayNS(uint32 dly)uint32 i = 0;for ( ; dly > 0; dly-)for (i = 0; i < 50000; i+);/* 函数名称 :main* 函数功能 :用P1.27控制BEEP,让BEEP鸣叫。* 调试说明 :需将跳线JP1-9短接。*/int main(void)PINSEL3 = 0x00000000;/ 设置管脚连接GPIOIO1DIR = BEEP;/ 设置BEEP控制口为输出while (1)IO1SET = BEEP;/ BEEP停止蜂鸣DelayN

48、S(50);IO1CLR = BEEP;/ BEEP蜂鸣DelayNS(50); return (0);实验程序二、高速GPIO输出#include "config.h"#define BEEP (1 << 27)/ P0.7控制蜂鸣器,低电平蜂鸣/* 函数名称 :DelayNS* 函数功能 :长软件延时* 入口参数 :dly延时参数,值越大,延时越久* 出口参数 :无*/void DelayNS(uint32 dly)uint32 i;for (; dly > 0; dly-)for (i = 0; i < 50000; i+);/* 函数名称 :main* 函数功能 :用P1.27控制BEEP,让BEEP鸣叫。*/int main(void)SCS = SCS | 0x01;/ PORT0和PORT1端口连接到高速端口PINSEL3 = 0x00000000;/ 设置管脚连接GPIOFIO1SET = BEEP;/ P1.27输出高电平FIO1DIR = FIO1DIR | BEEP;/ 设置增强型端口P1.27为输出口while (1)FIO1SET = BEEP;/ P1.27输出高电平DelayNS(50);FIO1CLR = BEEP;/ P1.27输出低电平De

温馨提示

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

最新文档

评论

0/150

提交评论