嵌入式系统原理与应用实验报告KL25部分.docx
- 文档编号:11258571
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:10
- 大小:33.48KB
嵌入式系统原理与应用实验报告KL25部分.docx
《嵌入式系统原理与应用实验报告KL25部分.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理与应用实验报告KL25部分.docx(10页珍藏版)》请在冰豆网上搜索。
嵌入式系统原理与应用实验报告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;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 原理 应用 实验 报告 KL25 部分