嵌入式测试实验报告

2024-06-30

嵌入式测试实验报告(精选6篇)

篇1:嵌入式测试实验报告

嵌入式应用系统设计实验报告

2013-12-17 计算机学院软件工程系嵌入式应用系统设计

实验一ARM 汇编指令

一、实验目的

初步学会使用Embest IDE for ARM 开发环境及 ARM 软件模拟器。通过实验掌握简单 ARM 汇编指令的使用方法。

二、实验设备

硬件:PC 机。软件:Embest IDE Pro 集成开发环境,Windows 98/2000/NT/XP。

三、实验内容

熟悉开发环境的使用并使用ldr/str,mov等指令访问寄存器或存单元。使用 add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。

四、实验步骤

1)新建工程:

运行Embest IDE Pro 2005 集成开发环境,选择菜单项 File → New Workspace,系统弹出一个对话框,按照图 1-1 所示输入相关内容。

点击 OK 按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程。2)建立源文件:

点击菜单项 File → New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件 asm1_a.s。3)添加源文件:

选择 Project → Add To Project → Files 命令,或单击工程管理窗口中的相应右键菜单命令,弹出文件选择对话框,在工程目录下选择刚才建立的源文件 asm1_a.s。4)基本配置:

选择菜单项 Project → Settings„或快捷键 Alt+F7,弹出工程设置对话框。在工程设置对话框中,选择 Processor 设置对话框,按照图 1-2 所示,进行目标板所用处理器的配置。

计算机学院软件工程系嵌入式应用系统设计

图 1-2 新的工作区处理器配置

5)编译并生成目标代码: 选择菜单项 Build → Build asm_a或快捷键 F7,生成目标代码。6)调试设置:

选择菜单项 Project → Settings„或快捷键 Alt+F7,弹出工程设置对话框。在工程设置对话框中,选择 Remote 设置对话框,按照图 1-4 所示对调试设备模块进行设置我们这里只能实现软件仿真,故选 SimArm7。

图 1-4 新工作区仿真器配置

按照图 1-4 所示对调试设备模块进行设置我们这里只能实现软件仿真,注意: Symbol file 与 Download file 设置应该相同,用户可以从 Linker 页面拷贝系统默认的输出文件配置;且该实验输入下载地址为 0x8000,即为AS 默认的代码段起始地址。由于汇编和链接选项在本实验中没有进行配置,完全使用其默认选项,所以,代码段是从 0x8000 开始的,下载地址应该与它保持一致。

计算机学院软件工程系嵌入式应用系统设计

7)选择 Debug 菜单 Remote Connect 进行连接软件仿真器,执行 Download 命令下载程序,并打开寄存器窗口。打开 memory 窗口,观察地址 0x8000~0x801f 的内容,与地址 0xff0~0xfff 的内容。8)单步执行程序并观察和记录寄存器与 memory 的值变化。9)结合实验内容和相关资料,观察程序运行,通过实验加深理解 ARM 指令的使用。

10)程序运行以及观察结果如下图所示:

上图为单步调试开始时执行结果,内容的地址为: 0x8000

上图是执行到stop之前的调试结果。五.实验总结

初次接触到嵌入式,通过此次实验对嵌入式的内容以及研究的对象有了初始化的理解,这有助于以后对嵌入式的学习。

计算机学院软件工程系嵌入式应用系统设计

实验二 ARM 汇编指令 一实验目的

初步学会使用Embest IDE for ARM 开发环境及 ARM 软件模拟器。通过实验掌握简单 ARM 汇编指令的使用方法。二实验设备 硬件:PC 机。

软件:Embest IDE Pro 集成开发环境,Windows 98/2000/NT/XP。三实验内容

熟悉开发环境的使用并使用ldr/str,mov等指令访问寄存器或存储单元。使用 add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。

四实验操作步骤

1)在工作区窗口工作区名称上击右键鼠标,在弹出的快捷菜单中选择“Add New Project to Workspace„”。

2)参照实验 A 及相应的实验参考程序,建立工程 asm1_b。3)添加源文件:

选择 Project → Add To Project → Files 命令,或单击工程管理窗口中的相应右键菜单命令,弹出文件选择对话框,在工程目录下选择刚才建立的源文件 asm1_b.s。4)基本配置:

选择菜单项 Project → Settings„或快捷键 Alt+F7,弹出工程设置对话框。在工程设置对话框中,选择 Processor 设置对话框,按照图 1-7 所示,进行目标板所用处理器的配置。

计算机学院软件工程系嵌入式应用系统设计

5)编译并生成目标代码:

选择菜单项 Build → Build asm_a或快捷键 F7,生成目标代码。6)参照实验A 的步骤完成调试设置。

7)选择 Debug 菜单 Remote Connect 进行连接软件仿真器,执行 Download 命令下载程序,并打开寄存器窗口。打开 memory 窗口.8)程序执行结果及总结:

计算机学院软件工程系嵌入式应用系统设计

初次接触到嵌入式,通过此次实验对嵌入式的内容以及研究的对象有了初始化的理解,这有助于以后对嵌入式的学习。并且本次实验后,明白了嵌入式的开发环境及所用到的开发软件,其次就是对程序的调试与运行,通过实验认真思考其原理知识。本次实验收益匪浅。五实验参考程序

#NAME asm1_b.s # Author: Embest #DesARMinstructionexamples.equ x, 45 /* x=45 */.equ y, 64 /* y=64 */.equ z, 87 /* z=87 */.equstack_top, 0x1000 /* define the top address for stacks */.global _start.text _start: /* code start */ mov r0, #x /* put x value into R0 */ mov r0, r0, lsl #8 /* R0 = R0 << 8 */ mov r1, #y /* put y value into R1 */ 计算机学院软件工程系嵌入式应用系统设计

add r2, r0, r1, lsr #1 /* R2 =(R1>>1)+ R0 */ movsp, #0x1000 str r2, [sp] mov r0, #z /* put z value into R0 */ and r0, r0, #0xFF /* get low 8 bit from R0 */ mov r1, #y /* put y value into R1 */ add r2, r0, r1, lsr #1 /* R2 =(R1>>1)+ R0 */ ldr r0, [sp] /* put y value into R1 */ mov r1, #0x01 orr r0, r0, r1 mov r1, R2 /* put y value into R1 */ add r2, r0, r1, lsr #1 /* R2 =(R1>>1)+ R0 */ }}

实验三 C 语言程序实验一

一.实验目的

学会使用Embest IDE 编写简单的 C 语言程序并进行调试。学会编写和使用命令脚本文件。

掌握过memory/register/watch/variable 窗口分析判断运行结果。二.实验设备

硬件:PC 机。

软件:Embest IDE Pro 2005 集成开发环境,Windows 98/2000/NT/XP。三.实验内容

利用命令脚本初始化栈指针,并使用 c 语言完成延时函数。四.实验操作步骤

1)参考前面实验创建新的工程(工程名为 C1);

2)按照参考程序,编写源文件 C1.c 和 C1.cs,并把它们加入工程里面。C1.cs 加在工程根目录即可。

计算机学院软件工程系嵌入式应用系统设计

3)参考前面例子进行标准的设置,其中需要注意的是,在调试 Debug 对话框设置的时候,增加连接后自动执行脚本文件:

4)参考前面实验步骤进行编译和连接;

5)下载,打开 Memory/Register/Watch/Variable 窗口,单步执行,通过 memory/register /watch/variable 窗口分析判断结果,在 watch 框中输入要观察变量 I 和变量 J 的值,并记录下来。特别注意在 variable 窗口观察变量 I 的变化并记录下来;

6)结合实验内容和相关资料,观察程序运行,通过实验; 7)理解和掌握实验后,完成实验练习题。五.实验参考程序 1.C1.c 参考源代码:/********************************************************** * File: c1.c * Author: embest * Desc: c language example 1 /*********************************************************/ /* function declare */ void delay(int nTime);/********************************************************** * name: _start * func: entry point **********************************************************/ _start(){ int i = 5;for(;;){ delay(i);} } /********************************************************** * name: delay * func: delay some time * para: nTime--input * ret: none *******************************************************/ void delay(nTime){

int i, j = 0;for(i = 0;i < nTime;i++){ for(j = 0;j < 10;j++)} 计算机学院软件工程系嵌入式应用系统设计

} 2.C1.cs 参考源代码 stop regwrite sp 0x1000;initialize the sp , sp = 0x1000 实验截图如下:

六、实验总结

在实验中我慢慢地熟悉了EmbestIDE的使用,在老师的教导和指导下,学会了编写和使用简单的命令脚本文件,学会了在memory/register/watch/variable等等中查看变量,分析判断运行结果。

计算机学院软件工程系嵌入式应用系统设计

实验四 C 语言程序实验二

一.实验目的

掌握建立基本完整的 ARM 工程,包含启动代码,连接脚本等。了解 ARM9 启动过程,学会使用Embest IDE 编写简单的 C 语言程序和汇编启动代码并进行调试。掌握链接脚本的作用。掌握如何指定代码入口地址与入口点。掌握通过 memory/register/watch/variable 窗口分析判断结果。二.实验设备

硬件:PC 机。

软件:Embest IDE Pro 2005 集成开发环境,Windows 98/2000/NT/XP。三.实验内容

用 c 语言编写延时函数,使用嵌入汇编实验原理 1.ARM 异常向量表

当正常的程序执行流程暂时挂起时,称之为异常,例如:处理一个外部的中断请求。在处理异常之前,必须保存当前的处理器状态,以便从异常程序返回时可以继续执行当前的程序。ARM 异常向量表如下:

表 1-4 ARM 异常向量表

地址异常入口模式 0x00000000 Reset 管理 0x00000004 Undefined Instruction 未定义 0x00000008 Software interrupt 管理0x0000000C Prefetch abort 中止 0x00000010 Data abort 中止 0x00000014 Reserved 保留 0x00000018 IRQ IRQ 0x0000001C FIQ FIQ处理器允许多个异常同时发生,这时,处理器会按照固定的顺序进行处理,参照下面的异常优先级。

高优先级: 1----Reset 2----Data abort 3----FIQ 4----IRQ 5----Prefetch abort 低优先级: 6----Undefined Instruction,Software interrupt 由上可见,Reset 入口,即为整个程序的实际入口点。因此,我们在编写代码的时候,第一条语句是在 0x00000000 处开始执行的。一般地,我们使用下面的代码: #---Setup interrupt / exception vectors B Reset_HandlerUndefined_Handler: B Undefined_HandlerSWI_Handler: B SWI_HandlerPrefetch_Handler: B Prefetch_HandlerAbort_Handler: B Abort_Handler NOP /* Reserved vector */ IRQ_Handler: B IRQ_HandlerFIQ_Handler: B FIQ_HandlerReset_Handler: LDR sp, =0x00002000 2.链接脚本文件

所有的链接都是通过链接脚本来控制实现的。这些链接脚本文件使用链接命令语言编写。链接脚本的主要作用是描述我们编写的文件中这么多个部分应该如何的 计算机学院软件工程系嵌入式应用系统设计

相应摆放在输出文件中,并控制存储区如何定位这些输出文件。同时,如果需要,我们还可以使用链接脚本文件实现其它功能。大部分链接脚本文件都是很简单的。简单的链接脚本只有一行命令:SECTIONS。我们使用 SECTIONS 命令来告诉存储区应该如何摆放我们的输出文件。SECTIONS 命令是一个强大的命令,这里通过一个简单的例子来说明一下。假设程序中包括代码、已经初始化的数据和还没有初始化的数据。这些需要相应的分别摆放在.text.data 和.bss部分。针对这个例子,我们可以假设代码必须放在 0x10000,数据必须放在地址 0x8000000 开始的地方。下面是一个描述上面内容的一个简单的链接脚本:

SECTIONS {.= 0x10000;.text : { *(.text)}.= 0x8000000;.data : { *(.data)}.bss : { *(.bss)}.} 链接脚本文件中全部使用半角符号,文件编写格式必须从 SECTIONS 关键字开始,紧接着是开大括号,接着是所有需要输出的描述部分,后用闭大括号收尾。上面的例子的链接脚本命令第一行使用专门的符号“.”,它指向当前的地址计数器。如果没有在其它地方专门的说明输出部分的地址(有关“其它地方”后面有说明),一般程序都会默认当前的地址计数器。地址计数器会根据输出部分的大小而增加。在 SECTIONS 命令开始,地址计数器一般为 0。第二行定义了一个输出区,.text。其中的“:”号是必须的,但是它经常被忽略。在大括号里面,每个输出部分的名称后面必须把所有需要输入的部分的名字都列出来。“*”号是一个通配符,可以搭配成任何文件名字。*(text)表示在输入文件中所有的.text 输入部分。开始时定义了输出部分.text 的起始地址为 0x10000,链接器会把输出文件中的.text 部分的地址设置为 0x10000。在后面的几行里面,定义了.data 和.bss部分。连接器会把.data 输出部分的起始地址设置为 0x8000000。当连接器设置.data 部分后,当前地址计数器会自动指向 0x800000。这样,连接器会紧跟着把.bss部分放在.data 部分后面。连接器会增加本地计数器,以确保需要时每个输出部分都有必需的队列。在这个例子里面,为.text和.data 部分指定了特定的地址,这两个部分会确保可以得到队列保证,但是连接器可能会在.dat a 和.bss之间创建一个小小的空隙。

3.内嵌汇编语言从下面的示例看得出来,GCC 支持大部分基本的内嵌汇编语言。编译器遇到这个声明的时会在输出流中插入一个汇编语言标记。示例:一个基本的内嵌汇编语言例子 __asm__(“mov r1, r2”);四.实验操作步骤

1.参考前面实验创建新的工程(工程名为:C2)。

2.编写新的源代码文件 c2.c,init.s和脚本文件ldscript,并把它们加入工程中。

3.参考前面例子进行标准的设置。4.参考前面实验步骤进行编译&连接。

计算机学院软件工程系嵌入式应用系统设计

5.下载调试,打开 memory/register/watch/variable 窗口,单步执行,并通过 memory/re gister/watch/variable 窗口分析判断结果。

6.结合实验内容和相关资料,观察程序运行。7.理解和掌握实验后,完成实验练习题。五.实验参考程序 1.c2.c 参考源代码

/******************************************************************* *File: c2.c * Author: embest * Desc: c language example 2 ********************************************************************/ /******************************************************************** * name: _nop_ * func: The following shows c language embededassembel language * para: none * ret: none ********************************************************************/ void _nop_(){ __asm(“ mov r0,r0 ”);} /******************************************************************** * name: delay * func: delay time * para: none * ret: none ********************************************************************/ void delay(void){ inti;for(i = 0;i<= 10;i++){ _nop_();} } /******************************************************************** * name: delay10 * func: delay time * para: none * ret: none ********************************************************************/ void delay10(void){ inti;for(i = 0;i<= 10;i++){ delay();} } /******************************************************************** * name: _main 计算机学院软件工程系嵌入式应用系统设计

* func: c code entry * para: none * ret: none ********************************************************************/ __main(){ inti = 5;for(;;){ delay10();} } 2.init.s 参考源代码:

#******************************************************************** # File:init.s # Author: embest # Desc:C start up codes.Configure memory, #InitializeISR ,stacks,initialize C-variables # Fill zeros into zero-initialized C-variables #******************************************************************** /* global symbol define */.global _start /* code */.text _start: # Set interrupt / exception vectors b Reset_HandlerUndefined_Handler: b Undefined_HandlerSWI_Handler: b SWI_HandlerPrefetch_Handler: b Prefetch_HandlerAbort_Handler: b Abort_Handlernop /* Reserved vector */ IRQ_Handler: b IRQ_Handler FIQ_Handler: b FIQ_HandlerReset_Handler: ldrsp, =0x00002000 # ******************************************************************** # Branch on C code Main function(with interworking).* # Branch must be performed by an interworking call as.* # either an ARM or Thumb.main C function must be.* # supported.This makes the code not position-independent.* # A Branch with link would generate errors * # ***********************************************************************.extern __main ldr r0, = __main movlr, pc # jump to __main()bx r0 # ************************************************************************ # * Loop for ever * 计算机学院软件工程系嵌入式应用系统设计

# * End of application.Normally, never occur.* # * Could jump on Software Reset(B 0x0).* # ************************************************************************End: b End.end 3.ldscript参考源代码:

SECTIONS {.= 0x0;.text : { *(.text)}.data : { *(.data)}.rodata : { *(.rodata)}.bss : { *(.bss)} } 五.实验截图如下:

六、实验总结:

在实验中我学会了建立基本完整的 ARM 工程,包含启动代码,连接脚本等。了解 ARM9 启动过程,学会简单使用 Embest IDE 编写简单的 C 语言程序和汇编启动代码并进行调 试。明白了一些链接脚本的作用。子解了如何指定代码入口地址与入口点。通过 memory/register/watch/variable 窗口分析判断结果。

计算机学院软件工程系嵌入式应用系统设计

实验五 LED 控制实验

一.实验目的

 在 EBDCC2530 节点板上运行自己的程序。 通过 I/O 控制小灯闪烁和蜂鸣器鸣叫。二.实验环境

 硬件:PC 机,EBDCC2530 节点板,USB 接口仿真器。 软件:Windows 98/2000/NT/XP,IAR 集成开发环境。三.实验原理

低电平来控制灯的亮与灭和蜂鸣器的鸣叫。

本实验设置 P1.0、P1.1、P1.4 I/O 引脚来选通 LED1、LED2、LED3,引脚置为低电平点亮 LED,反之熄灭 LED。设置 P0.1 引脚来选通 BEEP,引脚置为低电平蜂鸣器鸣叫,反之蜂鸣器不鸣叫。

P1DIR(P1 方向寄存器):D7 D6 D5 D4 D3 D2 D1 D0 P1.7方向 0:输入 1:输出P1.6方向 0:输入 1:输出 P1.5方向 0:输入 1:输出P1.4方向 0:输入 1:输出 P1.3方向 0:输入 1:输出P1.2方向 0:输入 1:输出 P1.1方向 0:输入 1:输出P1.0方向 0:输入 1:输出

P1.7 功能 0:普通 I/O 1:外设P1.6 功能 0:普通 I/O 1:外设 P1.5 功能 0:普通 I/O 1:外设P1.4 功能 0:普通 I/O 1:外设 P1.3 功能 0:普通 I/O 1:外设P1.2 功能 0:普通 I/O 1:外设 P1.1 功能 0:普通 I/O 1:外设P1.0 功能 0:普通 I/O 1:外设 LDE 灯实现的主要代码为: void main(void){ led_beep_init();halWait(250);while(1){ //开始循环 LED1 = 0;LED1 = 1;//LED1 闪烁halWait(250);halWait(250);LED2 = 0;//LED2 闪烁 halWait(250);LED2 = 1;halWait(250);LED3 = 0;//LED3 闪烁 halWait(250);LED3 = 1;halWait(250);BEEP = 0;//BEEP 鸣叫 halWait(250);BEEP = 1;halWait(250);LED1 = 0;LED2 = 0;LED3 = 0;//LED 灯全亮 halWait(250);halWait(250);LED1 = 1;LED2 = 1;LED3 = 1;//LED 灯全灭

计算机学院软件工程系嵌入式应用系统设计

halWait(250);halWait(250);} } 四.实验步骤

1、正确连接 USB 仿真器的下载线和 EBDCC2530 节点板。

2、打开实验源码LEDs.eww(路径为:出厂光盘 DISK-EMBV210-WSN5-Example2 基本接口实验2.2 LED),编译工程,依次选择“Project”→“Download and Debug”,下载到 CC2530

3、把仿真器左侧的 USB 接口拔掉,然后拔掉连接在 EBDCC2530 节点板 DBG 位置的调试接

口。我们打开 EBDCC2530 节点板右下方的电源开关,此时可以观察到程序运行的情况。(在不拔掉仿真器的情况下,我们可以通过相关的调试进一步观察 LED 的闪烁情况和蜂鸣器的鸣叫情况。)

4、修改延时函数,可以改变 LED 小灯的闪烁和蜂鸣器鸣叫的时间间隔。

5、重新编译,并下载程序到 EBDCC2530 节点板,观察 LED 的闪烁和蜂鸣器的鸣叫情况。五.实验结果

六、实验总结:

在LED控制实验中,我们通过简单的程序进行I/O控制,从而达到控制LED的闪烁以及峰叫,理解一些简单的汇编知识,理解了一些ARM汇编在I/O控制的原理及其作用。

计算机学院软件工程系嵌入式应用系统设计

实验六看门狗实验

一.实验目的

 学习CC2530 片内看门狗的工作原理。 配置 CC2530 的看门狗相关的寄存器。二.实验环境

 硬件:PC 机,EBDCC2530 节点板,USB 接口仿真器。 软件:Windows98/2000/NT/XP,IAR 集成开发环境。三.实验原理

看门狗(WatchDog),准确的说应该是看门狗定时器,则正是专门用来监测单片机程序运行状态的电路结构。其基本原理是:启动看门狗定时器后,它就会从 0 开始计数,若程序在规定的时间间隔内没有及时对其清零,看门狗定时器就会复位系统(相当于重启电脑)。

看门狗的使用可以总结为:选择模式→选择定时器间隔→放狗→喂狗。(1)选择模式

看门狗定时器有两种模式,即“看门狗模式”和“定时器”模式。

在定时器模式下,它就相当于普通的定时器,达到定时间隔会产生中断(你可以在 ioCC2530.h文件中找到其中断向量为 WDT_VECTOR);在看门狗模式下,当达到定时间隔时,不会产生中断,取而代之的是向系统发送一个复位信号。本实验中,通过 WDCTL.MODE=0 来选择为看门口模式。(2)选择定时间隔

如上图所示,有四种可供选择的时钟周期,为了测试方便,我们选择时间间隔为 1s(即WDCTL.INT=00)。(3)放狗

令 WDCTL.EN=1,即可启动看门狗定时器。(4)喂狗

定时器启动之后,就会从 0 开始计数。在其计数值达到 32768 之前(即<1s),若我们用以下代码喂狗: WDCTL=0xa0;WDCTL=0x50;计数值喂狗 喂狗 喂狗 计数临界线 没有喂狗„„ 达到此线,系统复位 则定时器的计数值会被清 0,然后它会再次从 0x0000 开始计数,这样就防止了其发送复位信号,表现在开发板上就是:LED1 会一直亮着,不会闪烁; 若我们不喂狗(即把此代码注释掉),那么当定时器计数达到 32768 时,就会发出复位信号,程序将会从头开始运行,表现在开发板上就是:LED1 不断闪烁,闪烁间隔为 1s。(注:喂狗程序一定要严格与上述代码一致,顺序颠倒/写错/少写一句都将起不到清 0 的作用。)四.实验步骤

计算机学院软件工程系嵌入式应用系统设计

1、正确连接 USB 仿真器的下载线和 EBDCC2530 节点板。

2、打开实验源码watchdog.eww(路径为:出厂光盘 DISK-EMBV210-WSN5-Example2 基

本接口实验2.8 Watchdog),编译工程,依次选择“Project”→“Download and Debug”,下载到CC2530 节点板。

3、把仿真器左侧的 USB 接口拔掉,然后拔掉连接在 EBDCC2530 节点板 DBG 位置的调试接口。我们打开 EBDCC2530 节点板右下方的电源开关,此时可以观察到程序运行的情况。(在不拔掉仿真器的情况下,我们可以通过相关的调试进一步观察程序的运行情况。)

4、默认加上FeedDog函数,编译、下载、运行代码后,我们发现 LED1 一直亮着(系统不复位)。

5、若注释掉FeedDog函数,编译、下载、运行代码后,我们发现 LED1 以 1s 的间隔闪烁(系统每隔 1s 复位一次)。

五、实验结果

计算机学院软件工程系嵌入式应用系统设计

六、实验总结

通过这次实验我进一步了解了看门狗的工作原理和功能,以及看门狗寄存器定时周期的计算方法。在实验过程中遇到了很多的问题,例如,无法连接到超级终端、运行设备忘记设置为ARM7Simple、USB驱动无法正确装载等等。最终在同学的帮助下和老师的指导下,完成了实验,并且老师也向我们讲述了一些代码中我们不知道的知识,解决了我们的疑惑。

篇2:嵌入式测试实验报告

实验一 跑马灯实验.........................................................................1 实验二 按键输入实验.....................................................................3 实验三 串口实验.............................................................................5 实验四 外部中断实验.....................................................................8 实验五 独立看门狗实验................................................................11 实验七 定时器中断实验................................................................13 实验十三 ADC实验........................................................................15 实验十五 DMA实验........................................................................17 实验十六 I2C实验........................................................................21 实验十七 SPI实验........................................................................24 实验二十一 红外遥控实验............................................................27 实验二十二 DS18B20实验.............................................................30

实验一 跑马灯实验

一.实验简介

我的第一个实验,跑马灯实验。

二.实验目的

掌握STM32开发环境,掌握从无到有的构建工程。

三.实验内容

熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。通过ISP下载代码到实验板,查看运行结果。使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。

五.实验步骤

1.熟悉MDK KEIL开发环境 2.熟悉串口编程软件ISP 3.查看固件库结构和文件

4.建立工程目录,复制库文件 5.建立和配置工程 6.编写代码 7.编译代码

8.使用ISP下载到实验板 9.测试运行结果

10.使用JLINK下载到实验板 11.单步调试

12.记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。

七.实验总结

通过本次次实验我了解了STM32开发板的基本使用,初次接触这个开发板和MDK KEILC软件,对软件操作不太了解,通过这次实验了解并熟练地使用MDK KEIL软件,用这个软件来编程和完成一些功能的实现。作为 STM32 的入门第一个例子,详细介绍了STM32 的IO口操作,同时巩固了前面的学习,并进一步介绍了MDK的软件仿真功能。

实验二 按键输入实验

一.实验简介

在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。

二.实验目的

熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。

三.实验内容

实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。

使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。

五.实验步骤

1在实验1代码的基础上,编写中断初始化代码

2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序 3编写中断服务程序

4编译代码,使用JLINK下载到实验板 5.单步调试

6记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

我们将通过MiniSTM32 板上载有的3个按钮,来控制板上的2个LED,其中KEY0控制LED0,按一次亮,再按一次,就灭。KEY1 控制LED1,效果同KEY0。KEY_2(KEY_UP),同时控制LED0 和LED1,按一次,他们的状态就翻转一次。

七.实验总结

通过本次实验,我学会了如何使用STM32 的IO 口作为输入用。TM32 的IO 口做输入使用的时候,是通过读取IDR 的内容来读取IO 口的状态的。这里需要注意的是 KEY0 和KEY1 是低电平有效的,而WK_UP 是高电平有效的,而且要确认WK_UP 按钮与DS18B20 的连接是否已经断开,要先断开,否则DS18B20 会干扰WK_UP按键!并且KEY0 和KEY1 连接在与JTAG 相关的IO 口上,所以在软件编写的时候要先禁用JTAG 功能,才能把这两个IO 口当成普通IO 口使用。

实验三 串口实验

一.实验简介

编写代码实现串口发送和接收,将通过串口发送来的数据回送回去。

二.实验目的

掌握STM32基本串口编程,进一步学习中断处理。

三.实验内容

编写主程序,初始化串口1,设置波特率为9600,无校验,数据位8位,停止位1位。编写中断服务程序代码实现将发送过来的数据回送。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1编写串口初始化代码

2编写中断服务程序代码

3编译代码,使用JLINK或ISP下载到实验板 4记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

把代码下载到 MiniSTM32 开发板,可以看到板子上的LED0 开始闪烁,说明程序已经在跑了。接着我们打开串口调试助手,看到如下信息:

证明串口数据发送没问题。接着,我们在发送区输入上面的文字,输入完后按回车键。然后单击发送,可以得到如下结果:

七.实验总结

通过本次实验,我进一步了解了串口的使用,学会了通过串口发送和接收数据,将通过串口发送来的数据回送回去。该实验的硬件配置不同于前两个实验,串口 1 与USB 串口默认是分开的,并没有在PCB上连接在一起,需要通过跳线帽来连接一下。这里我们把P4 的RXD 和TXD 用跳线帽与P3 的PA9 和PA10 连接起来。

实验四 外部中断实验

一.实验简介

STM32 的 IO 口在本章第一节有详细介绍,而外部中断在第二章也有详细的阐述。这里我们将介绍如何将这两者结合起来,实现外部中断输入。

二.实验目的

进一步掌握串口编程,进一步学习外部中断编程,提高编程能力。

三.实验内容

初始化IO口的输入,开启复用时钟,设置IO与中断的映射关系,从而开启与IO口相对应的线上中断事件,设置触发条件。配置中断分组(NVIC),并使能中断,编写中断服务函数。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1.2.3.4.编写中断服务程序代码 使用ISP下载到实验板 测试运行结果

记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

打开串口助手。

七.实验总结

首先需要将IO设置为中断输入口: 1)初始化 IO 口为输入。

2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。

3)开启与该 IO口相对的线上中断/事件,设置触发条件。

4)配置中断分组(NVIC),并使能中断。

5)编写中断服务函数。

这一节,使用的是中断来检测按键,通过 WK_UP 按键实现按一次 LED0 和 LED 1 同时翻转,按 KEY0 翻转 LED0,按 KEY1 翻转 LED1。

试验中外部中断函数不能进入的原因分析 : 1)GPIO或者AFIO的时钟没有开启。2)GPIO和配置的中断线路不匹配。3)中断触发方式和实际不相符合。

4)中断处理函数用库函数时,写错,经常可能出现数字和字母之间没有下划线。5)外部中断是沿触发,有可能不能检测到沿,比如 中断线是低电平(浮空输入),触发是下降沿触发,可能会出现一直是低电平,高电平的时候是一样的情况,电平持续为高电平。

6)没有用软件中断来触发外部中断,调用函数EXTI_GenerateSWInterrupt;,因为软件中断先于边沿中断处理。

实验五 独立看门狗实验

一. 实验简介

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

二.实验目的

通过编程,编写一个独立看门狗驱动程序

三.实验内容

启动 STM32 的独立看门狗,从而使能看门狗,在程序里面必须间隔一定时间喂狗,否则将导致程序复位。利用这一点,我们本章将通过一个 LED 灯来指示程序是否重启,来验证 STM32 的独立看门狗。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1.2.3.4.参考教材独立看门狗部分,编写独立看门狗驱动程序。建立和配置工程 编写代码

使用ISP下载到实验板

记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

在配置看门狗后,看到LED0 不停的闪烁,如果WK_UP 按键按下,就喂狗,只要WK_UP 不停的按,看门狗就一直不会产生复位,保持LED0 的常亮,一旦超过看门狗定溢出时间(Tout)还没按,那么将会导致程序重启,这将导致LED0 熄灭一次。

七.实验总结

通过本次实验,我掌握了启动独立看门狗的步骤: 1)向 IWDG_KR 写入 0X5555。2)向 IWDG_KR 写入 0XAAAA。3)向 IWDG_KR 写入 0XCCCC。

通过上面 3个步骤,启动 STM32 的看门狗,从而使能看门狗,在程序里面就必须间隔一定时间喂狗,否则将导致程序复位。利用这一点,本章通过一个LED 灯来指示程序是否重启,来验证 STM32 的独立看门狗。在配置看门狗后,LED0 将常亮,如果 WK_UP 按键按下,就喂狗,只要 WK_UP 不停的按,看门狗就一直不会产生复位,保持 LED 0 的常亮,一旦超过看门狗溢出时间(Tout)还没按,那么将会导致程序重启,这将导致 LED 0 熄灭一次。

实验七 定时器中断实验

一. 实验简介

STM32 的定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几微秒到几毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。

二.实验目的

熟练掌握定时器中断,学会对定时器中断的编程操作。

三.实验内容

使用定时器产生中断,然后在中断服务函数里面翻转 LED1 上的电平,来指示定时器中断的产生,修改中断时间。

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1.参考教材定时器中断部分,编写定时器中断的驱动程序。2.编写主程序

3.编译代码,使用JLINK或ISP下载到实验板 4.记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

七.实验总结

通过本次实验,认识到时间中断来控制LED灯的闪烁,同时也可以将时间中断应用到控制其他的程序块。

以TIME3为例产生中断的步骤为 1)TIM3 时钟使能。

2)设置 TIM3_ARR 和 TIM3_PSC 的值。

3)设置 TIM3_DIER 允许更新中断。

4)允许 TIM3 工作。

5)TIM3 中断分组设置。6)编写中断服务函数。

在中断产生后,通过状态寄存器的值来判断此次产生的中断属于什么类型。然后执行相关的操作,我们这里使用的是更新(溢出)中断,所以在状态寄存器 SR 的最低位。在处理完中断之后应该向 TIM3_SR 的最低位写 0,来清除该中断标志。

实验十三 ADC实验

一.实验简介

通过DAC将STM32系统的数字量转换为模拟量。使用ADC将模拟量转换为数字量。

二.实验目的

掌握DAC和ADC编程。

三.实验内容

编写代码实现简单的DAC单次发送

编写代码实现ADC采集DAC发送的数据,并发送到串口

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1编写主程序

2编译代码,使用JLINK或ISP下载到实验板,使用串口调试助手观察数据 3记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

七.实验总结

本节将利用 STM32的 ADC1 通道 0 来采样外部电压值,并在串口调试助手中显示出来。步骤如下:

1)开启 PA 口时钟,设置 PA0 为模拟输入。

2)使能 ADC1 时钟,并设置分频因子。

3)设置 ADC1 的工作模式。

4)设置 ADC1 规则序列的相关信息。

5)开启 AD 转换器,并校准。

6)读取 ADC 值。

在上面的校准完成之后,ADC 就算准备好了。接下来我们要做的就是设置规则序列 0 里面的通道,然后启动 ADC 转换。在转换结束后,读取 ADC1_DR 里面的值。

通过以上几个步骤的设置,可以正常的使用 STM32 的 ADC1 来执行 AD 转换操作。

通过本次实验的学习,我们了解了STM32 ADC的使用,但这仅仅是STM32强大的ADC 功能的一小点应用。STM32 的ADC 在很多地方都可以用到,其ADC 的DMA 功能是很不错的,实验十五 DMA实验

一. 实验简介

直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。

二.实验目的

熟练掌握DMA编程,学会对EPC02的读写操作,学习双缓冲兵乓操作,理解互斥资源。提高编程能力。

三.实验内容

利用外部按键KEY0 来控制DMA 的传送,每按一次KEY0,DMA 就传送一次数据

到USART1,然后在串口调试助手观察进度等信息。LED0 还是用来做为程序运行的指示灯。

这里我们使用到的硬件资源如下: 1)按键KEY0。2)指示灯LED0。

3)使用串口调试助手观察数据

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、网络调试助手。

五.实验步骤

1编写主程序

2编译代码,使用JLINK或ISP下载到实验板,使用串口调试助手观察数据 3记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

伴随 LED0 的不停闪烁,提示程序在运行。我们打开串口调试助手,然后按KEY0,可以看到串口显示如下内容:

七.实验总结

本节利用 STM32 的 DMA 来实现串口数据传送,DMA通道的配置需要: 1)设置外设地址。

2)设置存储器地址。

3)设置传输数据量。

4)设置通道 4 的配置信息。

5)使能 DMA1 通道 4,启动传输。

通过以上 5 步设置,我们就可以启动一次 USART1 的 DMA 传输了。

DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。

DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。

在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。

当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。

由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。

实验十六 I2C实验

一.实验简介

编程实现对使用I2C接口的EPC02芯片进行写和读操作。

二.实验目的

熟练掌握I2C编程,学会对EPC02的读写操作。

三.实验内容

编写I2C驱动程序,使用驱动程序初始化EPC02,判断设备正确性。

写256个0x5A到EPC02,读出并发送给串口,通过串口调试助手判别是否读到的都是0x5A.四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1参考教材I2C部分,编写I2C驱动程序。2编写主程序

3编译代码,使用JLINK或ISP下载到实验板 4记录实验过程,撰写实验报告

六.实验结果及测试

伴随 LED0 的不停闪烁,提示程序在运行。我们先按下KEY0,可以看到如下所示的内容,证明数据已经被写入到24C02了。

接着我们按KEY2,可以看我们刚刚写入的数据被显示出来了,如下图所示:

源代码:

七.实验总结

IIC是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。

IIC总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。程序在开机的时候会检测 24C02 是否存在,如果不存在则会在TFTLCD 模块上显示错误信息,同时LED0 慢闪。大家可以通过跳线帽把PC11 和PC12 短接就可以看到报错了。通过本次实验,我掌握了如何使用IIC写入与读出数据,学习了编写I2C驱动程序,使用驱动程序初始化EPC02,判断设备正确性,以及如何在助手上显示。

实验十七 SPI实验

一.实验简介

编程实现对SPI接口的W25Q64进行读写操作。

二.实验目的

熟练掌握SPI编程,学会对的W25Q64读写操作。

三.实验内容

1.2.3.4.5.编写SPI驱动程序 初始化SPI接口

读取SPIFLASH的ID,如果正确继续,否则报错

向SPIFALSH地址0x12AB00开始写一串字符,再读出比较判断是否与写入的一致 向SPIFALSH地址0x12AB00开始写连续256个字节的0x5A,然后读出并发送给串口,通过串口调试助手判别是否读到的都是0x5A.四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。

软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。

五.实验步骤

1参考SPI及SPI FLASH部分,编写SPI及SPI FLASH驱动程序(可参考书上代码)。2编写主程序

3编译代码,使用JLINK或ISP下载到实验板 4记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

伴随 LED0 的不停闪烁,提示程序在运行。我们先按下KEY0,可以看到如图13.17.4.2 所示的内容,证明数据已经被写入到W25X16了。

接着我们按KEY2,可以看我们刚刚写入的数据被显示出来了,如下图所示:

七.实验总结

SPI 接口主要应用在EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32 也有 SPI 接口。

SPI 的设置步骤:

1)配置相关引脚的复用功能,使能 SPI时钟。

2)设置 SPI 工作模式。

3)使能 SPI。

程序在开机的时候会检测 W25X16 是否存在,如果不存在则会在TFTLCD 模块上显示错误信息,同时LED0 慢闪。大家可以通过跳线帽把PA5 和PA6 短接就可以看到报错了。通过本实验,我掌握了编写SPI程序写入和读取FLASH的方法,掌握了对学会对的W25Q64读写操作。对STM32开发板有了进一步的了解。

实验二十一 红外遥控实验

一. 实验简介

编程实现通过在 ALIENTEK MiniSTM32 开发板上实现红外遥控器的控制。

二.实验目的

掌握编程实现红外遥控控制开发板的方法。

三.实验内容

1.编写红外遥控驱动程序 2.编写红外遥控程序代码 3.使用红外遥控控制开发板

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。

五.实验步骤

4.编写红外遥控驱动程序 5.编写红外遥控程序代码

6.编译代码,使用JLINK或ISP下载到实验板 7.记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

使用串口调试助手观察数据

七.实验总结

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。

通过本节实验,我学习到了如何编程使用红外遥控控制,在本程序中只是简单地输出一个数值,在以后的应用中可以实现更强大的功能,比如用红外远程输入控制开发板进行一些操作。对STM32有了进一步的认识。

实验二十二 DS18B20实验

一. 实验简介

一. 在ALIENTEK MiniSTM32 开发板上,通过 DS18B20 来读取环境温度值。

二.实验目的

巩固SPI编程。掌握使用感应器获取环境温度的方法。

三.实验内容

1.复位脉冲和应答脉冲

2.写时序

3.读时序

四.实验设备

硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。

五.实验步骤

1.2.3.4.参考教材DS18B20编程部分,编写DS18B20驱动程序 编写主程序

编译代码,使用JLINK或ISP下载到实验板 记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

使用串口调试助手观察数据:

七.实验总结

DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。

篇3:嵌入式软件的覆盖测试

软件的覆盖测试是一种白盒测试方法。测试人员必须拥有程序的规格说明和程序清单,以程序的内部结构为基础来设计测试用例。其基本准则是测试用例尽可能多的覆盖程序的内部逻辑结构,发现其中的错误和问题。

1 覆盖测试工具

要取得较好的覆盖测试效果,需要借助一定的工具软件。这些工具软件一般具备如下的功能特点,可弥补人为测试的缺陷:

(1)分析软件内部结构,帮助制定覆盖策略及设计测试用例;

(2)与适当的编译器结合,对被测软件实施自动插桩,以便在其运行过程中生成覆盖信息并收集这些信息;

(3)根据搜集的覆盖信息计算覆盖率,帮助测试人员找到未被覆盖的软件部位,以改进测试用例,提高覆盖率。

利用工具进行动态覆盖测试时,需要三个要素:测试用例、插桩过的被测代码、搜集覆盖信息并进行分析的工具。代码插桩由测试工具自动完成,通过执行测试用例,再由工具搜集覆盖信息并进行分析,就可以看到覆盖率指标。

2 嵌入式软件的覆盖测试原理

嵌入式软件的开发与通用软件很大的不同点在于,需要采用交叉开发的方式:开发工具运行在软硬件配置丰富的宿主机上,而嵌入式应用程序运行在软硬件资源相对缺乏的目标机上。对于这类软件的测试也存在着同样的问题:测试工具运行在宿主机上,而测试所需要的信息则在目标机上产生,并通过一定的物理/逻辑连接传输到宿主机上,由测试工具接收。因此,嵌入式软件测试的一个重要问题是建立宿主机与目标机之间的物理/逻辑连接,解决数据信息的传输问题。

3 Logiscope在嵌入式操作系统DeltaCORE测试中的应用

Logiscope是Verilog公司的CASE产品,对软件的编码、测试、维护提供多方面的服务,并且支持嵌入式软件的覆盖测试。目前,Logiscope已经为一些成熟的商用嵌入式操作系统提供了支持,比如pSOS。DeltaCORE是我国自主开发的嵌入式强实时操作系统内核。

3.1 测试前的准备

测试前的准备即为支持对DeltaCORE的测试所做的移植工作。

为了支持嵌入式程序的测试,Logiscope提供了运行在目标机方的程序代码(或称为目标机端的支持库),内部包括:(1)1个用来收集和发送覆盖信息的主循环线程,该线程即是嵌入式应用中的特殊任务;(2)实现具体数据传输的函数,包括对串口或网络的驱动,它们将被上述线程调用;(3)插桩函数的实现,这些函数由被测代码调用,向缓冲中放入覆盖消息块;(4)对缓冲信息队列的管理;(5)初始化代码。

为了支持对DeltaCORE的测试,将与这些机制相关的代码进行移植,包括以下几方面:

(1)将收集和发送覆盖信息的主循环线程作为在目标机端运行的应用程序中的任务;(2)对串口的驱动采用LambdaTOOL BSP(板级支持包)中的串口驱动代替,对网络的驱动,用DeltaCORE的配套组件DeltaNET中的驱动程序实现;(3)利用DeltaCORE的信箱机制实现消息队列的创建和管理,插桩代码向这些信箱发送覆盖消息块;(4)在DetaCORE应用程序的根任务中调用Logiscope的初始化函数,达到创建特殊任务信箱的目的。

3.2 对DeltaCORE的覆盖测试过程及结果

在对DeltaCORE的覆盖测试中,采用了较为常用的覆盖策略———判断到判断的测试路径。其含义是:测试起点是函数或判断(if,while,……)的入口点,它的出口是下一个函数或判断的退出点,之间不能再有判断。测试的具体过程是:

(1)利用插桩分析器对DeltaCORE的源代码进行插桩,并生成插桩信息文件。

(2)将移植后的Logiscope目标机端程序与插桩后的内核源代码一同编译链接成库,以替代原来的内核库,供应用程序使用。

(3)编写测试用例,从实现应用的角度使用DeltaCORE的各种系统功能调用,力求遍历内核函数所有的判定分支,并将这些用例编译成可执行程序。

(4)在宿主机端启动覆盖信息收集和分析程序,用LambdaTOOL的调试器下载并启动应用程序。DeltaCORE的覆盖信息被传递到宿主机上,分析程序动态显示覆盖率的增长情况,并将这些信息记录在一个文件中。

(5)应用程序执行完毕后,启动Logiscope的事后分析工具,将覆盖信息记录文件与插桩信息文件进行比较,帮助测试人员清晰地了解每个被测函数内部的路径覆盖情况,借此可为测试用例的改进提供帮助。

(6)测试人员修改测试用例,并重新进行整个测试过程。各项测试的结果可以叠加,覆盖率将得到增长。

在两个多月的时间里,对DeltaCORE 1.1版本79个文件共计115个函数进行了覆盖测试,覆盖率已经达到了70.55%。编写测试用例89个,主要的60个API函数均已获得较高的覆盖,覆盖率达51.3%。

4 结束语

借助Logiscope工具对嵌入式实时操作系统DeltaCORE进行了覆盖测试,达到了较好的覆盖率;发现并处理了一些缺陷,提高了软件的质量和可靠性。但同时也存在不足之处:(1)测试应进行规划,包括测试顺序的选择、测试用例的设计、测试文档的管理等;(2)由于该测试手段依赖于与操作系统有关的机制,而被测对象又是操作系统本身,因此,与这些机制有关的部分代码未被插桩和测试,否则就会出错;(3)该方法不能用于性能测试。因此,它属于纯软件的测试方式,大量数据信息的产生、传递与收集对被测程序的干扰大,只能做白盒性的功能结构验证。

摘要:本文对一种嵌入式操作系统进行覆盖测试的情况进行了探讨,详细描述了这类软件的特性,对这类软件进行覆盖测试的原理、过程和覆盖测试的结果进行了阐述,并对测试过程中的不足进行了分析。

关键词:嵌入式软件,覆盖测试,测试用例

参考文献

[1]郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1999.

篇4:嵌入式芯片测试系统设计

关键词:嵌入式芯片;FPGA;人机交互界面

嵌入式芯片是当前一些主流数码设备的核心部件,也是嵌入式系统的硬件基础。嵌入式系统是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。

嵌入式芯片主要包括FPGA芯片(Field Programmable Gate Array 现场可编程门阵列),MCS-51系列芯片等等。本文主要介绍面向嵌入式芯片的指令测试系统。

一、系统架构

测试系统的主体是面向嵌入式芯片的人机交互界面。它为用户提供了检测芯片指令集的各种便捷操作。

为了更好的实现测试体系的各项功能,笔者在编写程序时,将测试系统人为的分成了几个模块。这些模块之间有着非常紧密的联系,每一步的实现都是下一步成功运行的基础。

测试体系的主体架构主要分为五个部分:

(一)源代码的输入与保存

用户可以通过编辑框输入代码,实现程序的编写。此外系统还为用户提供了编辑框的清空操作,并可以自动将编写的代码保存为.asm文件。

(二)源文件的读取与显示

用户可以将已经编写好的源文件读入系统,并对其进行编辑。

(三)交叉编译

系统对读入的源文件进行编译,期间用户可以自动配编译工具,编译完成后系统将自动报错。

(四)串口的输入输出

系统可以将用户指定的二进制文件送到串行口中,并发送至连接到PC端的8051芯片中。发送成功后,系统将显示已经发送的信息。

系统可以自动接收来自串口的消息,并显示在相应的列表框中。

(五)程序运行日志

系统在用户运行了测试体系之后,即程序的出口处,自动生成程序的运行日志,它为用户显示了程序运行的各项参数,例如程序运行时间,串口状态等。

此外系统为了使用户可以更加方便自如的使用本测试框架,在每一部分的实现过程中,都充分考虑了软件的灵活性,尽可能的让用户自主配置测试体系的各项参数。

二、系统设计

(一)整体性

作为嵌入式测试系统的人机交互界面,在其设计的过程中必然要形成一套完备的软件体系,即保证程序运行的整体性。这关系到整个测试系统的完整性和稳定性。

源代码输入和源文件读取部分主要是将指令集测试代码导入到系统中。交叉编译部分的工作是对导入系统的测试代码进行编译处理,以便用户对测试代码进行调试。串口检测部分是将编译通过的测试程序所生成的二进制文件以8位字符串的形式送入串口,经过开发板的运行以后,将结果通过串口输出到指定的LCD显示屏或PC上,从而验证测试程序的可执行性。程序运行日志是对整个程序运行的效率和稳定性向用户提供的反馈信息。

(二)灵活性

在保证程序运行的整体性的同时,为了使测试体系的使用更加的方便,提高测试体系进一步完善的空间,就必须保证各功能模块的灵活性。在源代码输入和源文件读取的部分,系统默认的输入程序是汇编程序,但用户也可以输入C程序,JAVA程序,XML程序等多种程序语言。同时,在交叉编译部分也可以通过调用不同的编译器和链接器对这些程序编译调试,这无形中将单一的面向嵌入式芯片的汇编编译器扩展为集C语言编译器,JAVA语言编译器和XML语言编译器等多种编译器于一体的集成编译环境,从而实现强大的编译功能。串口检测部分为用户提供串口参数的配置框,并支持串口信息的发送与接收,从而使测试体系具有了类似超级终端的串口通信功能,这也为用户对串口操作提供了极大的方便。

三、结束语

作为当前主流的数码产品的关键部件,嵌入式芯片必然会在未来的IT市场上占有越来越重要的地位。本文所探讨的嵌入式芯片测试系统正是基于这样的考量,不但从源代码的输入与保存,源文件的读取与显示,交叉编译,串口的输入输出和程序运行日志这五个模块来构建测试系统,而且还从程序设计的整体性和灵活性两个方面,对该系统进行了评测。未来的嵌入式系统和普通的计算机系统在微型化和小型化方面将会趋于一致,而测试系统也可以进一步扩展为对整个计算机系统进行相应的检测。希望测试系统能为嵌入式芯片的发展做出一定的贡献。

参考文献:

[1]胡振华.VHDL与FPGA设计[M].北京:中国铁道出版社,2003.

[2]陈荣,陈华.VHDL芯片设计[M].北京:机械工业出版社,2006.

[3]张大波,吴迪,郝军.嵌入式系统原理设计与应用[M].北京:机械工业出版社,2005.

[4]邓华,毛岩,吉正.VisualC++案例教程[M].北京:中国多媒体电子出版社,2001.

篇5:嵌入式实验报告

嵌入式处理器及应用实验报告书

学院名称学生姓名专业名称班

: : : :

实验一

ADS 1.2 集成开发环境练习

一、实验目的:

了解ADS 1.2 集成开发环境的使用方法。

二、实验内容:

1.建立一个新的工程。

2.建立一个C源文件,并添加到工程中。3.设置文本编辑器支持中文。4.编译链接工程。5.调试工程。

三、实验步骤:

1.启动ADS 1.2 IDE集成开发环境,选择File—New,使用ARM Executable Image工程模板建立一个工程,工程名称为ADS。

2.选择File—New建立一个新的文件TEST1.S,设置直接添加到项目中,输入程序代码。3.由于ADS安装后默认字体是Courier New,对于中文支持不完善,因此建议修改字体。选择Edit—Perferences,在Font选项设置字体为Fixedsys,Script为CHINESE_GB2312。建议在Tab Inserts Spaces前打勾,使Tab键插入的是多个空格。

4.选择Edit—DebugRel Settings,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Output页设置连接地址ROBase 为0x40000000,RW Base 为0x40003000,在Options页设置调试入口地址Image entry point 为 0x40000000。5.选择Project—Make,将编译链接整个工程。

6.选择Project—Debug,或单击快捷键F5,IDE环境就会启动AXD调试软件。

四、程序清单:

AREA

Example1,CODE,READONLY

;声明代码段Example1

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

START

MOV

R0,#15

;设置参数

MOV

R1,#8

ADDS

R0,R0,R1

;R0 = R0 + R1

B

START

END

五、心得体会:

通过本次实验,我熟悉了ADS 1.2 集成开发环境,学会了怎样建立工程,在工程里面建立文件和进行最基本的运行操作。我感触最深的是每次软件的开始使用是最关键的,想要掌握一个软件的使用必须进行多次的练习,多练几遍自然而然的会熟练的操作。

实验二

存储器访问指令练习实验

一、实验目的:

1.了解ADS 1.2 集成开发环境及ARMulator软件仿真。

2.掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序。3.掌握指令的条件执行以及使用LDR/STR指令完成存储器的访问。

二、实验内容:

1.使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果回写原地址;若结果大于或等于10,则把0写回原地址。

2.使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0和R1的值,打开存储器观察窗口(Memory)监视0x40003100上的值。

三、实验步骤:

1.启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction2。2.建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。

3.设置工程链接地址ROBase 为0x40000000,RW Base 为0x40003000。设置调试入口地址Image entry point 为 0x40000000。

4.编译链接工程,选择Project —Debug,启动AXD进行软件仿真调试。

5.打开寄存器窗口(Processor Registers),选择Current 项监视R0和R1的值。打开存储器观察窗口(Memory)设置观察地址为0x40003100,显示方式Size为32Bit,监视0x40003100地址上的值。

四、程序清单:

COUNT

EQU

0x40003100

;定义一个变量,地址为0x40003100

AREA

Example2,CODE,READONLY;声明代码段Example2

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

START

LDR

R1,=COUNT

;R1 <= COUNT

MOV

R0,#0

;R0 <= 0

STR

R0,[R1]

;[R1] <= R0,即设置COUNT 为0

LOOP

LDR

R1,=COUNT

LDR

R0,[R1]

;R0 <= [R1]

ADD

R0,R0,#1

;R0 <= R0 + 1

CMP

R0,#10

;R0 与 10 比较,影响条件码标志

MOVHS

R0,#0

;若R0 大于等于 10,则此指令执行,R0 <= 0

STR

R0,[R1]

;[R1] <= R0,即保存COUNT

B

LOOP

END

五、心得体会:通过本次实验,让我更深一步的了解了ADS 1.2 集成开发环境及ARMulator软件仿真。通过对程序的解读,我掌握一些汇编指令的写法,同时也提高了我的读程序的能力。本次实验中我遇到了一个问题,在工程里加载文件的时候,没注意文件的后缀应为“。S”,结果造成文件加载失败。

实验三

数据处理指令练习实验

一、实验目的:

1.掌握ARM数据处理指令的使用方法。2.了解ARM指令灵活的第2个操作数。

二、实验内容:

1.使用MOV和MVN指令访问ARM通用寄存器。

2.使用ADD、SUB、AND、ORR、CMP和TST等指令完成数据加减运算及逻辑运算。

三、实验步骤:

1)启动ADS1.2,使用ARM Executable Image 工程模板建立一个工程Instruction3。2)建立汇编源文件TEST3.S ,编写实验程序,然后添加到工程中。

3)设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point 为 0x40000000。

4)编译链接工程,选择Project —Debug,启动AXD进行软件仿真调试。5)打开寄存器窗口(Processor Registers),选择Current 项监视各寄存器的值。6)单步运行程序,观察寄存器值的变化。

四、程序清单:

X

EQU

;定义X 的值为11

Y

EQU

;定义Y 的值为8

BIT23

EQU

(1<<23)

;定义BIT23 的值为0x00800000

AREA

Example3,CODE,READONLY

;声明代码段Example3

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

START

;使用MOV、ADD 指令实现:R8 = R3 = X + Y

MOV

R0,#X

;R0 <= X,X 的值必须是8 位图数据

MOV

R1,#Y

;R1 <= Y,Y 的值必须是8 位图数据

ADD

R3,R0,R1

;即是R3 = X + Y

MOV

R8,R3

;R8 <= R3

;使用MOV、MVN、SUB 指令实现:R5 = 0x5FFFFFF8y;

;

break;

;

case

7: x = key * y;

;

break;

;

default: x = 168;

SWITCH

CASE_0

CASE_2

CASE_3

CASE_5

CASE_7

;

break;;};设x 为R0,y 为R1,key 为R2(x、y、key 均为无符号整数)MOV

R1,#3

;初始化y 的值

MOV

R2,#2

;初始化key 的值

AND

R2,R2,#0x0F

;switch(key&0x0F)

CMP

R2,#0

;case 0:

CMPNE

R2,#2

;case 2:

MPNE

R2,#3

;case 3:

BNE

CASE_5

ADD

R0,R2,R1

;

x = key + y

B

SWITCH_END

;

break

CMP

R2,#5

;case 5:

BNE

CASE_7

SUB

R0,R2,R1

;

x = key1)*4 SvcStackSpace +(SVC_STACK_LEGTH1)*4 FiqStackSpace +(FIQ_STACK_LEGTH1)*4

UndtStackSpace +(UND_STACK_LEGTH-1)*4

;分配堆栈空间

AREA

MyStacks, DATA, NOINIT, ALIGN=2

UsrStackSpace

SPACE

USR_STACK_LEGTH * 4

;用户(系统)模式堆栈空间

SvcStackSpace

SPACE

SVC_STACK_LEGTH * 4

;管理模式堆栈空间

IrqStackSpace

SPACE

IRQ_STACK_LEGTH * 4

;中断模式堆栈空间

FiqStackSpace

SPACE

FIQ_STACK_LEGTH * 4

;快速中断模式堆栈空间

AbtStackSpace

SPACE

ABT_STACK_LEGTH * 4

;中止义模式堆栈空间

UndtStackSpace

SPACE

UND_STACK_LEGTH * 4

;未定义模式堆栈

END

五、心得体会:通过本次实验,我较好的掌握了如何使用MRS/MSR指令实现ARM微控制器工作模式的切换。较好的了解了在各个工作模式下的寄存器。

实验六

C语言程序实验

一、实验目的:

通过实验了解使用ADS 1.2编写C语言程序,并进行调试。

二、实验内容:

编写一个汇编程序文件和一个C程序文件。汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后跳转到C程序运行,这就是一个简单的启动程序。C程序使用加法运算来计算1+2+3+…+(N-1)+N的值(N为0时,结果为0;N为1时,结果为1)。

三、实验步骤:

1.启动ADS1.2,使用ARM Executable Image 工程模板建立一个工程ProgramC。2.建立汇编源文件Startup.s和Test.c,编写实验程序,然后添加到工程中。

3.设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point 为 0x40000000。

4.设置位于开始位置的起始代码段:选择Edit—DebugRel Settings,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Layout页设置Object/Symbol为Startup.o,Section为Start。

5.编译链接工程,选择Project—Debug,启动AXD进行软件仿真调试。6.在Startup.s的“B Main”处设置断点,然后全速运行程序。

7.程序在断点处停止。单步运行程序,判断程序是否跳转到C程序中运行。

选择Processor Views—Variables打开变量观察窗口,观察全局变量的值,然后单步/全速运行程序,判断程序的运算结果是否正确。

四、程序清单:

#define uint8

unsigned char

#define uint32

unsigned int

#define N

uint32 sum;

// 使用加法运算来计算 1+2+3+...+(N-1)+N 的值。(N>0)

void Main(void)

{ uint32 i;

sum = 0;

for(i=0;i<=N;i++)

{ sum += i;

}

while(1);

}

程序清单3.9

简单的起动代码

;起动文件。初始化 C 程序的运行环境,然后进入C 程序代码。

IMPORT

|Image$$RO$$Limit|

IMPORT

|Image$$RW$$Base|

IMPORT

|Image$$ZI$$Base|

IMPORT

|Image$$ZI$$Limit|

IMPORT

Main

;声明C 程序中的Main()函数

AREA

Start,CODE,READONLY

;声明代码段Start

ENTRY

;标识程序入口

CODE32

;声明32 位ARM 指令

Reset

LDR

SP,=0x40003F00

;初始化C 程序的运行环境

LDR

R0,=|Image$$RO$$Limit|

LDR

R1,=|Image$$RW$$Base|

LDR

R3,=|Image$$ZI$$Base|

CMP

R0,R1

BEQ

LOOP1

LOOP0

CMP

R1,R3

LDRCC

R2,[R0],#4

STRCC

R2,[R1],#4

BCC

LOOP0

LOOP1

LDR

R1,=|Image$$ZI$$Limit|

MOV

R2,#0

LOOP2

CMP

R3,R1

STRCC

R2,[R3],#4

BCC

LOOP2

B

Main

;跳转到 C 程序代码Main()函数

END

篇6:嵌入式实验报告

专业 电子信息工程 学号 666666 _ 姓名_ zzc____ __ 年月_ 2017.4 __

实验一 嵌入式开发环境的建立

一. 实验目的

学习如何安装试验系统的软件平台,如何搭建和如何进行软件平台和硬件平台的连接,以及学习软件的使用

二.

实验设备

PC机、嵌入式ARM试验箱

三. 实验过程

1.安装Keil uVision4 软件

2.连接试验箱的电源线,将串口线以及测试线连接到电脑

四. 实验结果

五. 心得体会。

实验二 存储器实验

一. 实验目的

1.了解S3C2410处理器的内部存储空间分配; 2.掌握对存储区配置的方法; 3.掌握对存储区进行读写访问的方法

二. 实验设备

Embest EduKit-IV平台,ULINK2仿真器套件,PC机 uVision IDE for ARM集成开发环境

三. 实验原理

S3C2410 处理器的存储器可以为片存储器访问提供必要的控制信号

四. 实验步骤

1.准备实验环境,连接电源线 仿真器 串口线

2.串口接收设置 波特115200,1位停止位,无奇偶检验位,无硬件流控制

3.运行uVision4 软件,打开工程,编译,然后给实验平台上电使用DeBug运行

五. 实验结果

六,心得体会。

实验三 LED控制实验

一. 实验目的

掌握利用S3C2410 芯片地址总线扩展的I/O来驱动LED显示 了解ARM芯片中利用总线扩展I/O口的使用方法

二.实验设备

Embest EduKit-IV平台,ULINK2仿真器套件,PC机 uVision IDE for ARM集成开发环境

二. 实验内容

编写程序,控制实验平台的发二极管LED1,LED2,LED3,LED4,使它们按照顺序点亮熄灭

三. 实验原理

LED1-4 这4个LED采用共阳极的接法,分别与SYSLED1-4相连,通过SYSLED1-4引脚的高低电平来控制发光二极管的亮与灭,输出高电平是二极管熄灭,反之二极管亮

四. 实验步骤

1.准备实验环境,连接电源线 仿真器 串口线

2.串口接收设置 波特115200,1位停止位,无奇偶检验位,无硬件流控制

3.运行uVision4 软件,打开工程,编译,然后给实验平台上电使用DeBug运行,观察结果

六. 实验结果

七,心得体会。

本次实验,我了解到了中断控制器的工作原理。在网上找到程序,在老师与组员的帮助下对程序进行了比较好的理解。对中断程序有了一定的认识。

实验四 按键中断实验

一.实验目的

1.通过实验掌握S3C2410的中断控制寄存器的使用; 2.通过实验掌握S3C2410 处理器的中断响应过程; 3.通过实验掌握ARM 处理器的中断方式和中断处理过程; 4.通过实验掌握ARM 处理器中断处理的软件编程方法;

二.实验设备

Embest EduKit-IV平台,ULINK2仿真器套件,PC机 uVision IDE for ARM集成开发环境

三.实验内容

通过编写程序,当用户在试验箱上按下KEY1或KEY2键时,在中断服务子程序中将相关信息打印到串口中,显示在超级终端上

四.实验原理

在本实验平台的主板上设计两路外部按键,当键被按下时,会产生按键中断信号,按键产生的中断信号 经过CPLD逻辑处理后连接到CPU的中断引脚

五. 实验步骤

1.准备实验环境,连接电源线 仿真器 串口线

2.串口接收设置 波特115200,1位停止位,无奇偶检验位,无硬件流控制

3.运行uVision4 软件,打开工程,编译,然后给实验平台上电,使用DeBug运行,在试验箱上按下KEY1 或者KEY2键,然后在超级终端上观察结果

六.实验结果

七,心得体会。

实验五 串口通信实验

一.实验目的

了解S3C2410处理器UART相关控制寄存器的使用 熟悉ARM处理器系统硬件电路中UART接口设计方法 掌握ARM处理器串行通信的软件编程方法。

二.实验设备

Embest EduKit-IV平台,ULINK2仿真器套件,PC机 uVision IDE for ARM集成开发环境

三.实验内容

编写S3C2410处理器的串口通信程序; 监视串行口UART1动作

将UART1接受的字符串返回送显示

四.实验原理

1.S3C2410串行通讯单元,S3C2410 UART单元提供三个独立的异步串行通讯接口,皆可工作与中断和DMA模式。

2.波特率 波特率由一个专用的UART波特率分频寄存器控制 3.UART通信操作 发送数据帧是可编程的,接收帧也是可以编程的 溢出错误 是已接收到的数据在读取之前被新接收的数据覆盖

五. 实验步骤

1.准备实验环境,连接电源线 仿真器 串口线

2.串口接收设置 波特115200,1位停止位,无奇偶检验位,无硬件流控制

3.运行uVision4 软件,打开工程,编译,然后给实验平台上电使用DeBug运行,在电脑键盘上输入字符串,然后在超级终端上观察输入的字符

六. 实验结果

七,心得体会

通过本次串口实验,我对串口通信的知识了解的更透彻,这是在刚开始对串口通信知识不了解的情况下就编程而造成许多错误之后才得到的结果。

实验六 触摸屏实验

一.实验目的

通过实验掌握触摸屏(TSP)的设计与控制方法 掌握S3C2410处理器的A/D转换功能

二.实验设备

Embest EduKit-IV平台,ULINK2仿真器套件,PC机 uVision IDE for ARM集成开发环境

三.实验内容

点击触摸屏的任意位置,将触摸屏坐标转换为液晶对应坐标后显示坐标位置

四. 实验原理

触摸屏安其技术原理课分为五类:矢量压力传感器,电阻式,电容式,红外线式和表面声波式,其中电阻式触摸屏在嵌入式系统中应用最多。

电阻式触摸屏是多层的复合膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电膜,上面再覆盖一层塑料层,它的内表面有一层透明的导电层,在两个导电层之间有细小的隔离点将它们隔开绝缘。当手指触摸屏幕时,平常绝缘层的两层导电层在触摸点位置就有了一个接触点,控制器监测到接触后,其中一面导电层接通Y轴方向的5V均匀电压场,另一导电层将接触点的电压引至控制电路进行A/D

转换,得到电压值5V后,与5V相比即可得到Y轴坐标,同理可得出X轴坐标

五. 实验步骤

1.准备实验环境,连接电源线 仿真器 串口线

2.串口接收设置 波特115200,1位停止位,无奇偶检验位,无硬件流控制

3.运行uVision4 软件,打开工程,编译,然后给实验平台上电使用DeBug运行,在实验平台的触摸屏上点击,然后在超级终端上观察输出的坐标

六. 实验结果

七,心得体会。

实验七 矩阵LED实验

一.实验目的

掌握S3C2410芯片的I/O控制寄存器的配置 了解ARM芯片中复用I/O口的使用方法 掌握矩阵LED的应用原理

二.实验设备

Embest EduKit-IV平台,ULINK2仿真器套件,PC机 uVision IDE for ARM集成开发环境 字模软件

三.实验内容

编写程序,用S3C2410 控制LED点阵,显示一个汉字

四.实验原理

实验平台设计了一16x16的点阵屏,点阵屏有16x16个LED发光二极管,每个发光二极管的可以理解为一个像素点,它们按照行与列的形式整齐排列,通过控制每个LED的亮灭,点阵屏可以与PC机同步显示汉字,英文文本和图形

五. 实验步骤

1.准备实验环境,连接电源线 仿真器 串口线

2.打开字模软件,输入想要输出的字,用字模软件选择C51取模方式 得到字符的代码,将实验用的源代码改成刚取得得到的字符代码 并保存

3.运行uVision4 软件,打开工程,编译,然后给实验平台上电,使用DeBug运行,然后观察 实验平台上的LED点阵显示屏,观察所输出的字,六. 实验结果

七,心得体会。

实验八 ADC转换实验

一.实验目的

了解S3C2410处理器ADC相关控制寄存器的使用 通过实验掌握数模转换(ADC)的原理 掌握S3C2410处理器的ADC转换功能

二.实验设备

Embest EduKit-IV平台,ULINK2仿真器套件,PC机 uVision IDE for ARM集成开发环境

三. 实验内容

设计分压电路,利用S3C2410集成的ADC模块,把分压值转换成数字信号,并通过超级终端和数码管观察转换结果。

四. 实验原理

模拟信号进行AD转换的时候,从启动转换到转换结束输出数字量,需要一定的转换时间,在这个转换时间内,模拟信号要基本保持不变。处理器内部集成采用近似比较算法的8路10位ADC,集成零比较器,内部产生比较时钟信号;支持软件使能休眠模式,以减少电源损耗。五,实验步骤

1.准备实验环境,连接电源线 仿真器 串口线

2.运行uVision4 软件,打开工程,编译,然后给实验平台上电,使用DeBug运行,滑动滑动变阻器 观察超级终端的数据 六,实验结果

上一篇:医院药剂科考试题库下一篇:变电所培训试题