ARM1138实习.docx
- 文档编号:30077236
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:31
- 大小:337.84KB
ARM1138实习.docx
《ARM1138实习.docx》由会员分享,可在线阅读,更多相关《ARM1138实习.docx(31页珍藏版)》请在冰豆网上搜索。
ARM1138实习
实验报告
实验题目:
ARM嵌入式实践
系部名称:
电子信息与电气工程系
班级名称:
微机应用071
学生姓名:
蒋波
学生学号:
20070420211006
指导教师:
郭荣佐
实验时间:
2009-12-29
一实验目的3
二实验环境3
三实验内容3
1安装IAR及相关驱动3
1.1IAR软件安装步骤如下:
3
1.2安装LMLINK驱动程序很简单4
1.3《Stellaris外设驱动库》的安装4
2、IAR的正确使用5
2.1新建工作区5
2.2生成新项目6
2.3添加/新建文件9
2.4编译和运行应用程序14
3仿真实验15
3.1流水灯15
3.2按键控制LED22
3.3UART字符串收发29
3.416位PWM34
3.5I2C40
4电路图45
四实验总结46
一实验目的
1、了解IAR的安装过程,进行安装实验。
2、掌握IAR的正确使用。
3、能够使用EasyARM1138进行三只LED流水灯和UART(通用异步收发器)等的仿真测试工作。
二实验环境
操作系统:
windowsXP
应用系统:
IARV5.11、EasyARM1138平台
三实验内容
1安装IAR及相关驱动
1.1IAR软件安装步骤如下:
●运行“EWARM-KS-WEB-511.exe”,要稍等几分钟
●点击“InstallIAREmbeddedWorkbench”开始安装
●输入Name、Company、License#(在附带的.txt文件里)
●输入License#和LicenseKey
●安装到默认的路径下,不要更改,即
C:
\ProgramFiles\IARSystems\EmbeddedWorkbench5.0Kickstart
1.2安装LMLINK驱动程序很简单
步骤如下:
●用原装的USB电缆连接EasyARM1138开发板与电脑
●此时,Windows会提示“找到新硬件”,然后开始安装;请在以下指定的位置安装驱动程序:
EasyARM1138产品光盘:
\安装软件\LuminaryFTDI\
●注意:
如果出现“没有通过Windows徽标测试”的警告,请选择“仍然继续”
●注意:
安装共有3次,StellarisEvaluationBoardA、StellarisEvaluationBoardB以及USBCompositeDevice(虚拟UART)都要安装。
1.3《Stellaris外设驱动库》的安装
●将“Stellaris外设驱动库(快速安装)”下的文件夹“ARM”复制到IAR安装目
录下,即“C:
\ProgramFiles\IARSystems\EmbeddedWorkbench5.0Kickstart”
此时会弹出“确认文件夹替换”的对话框,请选择“全部”
●将文件夹“PDL-LM3S-2752”复制到C:
\盘根目录下,完成。
2、IAR的正确使用
建立一个项目文件目录首先应该为新项目创建一个目录,用来存放与项目有关的各种文件。
项目开发过程中生成的一系列文件,如:
工作区文件,开发环境的配置,编译、连接和调试选项配置,各种列表文件和输出文件等都将被存放在这个目录下。
用户也可以选择把各种源文件也放在这个目录下。
在下面的例子中我们生成一个E:
\DEMO目录。
2.1新建工作区
IAREWARM虽然是按项目进行管理,但是要求把所有的项目都放在工作区内(Workspace)。
用户如果是第一次使用IAREWARM开发一个新项目,必须先创建一个新工作区,然后才能在工作区中创建新项目。
一个工作区中允许存放一个或多个项目。
如果用户过去已经建立了一个工作区并且希望把目前要建的新项目放在老工作区内,则可以直接打开老工作区并执行第三步生成新项目。
创建新工作区方法如下:
启动IAREWARM开发环境,
选择主菜单的File>New>Workspace命令,然后开启一个空白工作区窗口,如图0.18所示。
图0.18空白工作区窗口
2.2生成新项目
创建新项目方法如下:
1、选择主菜单Project>CreateNewProject,弹出生成新项目窗口中。
IAREWARM提供几种应用程序和库程序的项目模板。
如果选择Emptyproject,表示采用默认的项目选项设置,为一个空工程。
在本例中我们选择Emptyproject,如图0.19所示。
图0.19
2、在Toolchain栏中选择ARM,点击OK按钮,弹出“另存为”窗口。
如图0.20所示。
图0.20“另存为”窗口
3、在“另存为”窗口中浏览和选择新建的E:
\DEMO目录,输入新项目的文件名为demo,然后保存。
这时在屏幕左边的Workspace窗口中将显示新建的项目名和输出代码模式,如图0.21所示。
图0.21新建项目名
项目名后面的Debug表示输出含调试信息的代码文件。
IAREWARM能为项目提供两种输出代码模式:
Debug和Release。
Debug模式生成含调试信息的程序代码,用户利用它可以在IAREWARM环境下调试应用程序。
而Release模式生成不含调试信息的发行版本的程序代码,其代码比较紧凑。
用户可以从Workspace窗口顶部的下拉菜单中选择两种项目配置之一,本例我们选择Debug。
现在DEMO目录下已生成一个demo.ewp文件,该文件中将包含与demo项目设置有关的信息,如编译、连接(build)的选项等。
注意:
demo-Debug后的*号表示当前的工作区和项目经修改后还没有被保存。
4、保存工作区
新生成的工作区需要保存才有效,所以在添加项目后IAREWARM要求执行保存工作区操作。
保存工作区选择主菜单File>SaveWorkspace,浏览并选择E:
\DEMO目录。
然后将工作区取名为demo输进Filename输入框,按保存按钮退出,如图0.22所示。
这时在E:
\DEMO目录下又生成一个demo.eww文件。
同时在E:
\DEMO目录下还生成一个settings子目录,这个目录下存放保存窗口设置和断点设置等与当前操作有关信息的其他文件。
图0.22保存工作区
注意:
保存操作完成后项目名后的*号已经消失。
2.3添加/新建文件
保存工作区后,下一步就是在项目中新建文件或添加已有文件。
项目中的文件允许分组,
用户可以根据项目的需要和自己的习惯来组织源文件。
为举例说明,这里新建以下几个文件
组:
一个startup文件组,一个src文件组,一个lib文件组。
注意:
往项目中添加文件时只需添加汇编语言和C语言的源程序,不需要添加头文件
(即.h头文件)。
但是用户必须在配置项目的编译器、连接器选项时指明包含头文件的路径和
目录。
关于项目配置选项的设定我们会在后面详细介绍。
1、建立文件组
右击“demo-Debug”然后选择ADD>ADDGroup…,如图0.23所示。
图0.23建立文件组
新建3个文件组:
startup文件组,src文件组,lib文件组,如图0.24所示
图0.24新建3个文件组
2、添加对应文件
向文件组添加对应文件,如图0.25所示
图0.25向文件组添加对应文件
●在lib组添加driverlib.a文件
添加方法:
右击lib,选择ADD>ADDFiles…,在弹出的对话框中选择:
“C:
\ProgramFiles\IARSystems\EmbeddedWorkbench5.0Kickstart\arm\lib\Luminary”,选择需要添加的库文件driverlib.a,如图0.26所示。
图0.26选择需要添加的库文件
●在startup组添加startup_ewarm.c文件
将“C:
\PDL-LM3S-2752\DriverLib\ewarm”下的startup_ewarm.c文件复制到工程目录E:
\DEMO下面。
然后右击startup,选择ADD>ADDFiles…,在弹出的对话框中选择目录E:
\DEMO,添加startup_ewarm.c文件,如图0.27所示。
图0.27添加startup_ewarm.c文件
●在src组中新建需要的demo.c文件或添加已有的demo.c文件,即主程序在这里编辑。
这里新建一个demo.c,首先单击src组,选择File>New>File(也可以选择Newdocument),将在窗口中出现一个空白页,再选择File>Save,弹出另存为对话框,保存在
E:
\DEMO,保存为demo.c。
然后右击src组,选择ADD>ADDFiles…,在弹出的对话框中选择目录E:
\DEMO,添加demo.c文件。
如图0.28所示。
图0.28添加demo.c文件
此时,便可以在该main.c文件中编辑需要的程序,这里编写了一个LED灯闪烁的示例
程序。
2.4编译和运行应用程序
编译连接处理选择主菜单Project>Make,或选中工作区中的项目名demo–Debug,按鼠标右键在弹出菜单中选择Make。
如果你想重新编译所有的文件,选择主菜单Project>RebuildAll,或选中工作区中的项目名demo–Debug,按鼠标右键在弹出菜单中选择RebuildAll。
IAREWARM将执行编译连接处理,生成可调试代码文件。
Build消息窗口中将显示连接处理的消息。
连接的结果将生成一个带调试信息的代码文件demo.o和一个存储器分配(MAP)文件demo.map。
从编译连接后的工作区窗口中树结构中,我们可以看到每个源文件访问关联了哪些头文件,同时生成了哪些输出文件。
因为我们在建立新项目时选择Debug配置,所以在DEMO目录下自动生成一个Debug子目录。
Debug子目录下又包含另3个子目录,名字分别为List、Obj、Exe。
在Obj目录下后缀为.o的文件,用作IARXLINK连接器的输入文件。
在Exe目录下后缀为.out的文件,用作IARC-SPY调试器的输入文件,注意在执行连接处理之前这个目录是空的。
3仿真实验
3.1流水灯
实验要求:
在easyarm1138上实现流水灯。
实验代码:
//基于《Stellaris外设驱动库》的例程:
交流蜂鸣器发出、按键控制LED
//包含必要的头文件
#include"LED.H"
#include"KEY.H"
#include"Buzzer.H"
#include
#include
#include
#include
#include
#include
//将较长的标识符定义成较短的形式
#defineSysCtlPeriEnableSysCtlPeripheralEnable
#defineSysCtlPeriDisableSysCtlPeripheralDisable
#defineGPIOPinTypeInGPIOPinTypeGPIOInput
#defineGPIOPinTypeOutGPIOPinTypeGPIOOutput
//定义KEY
#defineKEY_PERIPHSYSCTL_PERIPH_GPIOG
#defineKEY_PORTGPIO_PORTG_BASE
#defineKEY_PINGPIO_PIN_5
//防止JTAG失效
voidJTAG_Wait(void)
{
SysCtlPeriEnable(KEY_PERIPH);//使能KEY所在的GPIO端口
GPIOPinTypeIn(KEY_PORT,KEY_PIN);//设置KEY所在管脚为输入
if(GPIOPinRead(KEY_PORT,KEY_PIN)==0x00)//如果复位时按下KEY,则进入
{
for(;;);//死循环,以等待JTAG连接
}
SysCtlPeriDisable(KEY_PERIPH);//禁止KEY所在的GPIO端口
}
//定义全局的系统时钟变量
unsignedlongTheSysClock=12000000UL;
//延时
voidDelay(unsignedlongulVal)
{
while(--ulVal!
=0);
}
//系统初始化
voidSystemInit(void)
{
/*
SysCtlLDOSet(SYSCTL_LDO_2_50V);//设置LDO输出电压
SysCtlClockSet(SYSCTL_USE_OSC|//系统时钟设置,采用主振荡器
SYSCTL_OSC_MAIN|
SYSCTL_XTAL_6MHZ|
SYSCTL_SYSDIV_1);
*/
SysCtlLDOSet(SYSCTL_LDO_2_75V);//配置PLL前将LDO电压设置为2.75V
SysCtlClockSet(SYSCTL_USE_PLL|//系统时钟设置,采用PLL
SYSCTL_OSC_MAIN|//主振荡器
SYSCTL_XTAL_6MHZ|//外接6MHz晶振
SYSCTL_SYSDIV_4);//分频结果为50MHz
TheSysClock=SysCtlClockGet();//获取系统时钟,单位:
Hz
LED_Init(LED1|LED2|LED3);//LED初始化
LED_Off(LED1|LED2|LED3);//熄灭LED
KEY_Init(KEY1|KEY2);//KEY初始化
BuzzerInit();//蜂鸣器初始化
}
Voidbuzzer()
{
BuzzerSound(1500);//蜂鸣器发出1500Hz声音
Delay(400*(TheSysClock/4000));//延时约400ms
BuzzerSound(2000);//蜂鸣器发出2000Hz声音
Delay(800*(TheSysClock/4000));//延时约800ms
}
//主函数(程序入口)
intmain(void)
{
JTAG_Wait();//防止JTAG失效,重要!
SystemInit();//系统初始化
for(;;)
{
LED_On(LED1);//点亮LED1
Delay(10*(TheSysClock/4000));//延时约10ms
LED_Off(LED1);//熄灭LED1
Delay(10*(TheSysClock/4000));//延时约10ms
LED_On(LED2);//点亮LED2
Delay(10*(TheSysClock/4000));//延时约10ms
LED_Off(LED2);//熄灭LED2
Delay(10*(TheSysClock/4000));//延时约10ms
LED_On(LED3);//点亮LED3
Delay(10*(TheSysClock/4000));//延时约10ms
LED_Off(LED3);//熄灭LED3
Delay(10*(TheSysClock/4000));//延时约10ms
buzzer();//打开蜂鸣器
}
}
编译运行后可见流水灯和蜂鸣器报警声。
3.2按键控制LED
实验要求:
在easyarm1138上按键控制LED。
实验代码
//基于《Stellaris外设驱动库》的例程:
按键控制LED
//包含必要的头文件
#include"LED.H"
#include"KEY.H"
#include
#include
#include
#include
#include
#include
//将较长的标识符定义成较短的形式
#defineSysCtlPeriEnableSysCtlPeripheralEnable
#defineSysCtlPeriDisableSysCtlPeripheralDisable
#defineGPIOPinTypeInGPIOPinTypeGPIOInput
#defineGPIOPinTypeOutGPIOPinTypeGPIOOutput
//定义KEY
#defineKEY_PERIPHSYSCTL_PERIPH_GPIOG
#defineKEY_PORTGPIO_PORTG_BASE
#defineKEY_PINGPIO_PIN_5
//防止JTAG失效
voidJTAG_Wait(void)
{
SysCtlPeriEnable(KEY_PERIPH);//使能KEY所在的GPIO端口
GPIOPinTypeIn(KEY_PORT,KEY_PIN);//设置KEY所在管脚为输入
if(GPIOPinRead(KEY_PORT,KEY_PIN)==0x00)//如果复位时按下KEY,则进入
{
for(;;);//死循环,以等待JTAG连接
}
SysCtlPeriDisable(KEY_PERIPH);//禁止KEY所在的GPIO端口
}
//定义全局的系统时钟变量
unsignedlongTheSysClock=12000000UL;
//延时
voidDelay(unsignedlongulVal)
{
while(--ulVal!
=0);
}
//系统初始化
voidSystemInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_50V);//设置LDO输出电压
SysCtlClockSet(SYSCTL_USE_OSC|//系统时钟设置,采用主振荡器
SYSCTL_OSC_MAIN|
SYSCTL_XTAL_6MHZ|
SYSCTL_SYSDIV_1);
/*
SysCtlLDOSet(SYSCTL_LDO_2_75V);//配置PLL前将LDO电压设置为2.75V
SysCtlClockSet(SYSCTL_USE_PLL|//系统时钟设置,采用PLL
SYSCTL_OSC_MAIN|//主振荡器
SYSCTL_XTAL_6MHZ|//外接6MHz晶振
SYSCTL_SYSDIV_10);//分频结果为20MHz
*/
TheSysClock=SysCtlClockGet();//获取系统时钟,单位:
Hz
LED_Init(LED1|LED2);//初始化LED1和LED2
KEY_Init(KEY1|KEY2);//初始化KEY1和KEY2
}
//主函数(程序入口)
intmain(void)
{
JTAG_Wait();//防止JTAG失效,重要!
SystemInit();//系统初始化
LED_On(LED1|LED2);//点亮LED1和LED2
Delay(1000*(TheSysClock/4000));//延时约1000ms
LED_Off(LED1|LED2);//熄灭LED1和LED2
for(;;)
{
if(KEY_Get(KEY1))
{
LED_On(LED1);//点亮LED1
}
else
{
LED_Off(LED1);//熄灭LED1
}
if(KEY_Get(KEY2))
{
LED_On(LED2);//点亮LED2
}
else
{
LED_Off(LED2);//熄灭LED2
}
Delay(10*(TheSysClock/4000));//延时约10ms
}
}
程序运行后,按下KEY1能够控制LED1的亮灭,按下KEY2能够控制LED2的亮灭。
3.3UART字符串收发
实验要求:
在easyarm1138上实现字符串收发。
实验代码
//基于《Stellaris外设驱动库》的UART例程:
字符串收发
//包含必要的头文件
#include"UART_GetPut.H"
#include
#include
#include
#include
#include
#include
//将较长的标识符定义为较短的形式
#defineSysCtlPeriEnableSysCtlPeripheralEnable
#defineSysCtlPeriDisableSysCtlPeripheralDisable
#defineGPIOPinTypeInGPIOPinTypeGPIOInput
#defineGPIOPinTypeOutGPIOPinTypeGPIOOutput
#defineGPIOPinTypeODGPIOPinTypeGPIOOutputOD
//定义KEY
#defineKEY_PERIPHSYSCTL_PERIPH_GPIOG
#defineKEY_PORTGPIO_PORTG_BASE
#defineKEY_PINGPIO_PIN_5
//防止JTAG失效
voidJTAG_Wait(void)
{
SysCtlPeriEnable(KEY_PERIPH);//使能KEY所在的GPIO端口
GPIOPinTypeIn(KEY_PORT,KEY_PIN);//设置KEY所在管脚为输入
if(GPIOPinRead(KEY_PORT,KEY_PIN)==0x00)//如果复位时按下KEY,则进入
{
for(;;);//死循环,以等待JTAG连接
}
SysCtlPeriDisable(KEY_PERIPH);//禁止KEY所在的GPIO端口
}
//系统初始化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM1138 实习