嵌入式实验报告.docx

上传人:b****2 文档编号:159349 上传时间:2023-04-28 格式:DOCX 页数:19 大小:40.86KB
下载 相关 举报
嵌入式实验报告.docx_第1页
第1页 / 共19页
嵌入式实验报告.docx_第2页
第2页 / 共19页
嵌入式实验报告.docx_第3页
第3页 / 共19页
嵌入式实验报告.docx_第4页
第4页 / 共19页
嵌入式实验报告.docx_第5页
第5页 / 共19页
嵌入式实验报告.docx_第6页
第6页 / 共19页
嵌入式实验报告.docx_第7页
第7页 / 共19页
嵌入式实验报告.docx_第8页
第8页 / 共19页
嵌入式实验报告.docx_第9页
第9页 / 共19页
嵌入式实验报告.docx_第10页
第10页 / 共19页
嵌入式实验报告.docx_第11页
第11页 / 共19页
嵌入式实验报告.docx_第12页
第12页 / 共19页
嵌入式实验报告.docx_第13页
第13页 / 共19页
嵌入式实验报告.docx_第14页
第14页 / 共19页
嵌入式实验报告.docx_第15页
第15页 / 共19页
嵌入式实验报告.docx_第16页
第16页 / 共19页
嵌入式实验报告.docx_第17页
第17页 / 共19页
嵌入式实验报告.docx_第18页
第18页 / 共19页
嵌入式实验报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式实验报告.docx

《嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告.docx(19页珍藏版)》请在冰点文库上搜索。

嵌入式实验报告.docx

嵌入式实验报告

嵌入式实验报告

学院:

信息工程学院

专业:

计算机科学与技术

班级:

计算机班

姓名:

学号:

指导老师:

实验目录

实验一嵌入式系统开发环境实验

【实验目的】

1.熟悉RealViewMDK集成开发环境以及使用方法。

2.熟悉嵌入式系统软件设计方法和流程。

【实验内容】

1.通过例程熟悉、掌握嵌入式系统的编辑、编译、调试、下载及运行过程。

2.建立自己的工程文件,在开发板板上调试程序。

【实验步骤】

(一)程序安装

1.建议在安装之前关闭所有的应用程序,双击安装文件,弹出如图对话框,Next

2.默认选择C盘文件下安装。

3.这样就在c盘底下出现keil文件夹。

4.单击选择菜单“File”-->"LicenseManagement"将弹出下面一张图的界面:

复制其中CID号,以便在粘贴到下一步中的破解软件。

5.复制CID

6.运行破解软件,将出现下面一张图的界面,把上步复制的CID号粘贴到相应位置,其他选项如图,然后点击“Generate”按钮,然后复制产生的序列号,粘贴到上一步的下面一张图的LIC输入框中,然后点击右侧的AddLIC,即可完成破解。

7.安装文件夹中的jlink驱动。

(二)工程创建、编译

使用RealviewMDK创建、完成一个新的工程只需要以下几个环节:

→创建工程并选择处理器→选择工具集→创建源文件→配置硬件选项→配置对应启动代码→编译链接→下载→调试。

1.创建工程并选择处理器

选择Project→NewProject…,输入创建的新工程的文件名,即可创建一个新的工程。

2.创建一个新工程时,需要为工程选择一款对应处理器,在NXP列表下选择LPC1768芯片。

然后点击OK。

接下来出现的对话框选择“是或者也可以通过单击Project→SelectDeviceforTarget…在本次课程中,我们选择

3.点击上图的ok,在弹出的对话框中确定是否需要复制启动文件

选择否,如果选择是,将使用keil自带的启动文件

4.在工程区域单击鼠标右键,选择managecomponents

5.在“ProjectComponents”标签下根据需要建立目录,第一栏是工程的根目录,在这里可以修改目录名;第二栏是添加Groups,可以根据个人习惯建立不同的组来分别放置不同类型的文件;第三栏是为建立的组添加代码文件用的,点击“AddFiles”添加。

6.在startup文件夹里添加

文件夹中的

在CMSIS-CORE文件夹里添加

件夹中的

7.新项目建完后,KeilμVision环境中项目窗口显示见图

下面开始创建源文件。

8.新建一个文件,点击File菜单下的New。

输入代码,点击保存

9.接下来右键点击左侧source下拉菜单的AddFiletoGroup…将我们刚刚新建的文件添加到工程。

出现添加对话框后选择已有的C程序源文件,然后点击Add,就可以点击Add下面的Close了

下面开始对工程进行配置。

10.选择“project”下的“optionsforTarget‘joy’…”选项

11.单击菜单项Project→OptionsforTarget,在弹出的Target页面中可指定目标硬件和所选择设备片内组件的相关参数,处理器配置对话框如下

12.Output(输出选项)设置,选择创建扩展名为HEX,选择HEX文件保存位置,建议保存在项目所在的文件夹下。

13.Debug(调试选项)设置,硬件仿真“Use:

14.点击上图硬件仿真处的settings按钮,则会弹出下图中的仿真硬件设置界面,如果连接成功,则会弹出硬件相关信息。

注意到此处:

板载一个USB仿真器,支持仿真调试、下载等功能。

使用方法跟JLINK一样(JLINK全兼容),开发板断开后内带的仿真器可以作为通用调试仿真开发工具使用。

JP4是仿真器选择控制脚,当JP4开路时选择板载仿真器连接LPC1768的JTAG口,当JP4短路时选择外部仿真器连接JTAG口外部仿真,切换功能必须要断电后再上电才生效。

所以请确认JP4开路。

15.Utilities(工具选项)设置

【实验现象】

建一个工程后,以系统节拍定时器实验,进行测试,将程序下载到开发板上之后,关闭开发板开关,然后打开,可以听见蜂鸣器每一秒钟会响一次。

说明嵌入式开发环境建立的正确。

【实验心得和体会】

通过这次实验我们大致掌握RealViewMDK集成开发环境以及使用方法。

通过例程大致熟悉、掌握嵌入式系统的编辑、编译、调试、下载及运行过程。

实验二系统节拍定时器实验

【实验目的】

(1) 掌握LPC1768芯片的使用

(2) 在开发平台上开发第一个程序

(3) 熟悉lpc1768的GPIO控制

【实验内容】

控制开发平台的蜂鸣器周期性(1秒)交替鸣叫。

【实验原理】

【原理图】

【实验步骤】

1使用RealviewMDK创建一个新的工程,经过一系列配置后

2新建一个文件,点击File菜单下的New。

输入代码,点击保存

3对工程进行配置完成以后,编译、链接、下载到开发板上

程序代码

#include"LPC17xx.h"

/*********************************************************************************************************

宏定义

*********************************************************************************************************/

#defineBEEP(1ul<<26)

uint32_tGulSystick=0;

uint32_tGucDelay1S=0;

/*********************************************************************************************************

**Functionname:

myDelay

**Descriptions:

软件延时

**inputparameters:

**outputparameters:

**Returnedvalue:

*********************************************************************************************************/

//voidmyDelay(uint32_tulTime)

//{

//uint32_ti;

//while(ulTime--){

//for(i=0;i<5000;i++);

//}

//}

/*********************************************************************************************************

**Functionname:

GPIOInit

**Descriptions:

GPIO初始化

**inputparameters:

**outputparameters:

**Returnedvalue:

*********************************************************************************************************/

voidGPIOInit(void)

{

LPC_PINCON->PINSEL1&=~(0x3<<20);/*将P0.26初始化为GPIO功能*/

LPC_GPIO0->FIODIR|=BEEP;/*将P0.26方向设置为输出*/

LPC_GPIO0->FIOSET|=BEEP;/*将P0.26初始化输出高电平*/

}

/*********************************************************************************************************

**Functionname:

SysTick_Handler

**Descriptions:

系统节拍定时器中断服务函数

**inputparameters:

**outputparameters:

**Returnedvalue:

*********************************************************************************************************/

voidSysTick_Handler(void)

{

if(GulSystick++>=99){/*配置一秒的延时*/

GulSystick=0;

GucDelay1S=1;

}

}

/*********************************************************************************************************

**Functionname:

main

**Descriptions:

系统节拍定时器例程。

短接P0.26与BEEP,启动程序,蜂鸣器隔1秒交替鸣叫

**inputparameters:

**outputparameters:

**Returnedvalue:

*********************************************************************************************************/

intmain(void)

{

SystemInit();/*系统初始化,切勿删除*/

GPIOInit();

SysTick_Config(100000000/100);

while

(1)

{

while(GucDelay1S==0);

GucDelay1S=0;

LPC_GPIO0->FIOSET|=BEEP;

while(GucDelay1S==0);

GucDelay1S=0;

LPC_GPIO0->FIOCLR|=BEEP;

}

}

引脚功能选择寄存器1(PINSEL1-0x4002C004)

PINSEL1寄存器控制端口0高半部分的位功能。

仅当引脚选择使用GPIO功能时,FIO0DIR寄存器中的方向控制位才有效。

对于其它功能来说,方向是自动控制的。

对于100引脚封装,引脚功能选择寄存器1的位功能描述如表所述。

【实验现象】

将程序下载到开发板上之后,关闭开发板开关,然后打开,可以听见蜂鸣器每一秒钟会响一次。

【实验心得和体会】

通过这次实验我们大致掌握LPC1768芯片的使用,熟悉了lpc1768的GPIO的控制。

学会配置引脚功能寄存器PINSEL,当引脚配置为GPIO功能时,GPIO的方向位有效。

实验三GPIO控制实验

【实验目的】

1、学习LPC系列处理器GPIO口的使用方法;

2、学习用Keil软件开发ARM程序方法和步骤。

3、理解基于ARM内核的LPC1768实验开发平台的管脚链接及原理。

【实验要求】

1、了解LPC系列处理器GPIO口的功能原理;

2、在Keil中设计ARM程序,实现对流水灯的控制;

3、下载到实验平台,并成功运行。

4、附加要求:

实现LED的各种不同移动、闪烁效果

【实验内容操作步骤】

1、启动keil新建工程。

2、新建C源文件,添加到工程,编写C文件。

3、配置生成目标。

4、编译连接工程。

5、JTAG调试。

【实验原理】

1、LPC系列处理器GPIO口的原理

PINSEL(x)管脚功能选择寄存器

IOPIN(x)GPIO引脚值寄存器

IOSET(x)GPIO输出置位寄存器

IODIR(x)GPIO方向控制寄存器

IOCLR(x)GPIO输出清零寄存器

2、实验电路原理图

实验电路的连接如下图,4个LED是利用LPC1368的GPIO口的P1.14到P1.17来控制的。

引脚输出高电平则LED点亮,输出低电平则LED熄灭(因为LED的另一端接地)。

对管脚的操作实际上就是对控制管脚寄存器的操作,所以可以通过对管脚寄存器的操作,实现管脚的不同输出(即高低电平),从而控制LED的状态(亮、灭)。

程序代码

#include"LPC17xx.h"

volatileuint32_tmsTicks;/*counts1mstimeTicks*/

voidSysTick_Handler(void){

msTicks++;/*incrementcounternecessaryinDelay()*/

}

__INLINEstaticvoidDelay(uint32_tdlyTicks){

uint32_tcurTicks;

curTicks=msTicks;

while((msTicks-curTicks)

}

__INLINEstaticvoidLED_Config(void){

LPC_GPIO2->FIODIR=0x000000ff;/*LEDsPORT2areOutput*/

//LPC_GPIO0->FIODIR=0x00200000;

//LPC_GPIO0->FIOPIN|=0x00200000;

}

/*------------------------------------------------------------------------------

SwitchonLEDs

*------------------------------------------------------------------------------*/

__INLINEstaticvoidLED_On(uint32_tled){

LPC_GPIO2->FIOPIN|=(led);/*TurnOnLED*/

}

/*------------------------------------------------------------------------------

SwitchoffLEDs

*------------------------------------------------------------------------------*/

__INLINEstaticvoidLED_Off(uint32_tled){

LPC_GPIO2->FIOPIN&=~(led);/*TurnOffLED*/

}

/*----------------------------------------------------------------------------

MAINfunction

*----------------------------------------------------------------------------*/

intmain(void){

uint8_tlocation;

if(SysTick_Config(SystemCoreClock/1000)){/*SetupSysTickTimerfor1msecinterrupts*///SystemCoreClock

while

(1);/*Captureerror*/

}

LED_Config();

while

(1)

{

LED_On(0xff);

Delay(500);

LED_Off(0xff);

for(location=0;location<8;location++)

{

LED_On((1<

Delay(100);/*delay100Msec*/

LED_Off((1<

Delay(100);/*delay100Msec*/

}

}

}

【实验现象】

将这个程序下载到开发板上调试之后,可以看到led灯从第一个开始到第八个依次点亮,就像是流水一般。

【实验心得和体会】

通过此次试验,学习了LPC系列处理器GPIO口的使用方法,了解LPC系列处理器GPIO口的功能原理;实验成功看到流水灯现象,对原理做出了验证;通过实验理解了基于ARM内核的LPC1768实验开发平台的管脚链接及原理。

实验四外部中断实验

【实验目的】

1、掌握NVIC的设置。

2、掌握外部中断引脚功能设置级外部中断工作模式设置。

3、了解中断服务函数的编写。

【实验要求】

4、了解LPC系列处理器外部中断的功能原理;

5、在Keil中设计ARM程序,实现外部中断;

6、按压INT0键(SW2)每按一次LED灯将左移一位

【操作步骤】

1、启动keil新建工程。

2、新建C源文件,添加到工程,编写C文件。

3、配置生成目标。

4、编译连接工程。

5、JTAG调试。

【实验原理】

程序代码

#include"lpc17xx.h"

volatileuint32_teint0_counter=0;

uint32_tcount=0;

uint32_ti=0;

/********************************************************************************

*函数名称:

voidEINT0_IRQHandler(void)

*函数功能:

外部中断0函数入口

*入口参数:

*出口参数:

*备注:

*******************************************************************************/

voidEINT0_IRQHandler(void)

{

LPC_SC->EXTINT=1;/*清中断*/

count=eint0_counter%8;

i=1<

LPC_GPIO2->FIOSET=i;/*点亮灯第i个灯*/

LPC_GPIO2->FIOCLR=~i;/*熄灭第i个灯之外的灯*/

eint0_counter++;/*计数值加1*/

}

/********************************************************************************

*函数名称:

uint32_tEINTInit(void)

*函数功能:

外部中断0初始化函数

*入口参数:

*出口参数:

返回TURE或FALSE

*备注:

如果是返回false则说明中断入口函数没有在中断向量表中建立

*******************************************************************************/

uint32_tEINTInit(void)

{

LPC_PINCON->PINSEL4=0x00100000;/*将P2.10脚设置为EINT0即第二功能*/

LPC_GPIOINT->IO2IntEnF=0x200;/*设置为下降沿触发*/

LPC_SC->EXTMODE=1;/*外部中断模式选择为边沿触发*/

LPC_SC->EXTPOLAR=0;/*外部中断1极性设置,此处选默认的低电平或下降沿*/

NVIC_EnableIRQ(EINT0_IRQn);/*使能外部中断0*/

return

(1);

}

/********************************************************************************

*函数名称:

voidPortInit(void)

*函数功能:

端口初始化

*入口参数:

*出口参数:

*备注:

*******************************************************************************/

voidPortInit(void)

{

LPC_PINCON->PINSEL4&=~0xCCCC;/*将P2.0~P2.7初始化为GPIO功能*/

LPC_GPIO2->FIODIR|=0xFF;/*将P2.0~P2.7方向设置为输出*/

LPC_GPIO2->FIOCLR|=0xFF;/*关闭所有的灯*/

}

/********************************************************************************

*函数名称:

intmain(void)

*函数功能:

主函数

*入口参数:

*出口参数:

*备注:

*******************************************************************************/

intmain(void)

{

SystemInit();/*系统初始化,函数在system_LPC17xx.c文件夹中定义*/

/*在core_cm3.h中定义*/

PortInit();/*端口初始化*/

EINTInit();

while

(1);

}

【实验现象】

将程序下载到开发板上之后,按压INT0按键,每按一次led灯就往左移动,即按第一下的时候第一个led灯亮,按第二个第二个的时候,第二个亮,当第八个灯亮的时候,再按一下第一灯就会点亮。

【实验心得和体会】

通过本次实验进行了NVIC的设置并理解掌握;掌握了外部中断引脚功能设置及外部中断工作模式设置。

本次实验的核心是中断服务函数的编写,所以会得到实验操作现象

实验五串口通讯实验

【实验目的】

1、学习LPC1768处理器UART的使用方法

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2