嵌入式系统概论实验指导书冯德旺.docx
- 文档编号:23142986
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:17
- 大小:27.50KB
嵌入式系统概论实验指导书冯德旺.docx
《嵌入式系统概论实验指导书冯德旺.docx》由会员分享,可在线阅读,更多相关《嵌入式系统概论实验指导书冯德旺.docx(17页珍藏版)》请在冰豆网上搜索。
嵌入式系统概论实验指导书冯德旺
嵌入式系统概论
实
验
指
导
书
计算机与信息学院《嵌入式系统概论》课程组编印
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;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 概论 实验 指导书 冯德旺