嵌入式系统概论实验指导书冯德旺.docx

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

嵌入式系统概论实验指导书冯德旺.docx

《嵌入式系统概论实验指导书冯德旺.docx》由会员分享,可在线阅读,更多相关《嵌入式系统概论实验指导书冯德旺.docx(17页珍藏版)》请在冰点文库上搜索。

嵌入式系统概论实验指导书冯德旺.docx

嵌入式系统概论实验指导书冯德旺

嵌入式系统概论

 

计算机与信息学院《嵌入式系统概论》课程组编印

2013年11月

 

实验一搭建CodeWarrior开发环境

实验二控制小灯闪烁实验

实验三串行通信实验

实验四RTC实验

实验五Flash实验

 

实验一搭建CodeWarrior开发环境

1、实验目的和要求

实验目的:

熟悉CodeWarrior开发环境,掌握KL25工程结构,通过一个样例工程了解开发环境配置方法,并完成编译、下载到开发板的过程。

实验要求:

1)安装CodeWarrior10.3软件,完成相关参数设置;

2)安装USBDM4.10.4写入器驱动程序,打好补丁;

3)导入样例工程,完成编译、下载、运行全过程。

2、实验原理

参照KL25技术手册和CodeWarrior10.3软件使用手册,熟悉芯片性能和开发环境,验证开发板和开发环境的可靠性。

3、主要仪器设备(实验用的软硬件环境)

PC机一台,SD-FSL-KL25-EVB开发板一套

4、操作方法与实验步骤

1)按照CodeWarrior10.3使用手册安装软件;

2)通过写入器的Mini_USB口将SD-FSL-KL25-EVB开发板连接到PC机;

3)导入样例工程,完成编译;

4)将可执行的ELF烧入Flash,给开发板重新上电,观察实验现象。

5、实验内容及实验数据记录

实验电路连线:

用USB连接线将SD-FSL-KL25-EVB开发板接入PC机。

实验参考程序:

.include"include.s"

declaration:

#start参数定义区域

.section.data@读写,即定义变量

runpin:

.word100

.section.rodata@只读,即定义常数

RUN_COUNTER_MAX:

.word0x0016e360

.section.data@定义可读写的字符串

string:

.asciz"123456789"

#end参数定义区域

#start主函数定义开始

.section.text.main

.globalmain@定义全局变量,使其在芯片初始化之后可以调用

.align2

.typemainfunction@定义主函数类

.align2

#end主函数定义结束

main:

cpsidi@关闭总中断

#小灯相应引脚的gpio初始化(设置引脚的各参数)r0-r3保存需要传递的参数

movr0,#light_port@r0存储PORT端口号

#ldrr5,=runpin

#movr6,#18

#strr6,[r5]

#ldrr1,[r5]@将引脚号18存入r1

movr1,#light_G_pin@r1存储引脚号

movr2,#light_dirout@r2指明引脚的输出方向

movr3,#light_L@r3指明引脚的初始状态

bllight_init@调用小灯初始化函数

cpsiei@开总中断

#主循环,通过RUN_COUNTER_MAX递减来延迟,设定小灯的闪烁间隔

repeat:

ldrr4,=RUN_COUNTER_MAX@取延时计数值到r4

ldrr4,[r4]

loop:

subr4,#1

cmpr4,#1

bneloop

bllight_change@调用小灯亮暗转变函数

blrepeat

.align4

.end

 

实验二控制小灯闪烁实验

1、实验目的和要求

实验目的:

1)熟悉ARMCortex-M0+寄存器配置方法;

2)学习KL25的GPIO编程方法;

3)通过三色灯观察程序运行情况;

实验要求:

编写程序,以KL25B口的9、18和19引脚作为输出口,控制三色灯灯(可发红,绿,蓝光)交替闪亮。

2、实验原理

1)根据开发板原理图,确认三色灯为共阳接法,因此B口相关引脚输出低电平时点亮、高电平熄灭;

2)通过延时实现三色灯交替闪亮,观察延时常数的影响,理解控制颜色方法。

3、主要仪器设备(实验用的软硬件环境)

PC机一台,SD-FSL-KL25-EVB开发板一套

4、操作方法与实验步骤

1)通过USB线连接PC机和SD-FSL-KL25-EVB开发板;

2)在PC机上编程,并编译形成可在开发板上执行的ELF程序;

3)将ELF程序烧入开发板的Flash中,并重新上电观察程序运行现象。

5、实验内容及实验数据记录

实验电路连线:

用USB连接线将SD-FSL-KL25-EVB开发板接入PC机。

实验参考程序:

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

intmain(void)

{

uint_32run_counter;//主循环计数变量

uint_8flag;//三色灯变换标志

//三色灯初始化

light_init(LIGHT_PORT,LIGHT_PIN_RED,LIGHT_OFF);

light_init(LIGHT_PORT,LIGHT_PIN_GREEN,LIGHT_OFF);

light_init(LIGHT_PORT,LIGHT_PIN_BLUE,LIGHT_OFF);

//给全局变量赋初值

g_n1=0;

//给主函数相关变量赋初值

flag=1;//主循环计数变量

run_counter=0;//三色灯变换标志

//进入主循环,使红、绿、兰三灯闪烁

//主循环开始==========================================================

for(;;)

{

run_counter++;//主循环计数+1

if(run_counter>RUN_COUNTER_MAX)

{

run_counter=0;

switch(flag)

{

case1:

//红灯取反、绿灯暗、兰灯暗

light_change(LIGHT_PORT,LIGHT_PIN_RED);

light_control(LIGHT_PORT,LIGHT_PIN_GREEN,LIGHT_OFF);

light_control(LIGHT_PORT,LIGHT_PIN_BLUE,LIGHT_OFF);

flag=2;

break;

case2:

//绿灯取反、红灯暗、兰灯暗

light_change(LIGHT_PORT,LIGHT_PIN_GREEN);

light_control(LIGHT_PORT,LIGHT_PIN_RED,LIGHT_OFF);

light_control(LIGHT_PORT,LIGHT_PIN_BLUE,LIGHT_OFF);

flag=3;

break;

case3:

//兰灯取反、红灯暗、绿灯暗

light_change(LIGHT_PORT,LIGHT_PIN_BLUE);

light_control(LIGHT_PORT,LIGHT_PIN_RED,LIGHT_OFF);

light_control(LIGHT_PORT,LIGHT_PIN_GREEN,LIGHT_OFF);

flag=1;

default:

flag=1;

break;

}//end_switch

}//end_if

}//end_for

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

return0;

}

实验三串行通信实验

1、实验目的和要求

实验目的:

1)了解UART模块相关寄存器及配置方法;

2)理解串行通信的工作原理;

3)掌握UART的各种模式的编程方法;

4)理解用UART调试KL25程序的方法。

实验要求:

采用中断方式编写UART接收和发送程序,上电和复位时给PC机发送串口连接信息,并用串口调试工具观察PC机和开发板间的通信情况。

2、实验原理

按照KL25技术手册配置UART相关寄存器,完成UART初始化,然后通过串口调试工具观察通信情况。

3、主要仪器设备(实验用的软硬件环境)

PC机一台,SD-FSL-KL25-EVB开发板一套

4、操作方法与实验步骤

1)安装TTL转USB驱动程序;

2)用USB线将SD-FSL-KL25-EVB开发板连接到PC机;

3)编写UART通信程序,完成编译形成ELF程序;

4)将ELF程序由PC机烧入开发板的Flash中,并进行调试。

5、实验内容及实验数据记录

实验电路连线:

用USB线将开发板连接到PC机,并用USB转串线将UART0或UART1口连接到PC机以实现串行通信。

实验参考程序:

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

intmain(void)

{

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

uint_32run_counter;//主循环次数计数器

//2.关总中断

enter_critical();//进入临界区

//3.初始化模块

light_init(LIGHT_PORT,LIGHT_PIN_BLUE,LIGHT_ON);//蓝灯初始化

uart_init(UART_0,MCGIRCLK,9600);//串口0时钟MCGIRCLK(4000Khz)

uart_init(UART_1,BUSCLK,9600);//串口1、2使用总线时钟24000Khz

uart_init(UART_2,BUSCLK,9600);

uart_send_string(UART_0,"HelloUart_0!

\r\n");//串口发送初始化提示

uart_send_string(UART_1,"HelloUart_1!

\r\n");

uart_send_string(UART_2,"HelloUart_2!

\r\n");

//4.全局变量及主函数局部变量赋初值

run_counter=0;//运行计数器

//5.使能模块中断及总中断

uart_enable_re_int(UART_0);//使能串口0接收中断

uart_enable_re_int(UART_1);//使能串口1接收中断

uart_enable_re_int(UART_2);//使能串口2接收中断

init_critical();//开总中断

//进入主循环

//主循环开始==========================================================

for(;;)

{

run_counter++;//主循环次数计数器+1

if(run_counter>RUN_COUNTER_MAX)

{

run_counter=0;//主循环次数计数器清0

light_change(LIGHT_PORT,LIGHT_PIN_BLUE);//蓝灯变化

}//end_if

}//end_while

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

return0;

}

 

实验四RTC实验

1、实验目的和要求

实验目的:

1)了解定时器/计数器工作原理;

2)熟悉KL25定时器模块相关寄存器及配置方法;

3)掌握KL25定时器编程方法;

4)通过串口调试工具观察时、分、秒变化情况。

实验要求:

编写程序,将RTC时钟信息通过串口发送到PC端,用串口调试工具观察时钟变化情况,同时观察小灯闪烁情况。

2、实验原理

按照KL25技术手册配置RTC模块相关寄存器,完成RTC初始化,然后通过串口调试工具和小灯观察时钟变化的影响。

3、主要仪器设备(实验用的软硬件环境)

PC机一台,SD-FSL-KL25-EVB开发板一套

4、操作方法与实验步骤

1)安装TTL转USB驱动程序;

2)用USB线将SD-FSL-KL25-EVB开发板连接到PC机;

3)编写RTC时钟程序,完成编译形成ELF程序;

4)将ELF程序由PC机烧入开发板的Flash中,并进行调试。

5、实验内容及实验数据记录

实验电路连线:

用USB线将开发板连接到PC机,并用USB转串线将UART1口连接到PC机以观察时钟信息。

实验参考程序:

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

voidMCGIRCLK_OutEnable(uint_8clock);//启用内部快速时钟

intmain(void)

{

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

uint_32AlarmTimes;//报警计时器定时间隔

uint_32SecendTimes;//定时器秒计数器的起始值

uint_32remember;

//2.关总中断

enter_critical();//进入临界区,关中断

//3.初始化底层模块

light_init(LIGHT_PORT,LIGHT_PIN_BLUE,LIGHT_ON);//蓝灯初始化

uart_init(UART_1,MCGIRCLK,9600);//串口0初始化,总线时钟24000Khz,波特率9600

SecendTimes=0x01;

AlarmTimes=0x02;

MCGIRCLK_OutEnable(CLKOUT_MCGIRCLK);//开启内部慢速时钟

rtc_init(SecendTimes,AlarmTimes);//RTC初始化

//4.变量赋初值

g_time[0]=0;//

(1)"时分秒"缓存初始化(00:

00:

00)

g_time[1]=0;

g_time[2]=0;

remember=g_time[2];//

(2)临时变量remember初始化

//5.开中断

uart_enable_re_int(UART_1);//启动串口1接收中断

init_critical();//开总中断

uart_send_string(UART_1,"HelloRTC!

\r\n");

//进入主循环

//主循环开始==========================================================

for(;;)

{

if(g_time[2]!

=remember)//判断秒钟是否发生变化

{

light_change(LIGHT_PORT,LIGHT_PIN_BLUE);

uart_sendN(UART_1,3,g_time);

remember=g_time[2];

}

}//end_while

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

return0;

}

//启用MCGIRCLK时钟,输出时钟频率在31.25Khz-4Mhz

voidMCGIRCLK_OutEnable(uint_8clock)

{

PORTC_PCR3=PORT_PCR_MUX(0x5);

SIM_SOPT2=SIM_SOPT2_CLKOUTSEL(clock);//复用PTC3为CLKOUT,输出时钟波形

MCG_C1|=MCG_C1_IRCLKEN_MASK|MCG_C1_IREFSTEN_MASK;

MCG_C2&=~MCG_C2_IRCS_MASK;

}

 

实验五Flash实验

1、实验目的和要求

实验目的:

1)了解Flash工作原理;

2)熟悉KL25Flash模块相关寄存器及配置方法;

3)掌握KL25Flash编程方法;

4)通过串口调试工具观察Flash擦写情况。

实验要求:

编写程序,将Flash信息通过串口发送到PC端,用串口调试工具观察Flash中的内容。

2、实验原理

按照KL25技术手册配置Flash模块相关寄存器,完成Flash初始化,然后通过串口调试工具观察Flash的擦写情况。

3、主要仪器设备(实验用的软硬件环境)

PC机一台,SD-FSL-KL25-EVB开发板一套

4、操作方法与实验步骤

1)安装TTL转USB驱动程序;

2)用USB线将SD-FSL-KL25-EVB开发板连接到PC机;

3)编写Flash程序,完成编译形成ELF程序;

4)将ELF程序由PC机烧入开发板的Flash中,并进行调试。

5、实验内容及实验数据记录

实验电路连线:

用USB线将开发板连接到PC机,并用USB转串线将UART1口连接到PC机以观察Flash擦写情况。

实验参考程序:

#include"includes.h"

 

intmain(void)

{

//1.申明主函数使用的局部变量

uint_32run_counter;//运行计数器

uint_8h=1;

//2.关总中断

enter_critical();

//3.初始化底层模块

uart_init(UART_TEST,bus_clk_khz,9600);//串口1初始化,总线时钟24000Khz,波特率9600

flash_init();//Flash初始化

//4.变量赋初值

//5.开中断

init_critical();

uart_enable_re_int(UART_TEST);

uart_send_string(UART_TEST,"UartInitial\r\n");

uart_send_string(UART_TEST,"SD-FSLLibraryFlashTest!

\r\n\r\n");

uart_send_string(UART_TEST,"Press?

togethelp\r\n");

//主循环

for(;;)

{

run_counter++;

if(run_counter>RUN_COUNTER_MAX)

{

run_counter=0;

}//end_if

switch(ch)

{

case'?

':

//命令帮助

uart_send_string(UART_TEST,"擦除,读取,写入格式如下:

\r\n");

uart_send_string(UART_TEST,"擦除E\r\n");

uart_send_string(UART_TEST,"读取R\r\n");

uart_send_string(UART_TEST,"写入W\r\n");

ch=1;

break;

case'e':

//擦除操作

case'E':

h=1;

h=flash_erase_sector(10);

if(h==0)uart_send_string(UART_TEST,"EraseSuccess!

\r\n");

ch='1';

break;

case'w':

//写入操作

case'W':

h=1;

h=flash_write(10,0,4,"1234");

if(h==0)uart_send_string(UART_TEST,"WriteSuccess!

\r\n");

ch='1';

break;

case'r':

//读取操作

case'R':

uart_sendN(UART_TEST,4,(uint_8*)(10*1024));

uart_send_string(UART_TEST,"\r\n");

ch='1';

break;

default:

break;

}

}//end_for

//==============主循环(结束)

return0;

}

 

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

当前位置:首页 > 解决方案 > 学习计划

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

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