实验1011Word格式.docx
- 文档编号:19893386
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:11
- 大小:145.05KB
实验1011Word格式.docx
《实验1011Word格式.docx》由会员分享,可在线阅读,更多相关《实验1011Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
2015年10月28日
GPIO输出控制实验1
一、实验目的
1、掌握LPC2200专用工程模板的使用。
2、掌握EasyJTAG仿真器的安装和使用。
3、能够在MagicARM2200-S教学实验开发平台上运行第一个程序(无操作系统)。
4、熟悉LPC2000系列ARM7微控制器的GPIO控制。
二、实验内容及要求
(一)实验内容
控制MagicARM2200-S教学实验开发平台上的蜂鸣器报警。
先使用片外RAM(MT45W4MW16芯片)进行调试,调试通过后将程序固化到片外FLASH(SST39VF160芯片),然后脱机运行。
(二)实验要求
1、仔细阅读参考文献[1]第5.7节的LPC2000管脚连接模块,第5.9节的GPIO。
2、仔细阅读本书第1章的内容,了解MagicARM2200-S教学实验开发平台的硬件结构,注意蜂鸣器的相关控制电路。
3、仔细阅读产品光盘附带文档《ADS集成开发环境及仿真器应用》或其它相关资料,了解ADS1.2集成开发环境、LPC2200专用工程模板、EasyJTAG仿真器的应用。
三、实验设备及软件
硬件:
PC机一台;
MagicARM2200-S教学实验开发平台一套
软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
四、实验原理
如何在MagicARM2200-S上运行第一个程序。
1、安装ADS1.2。
运行在ADS目录下Setup.exe,开始安装ADS1.2。
按照安装软件的提示安装,与其它软件安装操作方法基本一致。
2、了解ADS1.2。
使用ADS1.2建立工程,编译链接设置,调试操作等,更详细的使用方法参考ADS1.2的在线帮助文档或相关资料。
3、连接EasyJTAG仿真器和MagicARM2200-S教学实验开发平台。
将EasyJTAG仿真器的25针接口通过并口延长线与PC机的并口连接,将EasyJTAG仿真器的20针接口通过20PIN连接电缆接到MagicARM2200-S教学实验开发平台的J3上,打开实验箱电源。
4、EasyJTAG仿真器的安装与应用。
参考产品光盘附带文档《ADS集成开发环境及仿真器应用》的内容。
5、添加工程模板。
6、用工程模板建立第一个工程。
使用LPC2200专用工程模板建立工程(比如ARMExecutableImageforMagicARM2200工程模板),然后在user组中的main.c中编写程序代码。
7、编译链接工程,若有错误,则修改程序,然后再次编译。
8、仿真调试第一个工程正确设置MagicARM2200-S教学实验开发平台上的跳线。
9、启动AXD进行仿真调试。
五、实验过程及步骤
1、连接EasyJTAG仿真器和MagicARM2200-S教学实验开发平台,然后安装EasyJTAG仿真器的驱动程序(若已经安装过,此步省略)。
2、为ADS1.2增加LPC2200专用工程模板(若已增加过,此步省略)。
3、启动ADS1.2,使用ARMExecutableImageforMagicARM2200工程模板建立一个工程BeepCon_C。
4、在user组中的main.c中编写主程序代码。
5、选用DebugInExram生成目标,如图2.15所示,然后编译链接工程。
图2.15选择生成目标
6、见图2.16,短接MagicARM2200-S教学实验开发平台上的蜂鸣器跳线JP7。
断开CF卡跳线JP13、GPIO接口J17。
图2.16蜂鸣器连接电路
7、选择【Project】->
【Debug】,启动AXD进行JTAG仿真调试(需要正确设置仿真器,参考产品光盘附带文档《ADS集成开发环境及仿真器应用》)。
注意:
使用DebugInExram生成目标时,使用片外RAM进行仿真调试,建议AXD设置HaltMode选择Haltprogram,AuxOption选择EraseFlashwhenneed。
在AXD中设置仿真器参考如图2.17所示。
图2.17片外RAM调试的仿真器设置
8、若JTAG连接出错,或AXD主窗口没有显示Startup.S源程序,按产品光盘附带文档《ADS集成开发环境及仿真器应用》介绍的方法进行处理。
9、全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。
10、单击ContextVariable图标按钮(或者选择【ProcessorViews】->
【Variables】)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。
选择【SystemViews】->
【DebuggerInternals】即可打开LPC2000系列ARM7微控制器的片内外设寄存器窗口。
11、可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。
12、当仿真调试通过后关闭AXD,在ADS1.2集成开发环境中选用RelOutChip生成目标,然后编译链接工程。
13、选择【Project】->
【Debug】,启动AXD进行JTAG仿真调试。
此时EasyJTAG仿真器将会把程序下载到片外FLASH上(需要正确设置仿真器,见图2.18。
具体参考产品光盘附带文档《ADS集成开发环境及仿真器应用》)。
14、按MagicARM2200-S教学实验开发平台上的RST复位键,观察程序是否能脱机运行。
15、实验结束后,在AXD中设置仿真器为片外RAM调试方式的设置,以便于后面实验的正确操作。
五、主要代码及运行结果
主要代码:
GPIO输出控制实验1的参考程序:
/********************************************************************
*文件名:
main.c
*功能:
蜂鸣器控制。
对蜂鸣器B1进行控制,采用软件延时方法。
*使用I/O口直接控制,采用灌电流方式。
*说明:
短接蜂鸣器跳线JP7。
断开CF卡跳线JP13、GPIO接口J17。
********************************************************************/
#include"
config.h"
#defineBEEPCON0x00000080//P0.7引脚控制B1,低电平蜂鸣
*名称:
DelayNS()
长软件延时。
*入口参数:
dly延时参数,值越大,延时越久
*出口参数:
无
voidDelayNS(uint32dly)
{uint32i;
for(;
dly>
0;
dly--)
{
for(i=0;
i<
5000;
i++);
}
main()
控制蜂鸣器蜂鸣。
intmain(void)
PINSEL0=0x00000000;
//设置管脚连接GPIO
IO0DIR=BEEPCON;
//设置I/O为输出
while
(1)
IO0SET=BEEPCON;
//BEEPCON=1
DelayNS(15);
IO0CLR=BEEPCON;
//BEEPCON=0
return(0);
六、心得体会
(一)思考
1、为什么这个实验的工程不需要设置链接地址?
(提示:
LPC2200专用工程模板已集成了启动代码、编译选项和链接地址设置等等)
答:
LPC2200专用工程模板已集成了启动代码、编译选项和链接地址设置。
2、在实验参考程序中,如何控制蜂鸣器报警的速度?
直接更改程序最后的那两个延迟函数DelayNS()中的参数的大小,便可更改蜂鸣器报警的速度和其间隔的时间。
3、在LPC2000系列ARM7微控制器中,有哪两个管脚作GPIO输出时需要外接上拉电阻?
SS和EL。
(二)体会
这次实验,对LPC2200专用工程模板的使用更加熟悉了,还有EasyJTAG仿真器的安装和使用,而且能够在MagicARM2200-S教学实验开发平台上运行第一个程序(无操作系统),还熟悉了LPC2000系列ARM7微控制器的GPIO控制。
但这次实验还是遇到了很大的问题,仿真不太会,导致实验的进行有很大的阻碍。
GPIO输出控制实验2
熟悉LPC2000系列ARM7微控制器的GPIO控制。
使用GPIO口控制8个LED流水灯显示。
2、仔细阅读本书第1章的内容,了解MagicARM2200-S教学实验开发平台的硬件结构,注意键盘及LED显示电路。
硬件:
四、实验过程及步骤
1、启动ADS1.2,使用ARMExecutableImageforMagicARM2200工程模板建立一个工程LEDCon_C。
2、在user组中的main.c中编写主程序代码。
3、选用DebugInExram生成目标,然后编译链接工程。
4、见图2.19,短接MagicARM2200-S教学实验开发平台上LED跳线JP5。
5、选择【Project】->
6、单步运行程序,通过LED1~LED8的显示判断输出是否正确。
全速运行程序,观察LED1~LED8的显示。
图2.19LED连接电路
GPIO输出控制实验2的参考程序:
LED显示控制。
*通过GPIO直接控制8个LED产生流水灯效果
短接LED跳线JP5。
*这个警告可忽略,C2892E:
signedconstantoverflow
#defineLED11<
<
16//P1.16
#defineLED21<
17//P1.17
#defineLED31<
18//P1.18
#defineLED41<
19//P1.19
#defineLED51<
20//P1.20
#defineLED61<
21//P1.21
#defineLED71<
22//P1.22
#defineLED81<
23//P1.23
#defineLEDCON0x00ff0000
constuint32DISP_TAB[8]={0xff01ffff,0xff02ffff,0xff04ffff,0xff08ffff,
0xff10ffff,0xff20ffff,0xff40ffff,0xff80ffff};
长软件延时
根据表DISP_TAB来控制LED显示。
{uint8i;
PINSEL1=0x00000000;
IO1DIR=LEDCON;
//配置LED控制I/O方向
8;
i++)
IO1CLR=DISP_TAB[i];
//输出LED显示数据
DelayNS(10);
//延时
IO1SET=0xffffffff;
六、心得体会
1、在实验参考程序中,#defineLED41<
31这种表达式对于I/O操作有什么方便的地方?
方便写程序,位操作方便,而且不用计算LED4对应端口的地址。
2、如何避免C2892E:
signedconstantoverflow警告?
(提示:
#defineLED41u<
31,这里u表示无符号数值)
如果用无符号的话就不用考虑符号位,就不会溢出了,比如#defineLED41u<
31,这里u表示无符号数值。
这次实验,熟悉了LPC2000系列ARM7微控制器的GPIO控制,还有LPC2000管脚连接模块,也有了一定的了解,但是,这次实验,对于仿真不太会,所以对于我来说,还是有很大的难度,在实验过程中,遇到了很多问题,不知道从何下手。
而且,这次的实验也和以前的实验有些区别。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 1011