嵌入式实验报告Word格式.docx
- 文档编号:364252
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:19
- 大小:40.86KB
嵌入式实验报告Word格式.docx
《嵌入式实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告Word格式.docx(19页珍藏版)》请在冰点文库上搜索。
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++);
//}
//}
GPIOInit
GPIO初始化
voidGPIOInit(void)
{
LPC_PINCON->
PINSEL1&
=~(0x3<
20);
/*将P0.26初始化为GPIO功能*/
LPC_GPIO0->
FIODIR|=BEEP;
/*将P0.26方向设置为输出*/
FIOSET|=BEEP;
/*将P0.26初始化输出高电平*/
}
SysTick_Handler
系统节拍定时器中断服务函数
voidSysTick_Handler(void)
if(GulSystick++>
=99){/*配置一秒的延时*/
GulSystick=0;
GucDelay1S=1;
}
main
系统节拍定时器例程。
短接P0.26与BEEP,启动程序,蜂鸣器隔1秒交替鸣叫
intmain(void)
SystemInit();
/*系统初始化,切勿删除*/
GPIOInit();
SysTick_Config(100000000/100);
while
(1)
{
while(GucDelay1S==0);
GucDelay1S=0;
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的状态(亮、灭)。
volatileuint32_tmsTicks;
/*counts1mstimeTicks*/
voidSysTick_Handler(void){
msTicks++;
/*incrementcounternecessaryinDelay()*/
__INLINEstaticvoidDelay(uint32_tdlyTicks){
uint32_tcurTicks;
curTicks=msTicks;
while((msTicks-curTicks)<
dlyTicks);
__INLINEstaticvoidLED_Config(void){
LPC_GPIO2->
FIODIR=0x000000ff;
/*LEDsPORT2areOutput*/
//LPC_GPIO0->
FIODIR=0x00200000;
FIOPIN|=0x00200000;
/*------------------------------------------------------------------------------
SwitchonLEDs
*------------------------------------------------------------------------------*/
__INLINEstaticvoidLED_On(uint32_tled){
FIOPIN|=(led);
/*TurnOnLED*/
SwitchoffLEDs
__INLINEstaticvoidLED_Off(uint32_tled){
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<
location));
/*TurnontheLED.*/
Delay(100);
/*delay100Msec*/
LED_Off((1<
/*TurnofftheLED.*/
将这个程序下载到开发板上调试之后,可以看到led灯从第一个开始到第八个依次点亮,就像是流水一般。
通过此次试验,学习了LPC系列处理器GPIO口的使用方法,了解LPC系列处理器GPIO口的功能原理;
实验成功看到流水灯现象,对原理做出了验证;
通过实验理解了基于ARM内核的LPC1768实验开发平台的管脚链接及原理。
实验四外部中断实验
1、掌握NVIC的设置。
2、掌握外部中断引脚功能设置级外部中断工作模式设置。
3、了解中断服务函数的编写。
4、了解LPC系列处理器外部中断的功能原理;
5、在Keil中设计ARM程序,实现外部中断;
6、按压INT0键(SW2)每按一次LED灯将左移一位
【操作步骤】
lpc17xx.h"
volatileuint32_teint0_counter=0;
uint32_tcount=0;
uint32_ti=0;
/********************************************************************************
*函数名称:
voidEINT0_IRQHandler(void)
*函数功能:
外部中断0函数入口
*入口参数:
*出口参数:
*备注:
无
*******************************************************************************/
LPC_SC->
EXTINT=1;
/*清中断*/
count=eint0_counter%8;
i=1<
count;
FIOSET=i;
/*点亮灯第i个灯*/
FIOCLR=~i;
/*熄灭第i个灯之外的灯*/
eint0_counter++;
/*计数值加1*/
uint32_tEINTInit(void)
外部中断0初始化函数
返回TURE或FALSE
如果是返回false则说明中断入口函数没有在中断向量表中建立
LPC_PINCON->
PINSEL4=0x00100000;
/*将P2.10脚设置为EINT0即第二功能*/
LPC_GPIOINT->
IO2IntEnF=0x200;
/*设置为下降沿触发*/
EXTMODE=1;
/*外部中断模式选择为边沿触发*/
EXTPOLAR=0;
/*外部中断1极性设置,此处选默认的低电平或下降沿*/
NVIC_EnableIRQ(EINT0_IRQn);
/*使能外部中断0*/
return
(1);
voidPortInit(void)
端口初始化
voidPortInit(void)
PINSEL4&
=~0xCCCC;
/*将P2.0~P2.7初始化为GPIO功能*/
FIODIR|=0xFF;
/*将P2.0~P2.7方向设置为输出*/
FIOCLR|=0xFF;
/*关闭所有的灯*/
intmain(void)
主函数
/*系统初始化,函数在system_LPC17xx.c文件夹中定义*/
/*在core_cm3.h中定义*/
PortInit();
/*端口初始化*/
EINTInit();
while
(1);
将程序下载到开发板上之后,按压INT0按键,每按一次led灯就往左移动,即按第一下的时候第一个led灯亮,按第二个第二个的时候,第二个亮,当第八个灯亮的时候,再按一下第一灯就会点亮。
通过本次实验进行了NVIC的设置并理解掌握;
掌握了外部中断引脚功能设置及外部中断工作模式设置。
本次实验的核心是中断服务函数的编写,所以会得到实验操作现象
实验五串口通讯实验
1、学习LPC1768处理器UART的使用方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实验 报告