嵌入式系统原理与应用实验报告KL25部分.docx

上传人:b****8 文档编号:11258571 上传时间:2023-02-26 格式:DOCX 页数:10 大小:33.48KB
下载 相关 举报
嵌入式系统原理与应用实验报告KL25部分.docx_第1页
第1页 / 共10页
嵌入式系统原理与应用实验报告KL25部分.docx_第2页
第2页 / 共10页
嵌入式系统原理与应用实验报告KL25部分.docx_第3页
第3页 / 共10页
嵌入式系统原理与应用实验报告KL25部分.docx_第4页
第4页 / 共10页
嵌入式系统原理与应用实验报告KL25部分.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

嵌入式系统原理与应用实验报告KL25部分.docx

《嵌入式系统原理与应用实验报告KL25部分.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理与应用实验报告KL25部分.docx(10页珍藏版)》请在冰豆网上搜索。

嵌入式系统原理与应用实验报告KL25部分.docx

嵌入式系统原理与应用实验报告KL25部分

嵌入式系统原理与应用实验报告

专业班级:

物联1301姓名:

齐亨学号:

13516110

组员:

齐亨实验日期:

2016年4月19日

实验名称:

KL25入门实验

一、实验目的

1、熟悉FRDM-KL25开发板的硬件环境,掌握其使用方法及调试方式。

2、掌握KinetisDesignStudio(以下简称KDS)开发环境的使用。

3、以GPIO为例,理解底层驱动的含义与编程方法。

2、实验设备

微型计算机,FRDM-KL25开发板,MicroUSB线。

二、实验内容

1、按附录1的内容导入第一个样例工程,运行程序,掌握FRDM-KL25的硬件构成和使用方法,KDS的使用和调试方法。

2、观察小灯闪烁,调整延时的长短,观察小灯的变化。

3、根据电路图,修改程序,加入另外两个小灯的控制程序,使RGB小灯交替闪烁。

 

三、实验过程

1、如图所示,将MicroUSB线缆连接到FRDM-KL25实验板的SDA口,另一头接入PC

的任意USB口。

一般会自动安装驱动,如果没有,请运行C:

\Freescale\KDS_v3\pemicro目

录底下PEDrivers_install文件。

 

2、打开PC的设备管理器(计算机上右键—属性,弹出窗口左侧,设备管理器),连接正常的话能看到下图的两个红框里的信息。

1、导入工程

在ProjectExplorer上单击右键,选择Import...(或者在点击File菜单下拉选择)

 

弹出的对话框中展开General,选择ExistingProjectsintoWorkspace,点击Next

 

弹出的对话框中选择Browser,选择实验1的工程文件夹,如果保留原工程,可以勾上

下方的CopyProjectintoWorkspace,这样可以把整个工程拷贝到环境的工作文件夹底

下。

接着点击Finish,就完成了整个工程的导入。

 

2、调试工程

新建调试文件,把程序下载到板子上前,需要根据使用的调试硬件建立调试文件,才能下载程序。

下面介绍FRDM-KL25板子自带OpenSDA调试器的调试文件的建立方法。

点击KDS上方的虫子(Debug按钮)右侧的倒三角,下拉选择DebugConfigurations...

 

弹出的对话框中选择GDBPEmicroInterfaceDebugging,在上面点击右键,选择New,新建一个配置

 

可以看到右侧会出现该配置的相应选择,Name中的配置名称默认工程的名称,可以自己更换。

选择Debugger选项卡,在Interface框中下拉,选择最后一项OpenSDAEmbeddedDebug–USBPort,在连接到板子的情况下,Port后面的对话框里会自动检测到相应的端口和ID。

(没有连接的可连接后点击旁边的Refresh)

接着点击Port下方的SelectDevice,选择要调试的芯片型号。

这里选择Nxp—KL2x—KL25Z128M4

 

 

最后完成的配置如下图所示

 

点击右下侧的Apply按钮再点击Debug按钮,就可进入Debug界面。

下图是各主要窗口及功能按钮的介绍。

 

外设寄存器窗口设置,KDS的片内外设寄存器窗口是通过插件的形式实现的,3.0后版本默认集成该插件,但需要自己选择芯片型号才能生效。

点击选中EmbsysRegisters窗口,点击右侧的黑色扳手图标,弹出的窗口中选择ML25Z4,点OK返回,就可以看到各种片内外设的寄存器了。

 

3、工程中加入自定义文件夹

为全工程组织明晰,这里采用文件夹的方式组织。

为了使编译环境能够找到文件夹中的文件,需要将文件夹加入编译路径。

在工程上右键—Properties,在弹出的窗口中点击展开C/C++Build,选择Setting,右侧

窗口选择CrossARMGNUComplier—Includer,右边就是当前工程编译时会查找的文件路径。

为了工程文件能够在其它电脑还能使用,最好采用相对路径或工作空间(前提是工程要放在工作空间目录下)的路径。

下面是相对路径的写法。

${ProjDirPath}就是当前工程对应的文件夹。

 

四、编程

1、程序流程图

 

 

2、主要代码段及解释

//说明见工程文件夹下的Doc文件夹内Readme.txt文件

//============================================================================

#include"includes.h"//包含总头文件

intmain(void)

{

//1.声明主函数使用的变量

uint_32mRuncount;//主循环计数器

//2.关总中断

DISABLE_INTERRUPTS;

//3.初始化外设模块

//GPIO基本编程步骤:

//

(1)计算给出PORTB9的引脚控制寄存器地址

//PORTB端口的引脚控制寄存器基地址为0x4004A000u(后缀u表示无符号数)

volatileuint_32*portB_ptr=(uint_32*)0x4004A000u;

//PORTB9的引脚控制寄存器地址=基地址+偏移量

volatileuint_32*portB_PCR_9=portB_ptr+9;

//

(2)计算给出PORTB的数据方向寄存器、输出反转寄存器地址

//PORTB端口(作为GPIO功能)的基地址为0x400FF040u

volatileuint_32*gpioB_ptr=(uint_32*)0x400FF040u;

//PORTB的数据方向寄存器地址=基地址+偏移量

volatileuint_32*portB_PDDR=gpioB_ptr+5;

//PORTB的输出寄存器地址=基地址+偏移量

volatileuint_32*portB_PDO=gpioB_ptr+0;

//PORTB的输出反转寄存器地址=基地址+偏移量

volatileuint_32*portB_PTOR=gpioB_ptr+3;

//(3)设置PORTB9引脚为GPIO引脚,即令相应引脚控制寄存器的10-8位

//(MUX)字段为001

//*portB_PCR_9=0x00000100;

*portB_PCR_9=0b00000000000000000000000100000000;

//(4)通过PORTB的输出寄存器(给蓝色小灯的寄存器)赋初值1,保证定义为输出时为暗

*portB_PDO|=(1<<9);

//(5)通过PORTB的方向寄存器,定义PORTB9引脚输出

*portB_PDDR|=(1<<9);

//(6)通过PORTB的输出寄存器给蓝色小灯赋初值(0-亮)

//(以下供单步调试观察)

*portB_PDO&=~(1<<9);//亮

*portB_PDO|=(1<<9);//暗

*portB_PDO&=~(1<<9);//亮

*portB_PDO|=(1<<9);//暗

//4.给有关变量赋初值

mRuncount=0;//主循环计数器

//5.使能模块中断

//6.开总中断

ENABLE_INTERRUPTS;

for(;;)

{

//运行指示灯(红灯)闪烁----------------------------------------------

mRuncount++;

if(mRuncount>=5)//单步调试用,若直接运行,比较的数可以是一个大数,如556677

{

mRuncount=0;

*portB_PTOR|=(1<<9);//PTB9(蓝灯)取反

}

//以下加入用户程序-----------------------------------------------------

}//end_for

//主循环结束===================================================================

return0;

}

五、实验问答

1、FRDM-KL25开发板有哪些主要元器件?

答:

单片机插座晶振电容复位电路面包板插针以及下载线 。

 

2、FRDM-KL25是使用何种调试接口进行调试的?

答:

Debug调试。

六、实验小结

通过本次实验,我深刻了解了FRDM-KL25开发板的硬件环境,并且掌握了该开发板的使用方法和调试方式,熟悉了编写该程序所用的C语言代码。

 

实验二:

GPIO实验

1.实验目的

1..掌握KDS的工程文件组织框架

2.掌握GPIO基本编程步骤

3.掌握使用结构化开发底层驱动的方法

4.了解KDS链接文件

2.实验设备

微型计算机,FRDM-KL25开发板,MicroUSB线

3.实验步骤

硬件:

嵌入式实验平台一套、仿真器一个、PC机一台。

软件:

Windows98/2000/NT/XP操作系统、仿真器驱动程序、ADS开发软件一套控制嵌入式实验箱上的LED轮流点亮。

三、概要设计S3CRRB0X芯片上共有71个多功能I/O引脚,他们分别为7组I/O端口:

2个9位I/O端口(端口E和F)

2个8位I/O端口(端口D和G)

1个16位I/O端口(端口C)

1个10位I/O端口(端口A)

1个11位I/O端口(端口B)

每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。

在运行主程序之前,必须先对每一个用到的引脚的功能进行设置。

如果某些引脚的附庸功能没有使用,那么可以先将该引脚设置为I/O口。

S3C44B0X芯片与端口相关的寄存器:

(1)端口控制寄存器(PCONA~G):

在S3C44B0X芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。

PCONn(端口控制寄存器)能够定义引脚功能。

如果PG0~PG7作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。

(2)端口数据寄存器(PDATA~G):

如果端口定义为输出口,那么输出数据可以写入PDATn中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn相应的位中读入。

(3)端口上拉寄存器(PUPC~G):

通过配置端口上拉寄存器,可以使该组端口与上拉电阻连接或断开。

当寄存器中相应位配置为0时,该引脚接上拉寄存器;当寄存器中相应位配置为1时,该引脚不接上拉电阻。

(4)外部中断寄存器(EXTINT):

通过不同的信号方式可以使8个外部中断被请求。

EXTINT寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。

四、详细设计

1.启动ADS1.2,使用ARMExecuatableImage工程模板新建一个工程;

2.添加两个组INC和SRC;

3.将INC文件夹下所有文件添加到组INC中;

4.将SRC文件夹下所有文件添加到组SRC中;

5.建立源文件test5.C,编写实验程序,添加到工程中;

6.编译链接选项的设置同前面实验;

7.编译链接工程,点击Debug按钮,启动AXD进行调试;

8.连续点击stepin按钮,单步运行程序。

9.理解并掌握本实验原理及程序。

五、调试过程,设计技巧及体会8个LED灯依次实现:

全部熄灭后,再全部点亮,依次逐个点亮,依次逐个叠加,依次逐个递减,两个靠拢后分开从两边叠加后递减。

蜂鸣器定时器0.5s定时,实现蜂鸣器每隔1s,响一次0.5s。

通过这次试验,我学会了ADS硬件仿真的设置和调试,实验板的连接,建立C语言工程,掌握了I/O端口相关寄存器的使用。

实验过程中遇到一些问题如下载蜂鸣器定时控制后,蜂鸣器没有响,由于没有接P0.7的跳线造成的。

每次重新下载程序编译过程中,须要进行RemoveObjectcode,再重新make检测,以免产生错误。

六、附录:

1流水灯实验#include"config.h"/*LED8~LED18个LED分别由P1.25~P1.18控制*/constuint32LEDS8=(0xFF<<18);//P1[25:

18]控制LED8~LED1,低电平点亮voidDelayNS(uint32dly){uint32i;for(dly>0;dly--)for(i=0;i<50000;i++);}

**函数名称:

main()**函数功能:

流水灯显示实验。

**调试说明:

连接跳线JP12至LED8~LED1。

*******************************************************************************************//*流水灯花样,低电平点亮,注意调用时候用了取反操作*/constuint32LED_TBL[]={0x00,0xFF,//全部熄灭后,再全部点亮0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,//依次逐个点亮0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,//依次逐个叠加0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,//依次逐个递减0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81,//两个靠拢后分开0x81,0xC3,0xE7,0xFF,0xFF,0xE7,0xC3,0x81//从两边叠加后递减};intmain(void){uint8i;PINSEL1=0x00000000;//设置管脚连接GPIOIO1DIR=LEDS8;//设置LED控制口为输出while

(1){for(i=0;i<42;i++){/*流水灯花样显示*/IO1SET=~((LED_TBL[i])<<18);DelayNS(20);IO1CLR=((LED_TBL[i])<<18);DelayNS(20);}}return0}2蜂鸣器定时控制#include"config.h"#defineBEEP1<<7/*P0.7控制蜂鸣器,低电平蜂鸣*/intmain(void){PINSEL1=0x00000000;/*设置管脚连接GPIO*/IO0DIR=BEEP;/*设置BEEP控制口输出*//*定时器0初始化*/T0TC=0;/*定时器设置为0*/T0PR=0;/*时钟不分频*/T0MCR=0x03;/*设置T0MR0匹配后复位T0TC,并产生中断标志*/T0MR0=Fpclk/2;/*0.5秒钟定时*/T0TCR=0x01;/*启动定时器*/while

(1)

{while((T0IR&0x01)==0);/*等待定时时间到*/T0IR=0x01;/*清除中断标志*/if((IO0SET&BEEP)==0)IO0SET=BEEP;/*BEEP停止蜂鸣*/elseIO0CLR=BEEP;/*BEEP蜂鸣*/}return0;}

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

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1