当前位置:文档之家› 嵌入式系统设计实验指导书

嵌入式系统设计实验指导书

嵌入式系统设计实验指导书
嵌入式系统设计实验指导书

嵌入式系统设计实验指导书基于STM32?微控制器

东华理工大学机电学院

刘花香编

2014 年09 月

目录

1 软件安装与环境配置 (4)

1.1 STM32 官方固件库简介 (4)

1.1.1 库开发与寄存器开发的关系 (4)

1.1.2 STM32 固件库与CMSIS 标准讲解 (5)

1.1.3 STM32 官方库包介绍 (7)

1.2 RVMDK 4.12 简介 (10)

1.3 新建基于固件库的RVMDK 工程模板 (10)

1.3.1 MDK4.12 安装破解步骤 (10)

1.3.2 新建工程模板 (13)

1.4 MDK下的程序下载与调试 (27)

1.4.1 STM32软件仿真 (27)

1.4.2 STM32硬件调试 (32)

1.5 RVMDK使用技巧 (36)

1.5.1 代码编辑技巧 (36)

1.5.2 其他小技巧 (39)

2 实验课程 (42)

实验一我的第一个工程 (43)

一、实验目的 (43)

二、实验内容 (43)

三.实验设备 (43)

四、实验步骤(以直接操作寄存器编程为例说明) (43)

五.实验结果及测试 (43)

六、实验说明 (44)

实验二流水灯实验 (45)

一、实验目的 (45)

二、实验内容 (45)

三.实验设备 (45)

四、实验步骤 (45)

五.实验结果及测试 (46)

六、实验说明 (46)

七、实验扩展 (46)

实验三STM32 微控制器外部中断编程 (47)

一、实验目的 (47)

二、实验内容 (47)

三.实验设备 (47)

四、实验步骤 (47)

五.实验结果及测试 (48)

六、实验说明 (48)

七、实验扩展 (48)

实验四STM32 微控制器串口通信编程 (49)

一、实验目的 (49)

二、实验内容 (49)

三.实验设备 (49)

四、实验步骤 (49)

五.实验结果及测试 (51)

六、实验说明 (52)

七、实验扩展 (52)

实验五STM32 微控制器通用定时器编程 (53)

一、实验目的 (53)

二、实验内容 (53)

三.实验设备 (53)

四、实验步骤 (53)

五.实验结果及测试 (54)

六、实验说明 (54)

七、实验扩展 (54)

实验六μC/OS-II 任务基础实验 (55)

一、实验目的 (55)

二、实验内容 (55)

三.实验设备 (57)

四、实验步骤 (57)

五.实验结果及测试 (58)

六、实验说明 (58)

七、实验扩展 (59)

3 附录核心参考程序 (60)

1. 使用寄存器操作一个IO 口,控制GPIOA.12 端口的LED 的闪烁 (60)

2. 使用固件库对一个IO口的操作,控制GPIOA.12 端口的LED的闪烁 (61)

3. 使用固件库对EXTI 编程,检测外部开关信号并报警(核心部分) (62)

4. 使用固件库对USART3编程,实现STM32控制器和上位机通信 (64)

5. 使用固件库对TIM2 编程,控制GPIOA.0 端口的LED闪烁 (67)

6. 在μC/OS-II里面创建1个任务,控制GPIOA.0 端口的LED 的闪烁 (70)

1软件安装与环境配置

本节我们学习如何安装配置STM32 微控制器的软件开发调试环境。我们使用C 语言编写程序――称为源文件;源文件经编译、链接生成机器能识别的机器代码(HEX文件);机器代码下载到目标实验板上的STM32 微控制器的程序存储器中。然后我们通过执行和观察实验板上的实验现象判断程序是否与我们期望的一致,如果不一致还需要返回修改程序。

图 1. 一般的嵌入式软件开发流程

上面这个过程就是一般的嵌入式系统开发流程,可以看出我们需要三种软件:编写源文件的代码编辑软件、编译连接软件、机器代码下载软件。这样的软件很多,本指导书使用的是KEIL公司的Realview MDK 4集成开发调试软件(简称MDK 4),它集成了代码编辑、编译、调试、仿真和代码下载所有功能(调试和代码下载需要硬件仿真器支持);我们使用J-LINK仿真器把机器代码下载到实验板并进行仿真。

1.1 STM32 官方固件库简介

ST(意法半导体)为了方便用户开发程序,提供了一套丰富的STM32 固件库。到底什么是固件库?它与直接操作寄存器开发有什么区别和联系?很多初学用户很是费解,这一节,我们将讲解STM32 固件库相关的基础知识,希望能够让大家对STM32 固件库有一个初步的了解,至于固件库的详细使用方法,我们会在后面的章节一一介绍。

官方包的地址:STM32相关开发工具+文档\固件库\ STM32F10x_StdPeriph_Lib_V3.5.0 1.1.1库开发与寄存器开发的关系

很多用户都是从学51 单片机开发转而想进一步学习STM32 开发,他们习惯了51 单片机的寄存器开发方式,突然一个ST 官方库摆在面前会一头雾水,不知道从何下手。

下面我们将通过一个简单的例子来告诉STM32 固件库到底是什么,和寄存器开发有什么关系?其实一句话就可以概括:固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API)。

在51 的开发中我们常常的作法是直接操作寄存器,比如要控制某些IO 口的状态,我们直接操作寄存器:

P0=0x11;

而在STM32 的开发中,我们同样可以操作寄存器:

GPIOx->BRR = 0x0011;

这种方法当然可以,但是这种方法的劣势是你需要去掌握每个寄存器的用法,你才能正确使用STM32,而对于STM32 这种级别的MCU,数百个寄存器记起来又是谈何容易。于是ST(意法半导体)推出了官方固件库,固件库将这些寄存器底层操作都封装起来,提供一整套接口(API)供开发者调用,大多数场合下,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些函数即可。

比如上面的控制BRR 寄存器实现电平控制,官方库封装了一个函数:

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

GPIOx->BRR = GPIO_Pin;

}

这个时候你不需要再直接去操作BRR 寄存器了,你只需要知道怎么使用GPIO_ResetBits()这个函数就可以了。在你对外设的工作原理有一定的了解之后,你再去看固件库函数,基本上函数名字能告诉你这个函数的功能是什么,该怎么使用,这样是不是开发会方便很多?

任何处理器,不管它有多么的高级,归根结底都是要对处理器的寄存器进行操作。但是固件库不是万能的,您如果想要把STM32 学透,光读STM32 固件库是远远不够的。你还是要了解一下STM32 的原理,而这些原理了解了,你在进行固件库开发过程中才可能得心应手游刃有余。

1.1.2STM32 固件库与CMSIS 标准讲解

前一节我们讲到,STM32 固件库就是函数的集合,那么对这些函数有什么要求呢?这里就涉及到一个CMSIS 标准的基础知识,这部分知识可以从《Cortex-M3 权威指南》中了解到,我们这里只是对权威指南的讲解做个概括性的介绍。经常有人问到STM32 和ARM 以及Cortex-M3是什么关系这样的问题,其实ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而TI,ST 这样的公司,他们并不做标准,他们是芯片公司,他们是根据ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做Cortex-M3 芯片,他们的内核结构都是一样的,不同的是他们的存储器容量,片上外设,IO 以及其他模块的区别。所以你会发现,不同公司设计的Cortex-M3 芯片他们的端口数量,串口数量,控制方法这些都是有区别的,这些资源他们可以根据自己的需求理念来设计。同一家公司设计的多种Cortex-m3 内核芯片的片上外设也会有很大的区别,比如STM32F103RBT 和STM32F103ZET,他们的片上外设就有很大的区别。我们可以通过《Cortex-M3 权威指南》中的一个图来了解一下:

图1.1.1 Cortex-m3 芯片结构

从上图可以看出,芯片虽然是芯片公司设计,但是内核却要服从ARM 公司提出的Cortex-M3内核标准了,理所当然,芯片公司每卖出一片芯片,需要向ARM 公司交一定的授权费。

既然大家都使用的是Cortex-M3 核,也就是说,本质上大家都是一样的,这样ARM 公司为了能让不同的芯片公司生产的Cortex-M3 芯片能在软件上基本兼容,和芯片生产商共同提出了一套标准CMSIS 标准(Cortex Microcontroller Software Interface Standard ) ,翻译过来是“ARM Cortex?微控制器软件接口标准”。ST 官方库就是根据这套标准设计的。这里我们引用参考资料里面的图片来看看基于CMSIS 应用程序基本结构:

图1.1.2 基于CMSIS 应用程序基本结构

CMSIS 分为3 个基本功能层:

1) 核内外设访问层:ARM 公司提供的访问,定义处理器内部寄存器地址以及功能函

数。

2) 中间件访问层:定义访问中间件的通用API,也是ARM 公司提供。

3) 外设访问层:定义硬件寄存器的地址以及外设的访问函数。

从图中可以看出,CMSIS 层在整个系统中是处于中间层,向下负责与内核和各个外设直接打交道,向上提供实时操作系统用户程序调用的函数接口。如果没有CMSIS 标准,那么各个芯片公司就会设计自己喜欢的风格的库函数,而CMSIS 标准就是要强制规定,芯片生产公司设计的库函数必须按照CMSIS 这套规范来设计。

其实不用这么讲这么复杂的,一个简单的例子,我们在使用STM32 芯片的时候首先要进行系统初始化,CMSIS 规范就规定,系统初始化函数名字必须为SystemInit,所以各个芯片公司写自己的库函数的时候就必须用SystemInit 对系统进行初始化。CMSIS 还对各个外设驱动文件的文件名字规范化,以及函数名字规范化等等一系列规定。上一节讲的函数GPIO_ResetBits 这个函数名字也是不能随便定义的,是要遵循CMSIS 规范的。

至于CMSIS 的具体内容就不必多讲了,需要了解详细的朋友可以到网上搜索资料,相关资料可谓满天飞。

1.1.3STM32 官方库包介绍

这一节内容主要讲解ST 官方提供的STM32 固件库包的结构。ST 官方提供的固件库完整包可以在官方下载。固件库是不断完善升级的,所以有不同的版本,我们使用的是V3.5 版本的固件库大家可以到光盘目录: STM32相关开发工具+文档\固件库\ STM32F10x_StdPeriph_Lib_V3.5.0下面查看。下面看看官方库包的目录结构:

图 1.1.3 官方库包根目录

图 1.1.4 官方库目录列表

1.1.3.1 文件夹介绍

Libraries 文件夹下面有CMSIS 和STM32F10x_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件。其中CMSIS 目录下面是启动文件,STM32F10x_StdPeriph_Driver 放的是STM32 固件库源码文件。源文件目录下面的inc 目录存放的是stm32f10x_xxx.h 头文件,无需改动。src 目录下面放的是stm32f10x_xxx.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应。这里的文件也是固件库的核心文件,每个外设对应一组文件。

Libraries 文件夹里面的文件在我们建立工程的时候都会使用到。

Project 文件夹下面有两个文件夹。顾名思义,STM32F10x_StdPeriph_Examples 文件夹下面存放的的ST 官方提供的固件实例源码,在以后的开发过程中,可以参考修改这个官方提供的实例来快速驱动自己的外设,很多开发板的实例都参考了官方提供的例程源码,这些源码对以后的学习非常重要。STM32F10x_StdPeriph_Template 文件夹下面存放的是工程模板。

Utilities 文件下就是官方评估板的一些对应源码,这个可以忽略不看。

根目录中还有一个stm32f10x_stdperiph_lib_um.chm 文件,直接打开可以知道,这是一个固件库的帮助文档,这个文档非常有用,只可惜是英文的,在开发过程中,这个文档会经常被使用到。

1.1.3.2 关键文件介绍

下面我们要着重介绍Libraries 目录下面几个重要的文件。

core_cm3.c 和core_cm3.h 文件位于\Libraries\CMSIS\CM3\CoreSupport 目录下面的,这个就是CMSIS 核心文件,提供进入M3 内核接口,这是ARM 公司提供,对所有CM3 内核的芯片都一样。你永远都不需要修改这个文件,所以这里我们就点到为止。

和CoreSupport 同一级还有一个DeviceSupport 文件夹。DeviceSupport\ST\STM32F10x文件夹下面主要存放一些启动文件以及比较基础的寄存器定义以及中断向量定义的文件。

图 1.1.5 DeviceSupport\ST\STM32F10x 目录结构

这个目录下面有三个文件:system_stm32f10x.c, system_stm32f10x.h 以及stm32f10x.h

文件。其中system_stm32f10x.c 和对应的头文件system_stm32f10x.h 文件的功能是设置系统以及总线时钟,这个里面有一个非常重要的SystemInit()函数,这个函数在我们系统启动的时候都会调用,用来设置系统的整个时钟系统。

stm32f10x.h 这个文件就相当重要了,只要你做STM32 开发,你几乎时刻都要查看这个文件相关的定义。这个文件打开可以看到,里面非常多的结构体以及宏定义。这个文件里面主要是系统寄存器定义申明以及包装内存操作,对于这里是怎样申明以及怎样将内存操作封装起来的,我们在后面的章节“MDK 中寄存器地址名称映射分析”中会讲到。

在DeviceSupport\ST\STM32F10x 同一级还有一个startup 文件夹,这个文件夹里面放的文件顾名思义是启动文件。在\startup\arm 目录下,我们可以看到8 个startup 开头的.s 文件。

图1.1.6 startup 文件

这里之所以有8 个启动文件,是因为对于不同容量的芯片启动文件不一样。对于103 系列,主要是用其中3 个启动文件:

startup_stm32f10x_ld.s:适用于小容量产品

startup_stm32f10x_md.s:适用于中等容量产品

startup_stm32f10x_hd.s:适用于大容量产品

这里的容量是指FLASH 的大小判断方法如下:

小容量:FLASH≤32K

中容量:64K≤FLASH≤128K

大容量:256K≤FLASH

我们实验室采用的103RCT6 是属于大容量产品,所以我们的启动文件选择startup_stm32f10x_hd.s。

启动文件到底什么作用,其实我们可以打开启动文件进去看看。启动文件主要是进行堆栈之类的初始化,中断向量表以及中断函数定义。启动文件要引导进入main 函数。Reset_Handler中断函数是唯一实现了的中断处理函数,其他的中断函数基本都是死循环。Reset_handler 在我们系统启动的时候会调用,下面让我们看看Reset_handler 这段代码:; Reset handler

Reset_Handler PROC

EXPORT Reset_Handler [WEAK]

IMPORT __main

IMPORT SystemInit

LDR R0, =SystemInit

BLX R0

LDR R0, =__main

BX R0

ENDP

这里面要引导进入main 函数,同时在进入main 函数之前,首先要调用SystemInit 系统初始化函数。

还有其他几个文件stm32f10x_it.c,stm32f10x_it.h 以及stm32f10x_conf.h 等文件,这里就不一一介绍。stm32f10x_it.c 里面是用来编写中断服务函数,中断服务函数也可以随意编写在工程里面的任意一个文件里面。

stm32f10x_conf.h 文件打开可以看到一堆的#include,这里你建立工程的时候,可以注释掉一些你不用的外设头文件。这里相信大家一看就明白。

这一节我们就简要介绍到这里,后面我们会介绍怎样建立基于V3.5 版本固件库的工程模块。

1.2 RVMDK 4.12 简介

RVMDK即RealView MDK(Microcontroller Development kit),是ARM 公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK 集成了业内最领先的技术,包括uVision4 集成开发环境与RealView 编译器。支持ARM7、ARM9 和最新的Cortex-M3/M1/M0 核处理器,自动配置启动代码,集成Flash 烧写模块,强大的Simulation 设备模拟,性能分析等功能,与ARM 之前的工具包ADS 等相比,RealView 编译器的最新版本可将性能改善超过20%。

Keil公司开发的ARM开发工具MDK,是用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照计划完成项目。

1.3 新建基于固件库的RVMDK 工程模板

在前面的章节我们介绍了STM32 官方库包的一些知识,这些我们将着重讲解建立基于固件库的工程模板的详细步骤。在此之前,首先我们要准备如下资料:

1) V3.5 固件库包:STM32F10x_StdPeriph_Lib_V3.5.0 这是ST 官网下载的固件库完整版,目录:STM32相关开发工具+文档\固件库\STM32F10x_StdPeriph_Lib_V3.5.0

2) MDK4.12 开发环境(我们的板子的开发环境目前是使用这个版本)。

目录:STM32相关开发工具+文档\开发工具\keilMDK4.12破解注册版

3) MDK 注册机,与MDK 同一目录下面有。

目录:STM32相关开发工具+文档\开发工具\keilMDK4.12破解注册版\ KEIL_Lic.exe

1.3.1MDK4.12 安装破解步骤

1)找到MDK 的安装文件并点击图标,这是MDK 的安装文件,和安装其他软件一样,相信大家都会明白,直到点击“Finish”之后,MDK 便安装完成。2)添加License Key

MDK 针对每台机会有一个CID,copy 这个CID 到注册机处生成License Key,然后再

将这个License Key 添加到MDK 里面去注册。详细步骤后面会一一介绍。

(1) 打开运行MDK。这里要注意,有些版本的windows 系统(如Vista)需要右键点击快捷方式选择“以管理员身份运行”,因为注册license 需要管理员权限。

(2) 点击:File->License Management,弹出一个License Management 界面,copy 界面中的(CID):

图 1.3.1 License Management 选择

图 1.3.2 获取CID

(3) 打开(STM32相关开发工具+文档\开发工具\keilMDK4.12破解注册版\

KEIL_Lic.exe)下面的注册机,注册机我们会跟MDK 安装包放在

同一目录下面。

图 1.3.3 生成License Key

(4) 接着会出现注册界面如图1. 2.3所示,黏贴刚才复制的CID 到CID 输入框,然后Target 选择ARM 之后,点击“Generate”,30 位的License Key 会在下图红色圈出的部分生成。License Key 的格式:D0DRA-1QWX6-Z7LRU-SC1GL-BXKR2-43UL7。

(5) 将这个License Key 黏贴到Keil 的License Management 界面的New License Id Code 一栏,然后点击“Add LIC”,添加成功后会出现成功提示。然后点击Close 关闭这个界面即可。到此License Key 便添加完成。

图 1.3.4 添加License Key 成功

1.3.2新建工程模板

1.3.

2.1 为工程建立文件夹

在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为STM32_template(也可以自己取名字)。并在该文件夹下分别创建7 个子文件夹;

图 1.3.5 新建文件夹

CMSIS用来存放核心文件;

Listing用来存放编译过程文件以及hex文件;

Output用来存放生成目标文件;

Project用来存放MDK工程文件;

StartUp用来存放启动文件;

StdPeriph_Driver文件夹顾名思义用来存放ST 官方提供的库函数源码文件;

User用来存放主函数文件main.c,以及其他用户编写的文件。

下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。

1)打开官方固件库包,定位到我们之前准备好的固件库包的目录

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,将目录下面的src, inc 文件夹copy 到我们刚才建立的StdPeriph_Driver文件夹下面。src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件,您不妨打开这两个文件目录过目一下里面的文件,每个外设对应一个.c 文件和一个.h 头文件。

图 1.3.6

Copy完后:

图 1.3.7

2)下面我们要将固件库包里面相关的核心文件复制到我们的工程目录CMSIS之下。

图 1.3.8

CMSIS文件夹中添加的文件来源于下面两个目录:

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

请自己找到相应文件并拷贝到文件夹CMSIS下。

图 1.3.9

3)定位到目录:

将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到USER 目录下面。

图 1.3.10

4)然后定位到目录

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\ startup\arm下面,将里面startup_stm32f10x_hd.s 文件复制到StartUp文件夹下面。这里我们之前已经解释了不同容量的芯片使用不同的启动文件,我们的芯片STM32F103RCT6 是大容量芯片,所以选择这个启动文件。

文件复制到此结束。

5)双击Keiluvision4 打开软件;

6)选择Project-New uVision Project;

点击Keil 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹STM32-template/Project之下,我们的工程文件就都保存到Project文件夹下面。工程命名为STM32-template,点击保存。

图 1.3.11新建工程

图 1.3.12 定义工程名称

7)接下来会出现一个选择Device 的界面,就是选择我们的芯片型号,这里我们定位到STMicroelectronics 下面的STM32F103RC(针对我们的实验室是这个型号,如果是其他芯片,请选择对应的型号即可)。

图 1.3.13 选择芯片型号

8)弹出对话框“Copy STM32 Startup Code to project ….”,询问是否添加启动代码到我们

程中,这里我们选择“否”,因为我们使用的ST 固件库文件已经包含了启动文件。

图 1.3.14

1.3.

2.2 创建工程管理

前面4个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入到我们的工程中去。右键点击Target1,选择Manage Components在前面我们已经创建了一个工程(此时还是一个空工程);

1)右击Target1,并选择“Manage Components”;

图 1. 3.15 点击Management Components

图 1.3.16 添加Groups和Files

2)Project Targets 一栏,我们将Target1 名字修改为STM32_template,然后在Groups 一

栏删掉一个Source Group1,建立四个Groups:User,CMSIS,StdPeriph_Driver和StartUp。然后点击OK,可以看到我们的Target名字以及Groups 情况。

图 1.3.17 添加好Groups后

3)下面我们往Group 里面添加我们需要的文件。我们选择需要添加文件的Group,这里

第一步我们选择StdPeriph_Driver ,然后点击右边的Add Files, 定位到我们刚才建立的目录STM32_template /StdPeriph_Driver/src下面,将里面所有的文件选中(Ctrl+A),然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件。

这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。例如我只用GPIO,我可以只用添加stm32f10x_gpio.c 而其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。

图 1.3.18 StdPeriph_Driver添加好文件后

4) 用同样的方法,将Groups定位到User、CMSIS和StartUp下面,添加需要的文件。这里要为每个Group 添加同名文件夹下的源文件或者头文件,为了便于查看代码,我把源文件和头文件都添加进Group 中(除StdPeriph_Driver),在这里注意过滤文件的类型。

这样我们需要添加的文件已经添加到我们的工程中去了,最后点击OK,回到工程主界面。

图 1.3.19 User添加好文件后

嵌入式系统综合实验一

嵌入式系统综合实验一

学号: 装 订 线 实验报告 课程名称: 嵌入式系统设计 指导老师:马永昌 成绩:________________ 实验名称:综合实验一dht11和人体感应传感器 实验类型:验证型 同组学生姓名:孙凡原 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 1.掌握字符设备驱动程序的基本结构和开发方法 2.掌握用户空间调用设备驱动的方法 3.掌握用户和内核的交互 二、实验内容和原理 专业:测控技术与仪器 姓名:颜睿

装订 线1.编写温湿度传感器DHT11驱动,传输打印温湿度信息 2.编写人体感应传感器驱动,控制LED灯亮灭 原理: 温湿度传感器DHT11: 1.引脚图 实际使用传感器没有NC引脚 2.数据采集 a.数据总时序 用户主机发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出40bit 的数据,幵触发一次信采集。

b.主机发送起始信号 连接DHT11的DATA引脚的I/O口输出低电平,且低 电平保持时间不能小于18ms,然后等待DHT11 作出 应答信号。 装 线 订 c.检测从机应答信号 DHT11 的DATA 引脚检测到外部信号有低电平时, 等待外部信号低电平结束,延迟后DHT11 的DATA 引脚处于输出状态,输出80 微秒的低电平作为应答信 号,紧接着输出80 微秒的高电平通知外设准备接收数 据。

装 订线 d.接收数据 (1)数据判定规则 位数据“0”的格式为:50 微秒的低电平和26-28 微秒的高电平,位数据“1”的格式为:50 微秒的低电平加70微秒的高电平。 接收数据时可以先等待低电平过去,即等待数据线拉高,再延时60us,因为60us大于28us且小于70us,再检测此时数据线是否为高,如果为高,则数据判定为1,否则为0。 (2)数据格式 一次传送40 位数据,高位先出 8bit 湿度整数数据+ 8bit 湿度小数数据+8bit 温度整

嵌入式系统及应用 实验大纲

《嵌入式系统及应用》课程实验 一、实验课程的性质、目的和任务 性质:《嵌入式系统及应用》课程是自动化专业的专业基础课程,本实验课是该课程教学大纲中规定必修的实验教学内容。 目的和任务:通过实验环节来巩固和加深学生对嵌入式系统的理解,使学生掌握MCS51单片机和ARM的基本原理和应用技术。通过熟悉MCS51开发环境和ARM集成开发环境,使学生掌握嵌入式系统开发的一般规律和方法。在集成开发环境下,进行系统功能程序的编写和调试的训练,掌握嵌入式系统软硬件调试的一般方法和系统设计的能力。 二、实验内容、学时分配及基本要求

三、考核及实验报告 (一)考核 本课程实验为非独立设课,实验成绩占课程总成绩的15%,综合评定实验成绩。(二)实验报告 实验报告应包括: 实验名称 实验目的 实验内容与要求 设计思路(如:分析、程序流程图等) 实验步骤 实验代码(含必要注释) 实验结果分析 实验小结(本题调试过程中遇到的问题和解决方法、注意事项、心得体会等)注:综合型实验需写出系统功能、设计过程 实验报告的要求: 实验报告以文本形式递交,实验报告要书写规范、文字简练、语句通顺、图表清晰。 四、主要仪器设备 硬件:微型计算机;嵌入式系统开发平台。 软件:Keil C51;ADT 五、教材及参考书 教材

[1] 高锋.单片微型计算机原理与接口技术(第二版).北京:科学出版社,2007 [2] 自编.嵌入式系统及应用 参考书 [1] 王田苗.嵌入式系统设计与实例开发.北京:清华大学出版社,2003 [2] 陈赜.ARM9 嵌入式技术及Linux高级实践教程.北京:北京航空航天大学出版社,2005 [3] 李忠民等.ARM嵌入式VxWorks实践教程.北京:北京航空航天大学出版社,2006

嵌入式系统设计实训报告

上海海洋大学 嵌入式系统设计项目实训报告 (2016- 2017第_1_学期) 专业:______计算机科学与技术_________________ 实训项目:____嵌入式应用——电子相册______ __ 实训时间:__2016_______年__12___月___26___日 实训成员:_________孙嘉晨1351127____________ _________周力1351137______________ __________________________________ __________________________________ 指导老师:________池涛_____________________ 计算机科学技术系 2015年11月制

一、实训目的 通过电子相册的制作,了解S3C2440芯片的构造,了解外围SDRAM及NANDFLASH 的存储结构。学会运用定时器中断及通过LCD显示图片,加强自身对嵌入式的理解,提升自身的实践能力。 二、实训内容 以S3C2440芯片为核心,通过外围SDRAM及NANDFLASH存储实现照片的存储,结合定时器中断,实现LCD显示图片,完成简易电子相册的设计。 三、实训设备 硬件:mini2440硬件平台 软件:bmp2h.exe软件进行图片转换 CodeWarrior for ARM Developer Suite软件 四、实训设计方案 (包括项目功能需求分析,方案设计,完成时间规划) 需求分析: 在上世纪末本世纪初,电子相册呈现迅速发展的势头,普及型数码相机的分辨率由200万象素增长到现在的800—1500万象素,价格也由300美元左右下降到现在的120美元左右。随着数码相机的日益普及,作为一种以数字照片的保存、回放和浏览为核心功能的产品——电子相册自然迎合了消费者的需求。 方案设计: 软件设计:代码包含2个模块,LCD模块包含两个文件,进行图片的显示与编辑;Timer 模块包含6个文件,其中timer.c和timer.h文件完成定时器的初始化,interrupt.h和interrupt.c 文件完成定时器中断函数的初始化,isrservice.h和isrservice.c文件完成定时器中断处理,pic.c 和pic.h等文件是由图片生产的C语言数组文件 硬件方面选择了S3C2440为核心的架构。基于ARM的微处理器具有低功耗、低成本、高性能等特点,ARM采用RISC(精简指令集计算机)架构和流水线结构,使用了大量的寄存器,具有极高的工作效率。其中,RISC架构具有如下特点:固定长度的指令格式,指令归整、简单,基本寻址方式只有2~3种,使用单周期指令,便于流水线操作。因此选择此硬件方案的优势有如下: (1)系统芯片功能强大,实现的功能多,对于新的多媒体格式支持性好,只需要安装更新的软件; (2)硬件电路简单,可采用标准电路,不需耗费过多的资源(人力,资金等); (3)可以在硬件上增加模块,留作二次开发使用,极为方便; (4)S3C2440是一个比较成熟的芯片,技术积累齐全; (5)S3C2440支持丰富的存储卡接口。 完成时间规划:第一天分析实训项目实现过程,完成软件方面内容,编写代码。 第二天实现硬件分析,完成硬件连接,对项目进行测试。 第三天完成实训内容,提交报告。 五、实训项目实现

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

(完整word版)嵌入式系统设计与应用

嵌入式系统设计与应用 本文由kenneth67贡献 ppt文档可能在W AP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 课程名称:课程名称:嵌入式系统设计与应用 总学时:其中讲课36学时,上机实践环节12 36学时12学时总学时:其中讲课36学时,上机实践环节12学时教材:嵌入式系统设计教程》教材:《嵌入式系统设计教程》电子工业出版社马洪连参考书:参考书:1、《嵌入式系统开发与应用》北航出版社、田泽编著. 嵌入式系统开发与应用》北航出版社、田泽编著. 2、《ARM体系结构与编程》清华大学出版社杜春雷编著ARM体系结构与编程体系结构与编程》嵌入式系统设计与实例开发—ARM ARM与C/OS3、《嵌入式系统设计与实例开发ARM与μC/OS-Ⅱ》清华大学出版社王田苗、魏洪兴编著清华大学出版社王田苗、ARM嵌入式微处理器体系结构嵌入式微处理器体系结构》4、《ARM嵌入式微处理器体系结构》北航出版社、马忠梅等著. 北航出版社、马忠梅等著. 张石.ARM嵌入式系统教程嵌入式系统教程》5、张石.《ARM嵌入式系统教程》.机械工业出版2008年社.2008年9月 1 课程内容 绪论:绪论: 1)学习嵌入式系统的意义2)高校人才嵌入式培养情况嵌入式系统设计(实验课)3)嵌入式系统设计(实验课)内容安排 第1章嵌入式系统概况 1.1 嵌入式系统的定义1.2 嵌入式系统的应用领域及发展趋势1.3 嵌入式系统组成简介 第2章嵌入式系统的基本知识 2.1 2.2 2.3 嵌入式系统的硬件基础嵌入式系统的软件基础ARM微处理器的指令系统和程序设计ARM微处理器的指令系统和程序设计 2 第3章 3.1 3.2 3.3 基于ARM架构的嵌入式微处理器基于ARM架构的嵌入式微处理器ARM 概述嵌入式微处理器的组成常用的三种ARM ARM微处理器介绍常用的三种ARM 微处理器介绍 第4章 4.1 4.2 4.3 4.4 4.5 4.6 嵌入式系统设计 概述嵌入式系统的硬件设计嵌入式系统接口设计嵌入式系统人机交互设备接口嵌入式系统的总线接口和网络接口设计嵌入式系统中常用的无线通信技术 3 第5章嵌入式系统开发环境与相关开发技术 5.1 5.2 5.3 5.4 5.5 6.1 6.2 6.3 6.4 概述嵌入式系统的开发工具嵌入式系统调试技术嵌入式系统开发经验嵌入式系统的Bootloader Bootloader技术嵌入式系统的Bootloader技术μC/OS-II操作系统概述C/OS-II操作系统概述ADS开发环境ARM ADS开发环境C/OS-II操作系统在ARM系统中的移植操作系统在ARM μC/OS-II操作系统在ARM系统

南邮嵌入式系统B实验报告2016年度-2017年度-2

_* 南京邮电大学通信学院 实验报告 实验名称:基于ADS开发环境的程序设计 嵌入式Linux交叉开发环境的建立 嵌入式Linux环境下的程序设计 多线程程序设计 课程名称嵌入式系统B 班级学号 姓名 开课学期2016/2017学年第2学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 三、实验过程与结果 1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。 代码1:使用C内嵌汇编 #include int find_gcd(int x,int y) { int gcdnum; __asm { MOV r0, x MOV r1, y LOOP: CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE LOOP MOV r3, r0 MOV gcdnum,r3 //stop // B stop // END } return gcdnum; } int main() { int a; a = find_gcd(18,9);

printf("gcdnum:%d\n",a); return 0; } 代码2:使用纯汇编语言 AREA example1,CODE,readonly ENTRY MOV r0, #4 MOV r1, #9 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start MOV r3, r0 stop B stop END 2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。 代码1:使用纯汇编语言 AREA examp,CODE,READONL Y ENTRY MOV R0,#10 MOV R1,#30 MOV R2,#20 Start CMP R0,R1 BLE lbl_a CMP R0,R2 MOVGT R3,R0 MOVLE R3,R2 B lbl_b lbl_a CMP R1,R2 MOVGT R3,R1 MOVLE R3,R2 lbl_b B . END 代码2:使用C内嵌汇编语言 #include int find_maxnum(int a,int b,int c)

嵌入式系统综合实验一

实验名称: 姓名: 学号: 装 订 线 P.1 实验报告 课程名称: 嵌入式系统设计 指导老师:马永昌 成绩:________________ 实验名称:综合实验一dht11和人体感应传感器 实验类型:验证型 同组学生姓名:孙凡原 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 1.掌握字符设备驱动程序的基本结构和开发方法 2.掌握用户空间调用设备驱动的方法 3.掌握用户和内核的交互 二、实验内容和原理 1.编写温湿度传感器DHT11驱动,传输打印温湿度信息 2.编写人体感应传感器驱动,控制LED 灯亮灭 原理: 温湿度传感器DHT11: 1.引脚图 实际使用传感器没有NC 引脚 2.数据采集 a.数据总时序 用户主机发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发 专业:测控技术与仪器 姓名:颜睿 学号:3130103850 日期:2018.4.28 地点:创客空间

装订线送响应信号,送出40bit 的数据,幵触发一次信采集。 b.主机发送起始信号 连接DHT11的DATA引脚的I/O口输出低电平,且低电平保持时间不能小于18ms,然后等待DHT11 作出应答信号。 c.检测从机应答信号 DHT11 的DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后DHT11 的DATA引脚处于输出状态,输出80 微秒的低电平作为应答信号,紧接着输出80 微秒的高电平通知外设准备接收数据。 d.接收数据 (1)数据判定规则 位数据“0”的格式为:50 微秒的低电平和26-28 微秒的高电平,位数据“1”的格式为:50 微秒的低电平加70微秒的高电平。 接收数据时可以先等待低电平过去,即等待数据线拉高,再延时60us,因为60us大于28us且小于70us,再检测此时数据线是否为高,如果为高,则数据判定为1,否则为0。

嵌入式系统设计实验四

实验报告 课程名称: 嵌入式系统设计 指导老师:马永昌 成绩:________________ 实验名称:实验四C 语言裸机编程 实验类型:验证型 同组学生姓名:__孙凡原_______ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 ? 初步了解C 运行库 ? 初步了解gcc arm 常用编译选项 ? 了解ARM 中断处理过程 二、实验内容和原理 ? 编写C 裸机代码实现跑马灯,通过控制Timer 中断实现 ? 通过控制uart 串口进行调试打印 三、主要仪器设备 树莓派、PC 机 四、操作方法和实验步骤 1 通过定时器产生中断,控制gpio ,实现跑马灯 2 控制uart 控制器,产生调试打印。 五、实验数据记录和处理 1.主程序arm.c 注释 //包含头文件 #include #include #include #include "rpi-aux.h" #include "rpi-armtimer.h" #include "rpi-gpio.h" #include "rpi-interrupts.h" #include "rpi-systimer.h" #include "rpi-led.h" /** Main function - we'll never return from here */ void kernel_main( unsigned int r0, unsigned int r1, unsigned int atags ) 专业:测控技术与仪器 姓名:颜睿 学号:3130103850 日期:2018.3.28 地点:创客空间

嵌入式系统——实验1

《嵌入式系统设计(实验课)》内容安排 《嵌入式系统设计(实验课)》是《嵌入式系统设计》课程的一个重要环节。通过实验,学生可以对嵌入式系统的设计与开发过程有更深地体会。实验课共八次,每次2学时,实验内容结合课程内容,介绍一般的实验开发流程和软件硬件开发环境,并辅之以典型的嵌入式程序设计实例,使学生掌握基本的嵌入式软件开发技能。大量的具有实际应用背景的实验,更将理论与实践结合起来,使实验内容更加生动。 实验报告要求 一、实验名称: 说明:本次实验的名称 二、实验目的: 说明:本次实验的主要目的,参考每次的实验指导书 三、实验环境: 说明:实验用到的硬件软件环境。 四、实验内容与步骤: 说明:实现实验目的而进行的实验内容,如果有步骤要求则简要列出步骤 五、实验报告总结: 说明:对本次实验的总结, 1.画出主函数的程序流程图, 2.重写主程序.或者:自拟一个新的应用,参照本次实验的主程序,重新设计主程序并给出详尽注释。 3.其他,本次实验得到了什么?收获是什么?有些什么别的想法? 六、建议与意见: 说明:对于此次实验内容或在实验过程中有任何问题或建议,以及对于改善实验效果有什么建议,均可提出。 在书写实验报告的过程中,主要是帮助自己回顾和总结实验。重点放在第五部分,前四项可以十分简要地列写,第六项有则提出,无则不写。

实验一嵌入式微处理器系统的开发环境 一、实验环境 PC机一台 软件: ADS 1.2集成开发环境一套 二、实验目的 1.了解嵌入式系统及其特点; 2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序 三、实验内容 1.嵌入式系统的开发环境、基本配置 2.使用汇编指令完成简单的加法实验 四、实验步骤 (1)在D:\新建一个目录,目录名为experiment。 (2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。启动ADS 1.2 如图1-1所示: 图1-1启动ADS1.2 (3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮, 也可以在“File”菜单中选择“New…”菜单。这样就会打开一个如图1-2 所示的对话框。选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。 图1-2 新建文件 在这个对话框中为用户提供了7 种可选择的工程类型:

嵌入式系统设计性实验报告

嵌入式系统设计性实验报告 水温控制系统 院别:控制工程学院 专业:自动 学号:5090633 姓名:邱飒飒 指导老师:孙文义 2012年6月8日

嵌入式系统设计性实验报告 作者:邱飒飒班级:50906 学号:5090633 摘要:在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。其中,温度控制也越来越重要。在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而大大的提高产品的质量和数量。因此,单片机对温度的控制问题是工业生产中经常会遇到的控制问题.该实验设计基于飞思卡尔MC9S12DG128开发板平台,根据实验任务要求,完成了基于单片机的水温自动控制系统的设计该实验设计基于飞思卡尔MC9S12DG128开发板平台,根据实验任务要求,完成了水温自动控制系统的设计。 关键字:水温控制单片机MC9S12DG128 一、系统设计的功能 1.1 水温控制系统设计任务和要求 该系统为一实验系统,系统设计任务: 设计并制作一个水温自动控制系统,控制对象为1升净水,容器为搪瓷器皿。 水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。同时满足以下要求: (1)温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。 (2)环境温度降低时(例如用电风扇降温)温度控制的静态误差≤1℃。 (3)用十进制数码管显示水的实际温度保留一位小数。 (4)采用适当的控制方法(如数字PID),当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。 (5)温度控制的静态误差≤0.2℃。 (6)从串口输出水温随时间变化的数值。 1.2 水温控制系统部分 水温控制系统是一个过程控制系统,组成框图如下所示,有控制器、执行器、被控对象及其反馈作用的测量变送组成。 图1 控制系统框图 1.3 系统总体功能分析 本系统是一个简单的单回路控制系统,为了实现温度的测量及自动控制,根据任务要求及要求,系统由单片机系统,前向通道,后向通道,及人机通话四个模块构成。总体框图如图2 所示。

嵌入式系统实验报告

实验一系统认识实验 一、实验目的 学习Dais软件的操作,熟悉程序编写的操作步骤及调试方法。 二、实验设备 PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套。 三、实验内容 编写程序,将80h~8Fh共16 个数写入单片机内部RAM 的30h~3Fh空间。 四、实验步骤 1.运行Dais软件,进入集成开发环境,软件弹出设置通信端口对话框(如图2-1-1), 请确保实验装置与PC正确连接,并已打开实验装置电源,使其进入在待命状态。 这里选择与实验装置实际相连的通信端口,并单击“确定”。如通信正确则进入Dais 软件主界面,否则弹出“通信出错”的信息框(如图2-1-2),请检查后重试。 图2-1-1设置通信端口对话框图2-1-2通信错误信息框 2.通信成功后,单击菜单栏“设置”→“仿真模式”项打开对话框,选择需要设置型 号、程序/数据空间。这里我们将型号设置为“MCS-51实验系统”,外部数据区 设置为“系统RAM”,用户程序区设置为“片外(EA=0)”,如图2-1-3所示,最 后单击“确定”按钮保存设置。

图2-1-3设置工作方式对话框 3.工作方式设置完毕后,单击菜单栏“文件”→“新建”项或按Ctrl+N组合键(建 议单击工具栏“”按钮)来新建一个文件,软件会出现一个空白的文件编辑窗口。 4.在新窗口中输入程序代码(A51\2_1.ASM): ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R1,#30H ;片内RAM首地址 MOV A,#80H ;写入数据初值 MOV R7,#16 ;循环变量 LOOP1: MOV @R1,A ;写数据到片内RAM INC R1 ;地址增量 INC A ;数据+1 DJNZ R7,LOOP1 ;循环变量-1,不为0继续 SJMP $ ;结束 END 5.单击菜单栏“文件”→“保存”项(建议单击工具栏“”按钮)保存文件。若 是新建的文件尚未命名,系统会弹出文件保存对话框(如图2-1-4),提示用户选择文件保存的路径和文件名,再单击“保存”按钮。

嵌入式系统——实验3——2

实验一:基于ADS的C语言程序实验 一、实验环境 PC机一台 ADS 1.2集成开发环境一套 二、实验目的 通过实验了解使用ADS 1.2编写C语言程序,并进行调试。 三、实验内容 在C语言的环境内开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序,跳到C语言下的主程序,然后,执行C程序,具体的编程规则同标准C语言。 编写一个汇编程序文件Startup.s和一个C程序文件Test.c。汇编程序的功能是初始化堆栈指针和初始化C程序的运行环境,然后调跳转到C程序运行,这就是一个简单的启动程序。C程序使用加法运算来计算1+2+3+...+(N-1)+N的值(N>0)。 四、实验预习要求 (1)仔细阅读《ARM嵌入式系统》中第3和4章ARM指令系统的内容。 (2)仔细阅读文档《ADS集成开发环境及仿真器应用》或其他相关资料,了解ADS工程编辑和AXD调试的内容。(本实验使用软件仿真) 五、实验步骤 (1)启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程ProgramC。 (2)建立源文件Startup.s和Test.c,编写实验程序,然后添加到工程中。 (3)设置工程链接地址RO Base为0x40003f00,RW Base为0x40300000。设置调试入口地址Image entry point为Ox40003f00。 (4)设置位于开始位置的起始代码段,如图1-1,1-2所示。 在Layout栏中,如图1-1,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是Startup.s,那么应在Object/Symbol处填写其目标文件名Startup.o,在Section处填写程序入口的起始段标号Start。它的作用是通知编译器,整个项目的开始运行,是从该段开始的。

嵌入式系统设计实验二

实验报告 课程名称:嵌入式系统设计指导老师:马永昌成绩:________________ 实验名称:嵌入式系统的启动实验类型:验证型同组学生姓名:__孙凡原_______ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 ?初步了解嵌入式系统的开发流程 ?初步了解嵌入式系统的启动流程 ?掌握Linux内核编译 二、实验内容和原理 ?编译Linux内核 ?烧写内核镜像并启动 ?启动参数配置 三、主要仪器设备 树莓派、PC机 四、操作方法和实验步骤 1 安装编译内核的交叉编译工具链 2 配置内核,编译生成内核镜像文件。 3 替换SD卡中原先的内核镜像文件,启动树莓派。 五、实验数据记录和处理 1.创建root用户 sudo passwd root 输入密码,创建root用户密码 su root 切换到root用户

2.安装编译内核的交叉编译工具链 将交叉编译工具链压缩文件gcc-linaro-arm-linux-gnueabihf-raspbian-x64.tgz放入到虚拟机/home (从图形界面打开/home的方法:ubuntu侧栏Files->Devices->Computer->home, 注意不是“Home”)下,解压。 tar xzvf gcc-linaro-arm-linux-gnueabihf-raspbian-x64 设置环境变量 export PATH=$PATH:/home/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 此时运行 arm-linux-gnueabihf-gcc --version 可以看到版本号表明交叉编译工具链安装完成。 3.配置内核并编译 将内核源代码压缩文件放入到虚拟机/home下,解压 tar xzvf linux.tgz 配置内核 cd linux KERNEL=kernel7 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig 编译内核 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

《单片机系统设计》实验报告

短学期实验报告 (单片机系统设计) 题目: 专业: 指导教师: 学生姓名: 学号: 完成时间: 成绩:

基于单片机的交流电压表设计 目录 1系统的设计要求 (2) 2系统的硬件要求 (2) 2.1真有效值转换电路的分析 (2) 2.2放大电路的设计 (3) 2.3A/D转换电路的设计 (3) 2.4单片机电路的分析 (4) 2.5显示电路 (4) 3 软件设计 (5) 3.1 软件的总流程图 (5) 3.2 初始化定义与定时器初始化流程图 (5) 3.3 A/D转换流程图 (6) 3.4 数据处理流程图 (6) 3.5 数据显示流程图 (7) 4 调试 (7) 4.1 调试准备 (7) 4.2 关键点调试 (7) 4.3 测试结果 (8) 4.4 误差分析 (8) 5结束语 (8) 5.1 总结 (9) 5.2 展望 (9) 附录1 总原理图 (10) 附录2 程序 (10) 附录3 实物图 (14)

基于单片机的交流电压表设计 ****学院 ****专业 姓名 指导老师:******* 1 设计要求 (1)运用单片机实现真有效值的检测和显示。 (2)数据采集使用中断方式,显示内容为有效值与峰值交替进行。 2 硬件设计 本系统是完成一个真有效值的测量和显示,利用AD737将交流电转换成交流电压的有效值,用ADC0804实现模数转换,再通过单片机用数码管来显示。系统原理框图如图2-1所示。系统框图由真有效值转换电路、放大电路、A/D 转换电路、单片机电路、数码管显示电路五部分。 图2-1 原理框图 2.1 真有效值转换电路 真有效值转换电路主要是利用AD737芯片来实现真有效值直流变换的,即将输入的交流信号转换成直流信号的有效值,其原理图如图2-2所示。 图2-2 真有效值转换电路 由于AD737最大输入电压为200mV, 所以需要接两个二极管来限制输入电压,起到限幅的作用。如图中D1、D2,由IN4148构成,电容C6是耦合电容,电阻R1是限流电阻。 2.2 放大电路设计 放大电路主要是利用运放uA741来进行放大,电路原理图如图2-3所示。 A/D 转换 单片机 电路 显示 电路 转换 电路 交流 信号 放大 电路

嵌入式系统设计实验六

实验六 8字数码管和点阵数码管实验....................... 错误!未定义书签。 实验目的............................................. 错误!未定义书签。 实验内容............................................. 错误!未定义书签。 预备知识............................................. 错误!未定义书签。 实验设备及工具....................................... 错误!未定义书签。 实验原理............................................. 错误!未定义书签。 、程序分析........................................... 错误!未定义书签。 实验步骤............................................. 错误!未定义书签。 八、思考题........................................... 错误!未定义书签。实验六 8字数码管和点阵数码管实验 实验目的 学习LED的相关知识 掌握74HC273芯片的工作原理 了解SPI接口的相关知识 实验内容 学习LED相关知识,了解74HC273芯片对LED点亮的工作机制,熟练阅读74HC273芯片资料,掌握对它的使用。 预备知识 有C语言基础 掌握在Linux下常用编辑器的使用 掌握Makefile 的编写和使用 掌握Linux下的程序编译与交叉编译过程 需要部分数字电路的知识

江苏科技大学嵌入式实验报告

实验一熟悉嵌入式系统开发环境 一、实验目的: 1.熟悉嵌入式系统硬件实验平台 2.掌握超级终端配置方法。 3. 掌握嵌入式系统开发环境配置,ARM-Linux下NFS服务器的配置方法 4. 掌握常用的 Linux下shell命令 二、实验设备及工具: 硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境 三、实验内容 : (1)掌握嵌入式系统实验平台上的各类借接口的位置; (2)配置windows的超级终端,熟悉vivi的命令行,bootload、kernel、root 和用户程序的介绍; (3)配置linux的终端,配置网络服、Ip地址,开发目录共享,挂载等。 四、实验步骤: 1.掌握嵌入式系统实验平台上的各类接口的位置 UP-TECH S2410/P270 DVP 的硬件配置如表 1.2.1 所示 实物如图 1.2.1 所示:

2.配置windows的超级终端,熟悉vivi的命令行,bootload、kernel、root 和用户程序的介绍; 1)配置windows的超级终端: a)用串口线将 PC 机与 ARM 开发板连接好后,将 UP-TECH S2410、P270 DVP 开发板 开机,然后点击 PC 机上的开始“菜单”然后找到“附件”中“通讯”选项中的“超级终端”, b)然后在超级终端里进行配置,在“名称”中输入要建立的超级终端的名字。 c)在“连接时使用”一栏选择可用的串口号,(这里根据自己的实际情况进行选择)。 d)在“每秒位数”中选择“115200”,“数据流控制”选择“无”,然后点击“确定”按 钮,设置完毕。 2)学习并掌握如下命令: ls,cd ,pwd,cat,more,less,mkdir,rmdir ,rm,mv,cp,tar,ifconfig 3. Linux下minicom的使用与程序挂载 a)打开虚拟机,启动linux; b)新建终端,输入minicom来启动实验箱;

嵌入式系统设计实验报告

西安邮电大学 嵌入式系统设计实验报告 专业 班级 学号 学生姓名 指导教师 学期2013-2014学年第2学期 完成日期2014-06-25

基于lpc2131的模拟电梯控制实验 一、实验目的 1、熟悉ARM & ADS V1.2 的环境 2、理解LPC2131芯片引脚功能的选择 3、理解GPIO的使用设置、输入驱动方法 4、理解SPI全双工同步串行通信原理,学习ARM SPI资源的驱动编程 5、学习在LPC2131上移植ucosⅡ系统 二、实验内容及要求 1、通过键盘输入楼层,输入之后数码管从当前位置向上或向下运行,流水灯表示运动方向。 2、流水灯在运行中显示电梯正在运行的方向,并且在电梯到达时在该楼层闪烁3次。 3、电梯运行到对应楼层,数码管显示楼层号。 4、流水灯表示电梯运行楼层。 5、系统可同时满足多用户需求。达到该系统与现实电梯系统的一致性。 三、系统总体设计(总体方案及系统框图) 主要是创建了四个任务,分别为电梯总任务、按键检测任务、电梯方向改变任务及电梯向上或向下运行任务,然后启动多任务环境,通过事件标志组发送和接收消息,进而实现电梯的一些基本的功能。

四、系统详细设计(模块详细设计及流程图)

五、系统测试(数据测试结果及分析) 通过键盘按键输入楼层数,发送到开发板,数码管和LED灯初始化时会停留在电梯的第一层。接受到数据后数码管会自动变化到该楼层,并且LED灯在数码管变化的同时会显示电梯当前的运动状态,上或者下。在程序运行的任何期间都可以从键盘输入电梯的楼层数。而且程序会自动判断要满足的用户的优先级。 此次试验达到的效果基本与现实中电梯的运行模式达到了一致。六、总结 在整个课程设计中,我们组员一起认真地查找相关资料,然后又对书中的相关内容仔细翻阅,通过虚心请教和不懈的努力,最终完成了整个设计,心中的喜悦实在无以言表。此刻,我非常感谢我们组长的鼓励和帮助,感谢同学们诸多的帮助!本次设计不仅让我收获了许多,也让我对以前所学习的ARM知识有了进一步的深化与巩固,最关键的是,它给了我一份自信。但我很明白,作品中还存在着比较多的不足,这些都需要进一步的改善,我会不骄傲,不气馁,用着自信与执着尽最大努力将其完善。 七、附录(代码+注释) #include "config.h" #include "stdlib.h" #define KEY1 1 << 16 // P0.16连接KEY1 #define KEY2 1 << 17 // P0.17连接KEY2 #define KEY3 1 << 18 // P0.18连接KEY3 #define KEY4 1 << 19 // P0.19连接KEY4 #define KEY5 1 << 20 // P0.20连接KEY5 #define KEY6 1 << 21 // P0.21连接KEY6

基于stm32的嵌入式系统原理与设计实验报告 学位论文

XXXX学院 XX级嵌入式系统设计实验报告 班级: 指导老师: 学期: 小组成员: 姓名学号 组长 成员 成员

实验一我的第一个工程实验 一.实验简介 我的第一个工程,流水灯实验 二.实验目的 掌握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.记录实验过程,撰写实验报告

六.实验结果及测试七.实验总结

实验二带按键控制的流水灯实验 一.实验简介 在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。二.实验目的 熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。 三.实验内容 实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。 使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。四.实验设备 硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1在实验1代码的基础上,编写中断初始化代码 2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序 3编写中断服务程序 4编译代码,使用JLINK下载到实验板 5.单步调试 6记录实验过程,撰写实验报告

中北大学嵌入式系统实验报告

中北大学计算机与控制工程学院实验报告《嵌入式系统实验报告》 专业电气工程与智能控制 班级 14070541 学号 1407054103 姓名贾晨凌

实验一 ARM 处理器指令系统实验 一、实验目的 熟悉ARM指令系统,熟悉ARM SDT编辑编译连接,ARM Project Manager和ARM Debugger 的设置和使用 二、实验条件 Windows平台的ARM SDT 2.51软件:ARM Project Manager和ARM Debugger。 三、实验内容 学习使用ARM Project Manager建立项目文件,编辑汇编文件,并加入项目。学习ARM编译器和汇编器的设置。通过编程熟悉ARM指令,包括跳转指令,数据处理指令,状态寄存器传送指令,load/store指令,中断异常产生指令。学习ARM调试起的使用方法,包括程序的导入,单步执行,断点设置等。 四、实验要点 工程文件的建立,在ARM Project Manager中点击File->New,选择Project,点击确定。 链接器的设定,需要设置代码和数据段的起始地址。 点击图标,选择不进行远程调试,即可打开调试器。 五、实验结果 熟悉ARM指令系统 实验二p1口实验 一、实验目的 熟悉 ARM SDT 软件开发方法和技能;

学习和巩固 ARM 指令集; 学习和巩固汇编语言程序设计 二、实验条件 Windows 平台的 ARM SDT 2.51 软件:ARM Project Manager 和 ARM Debugger; DebugServer.exe ; EFLAG-ARM-S3C44B0 实验箱 三、实验内容 目录 ARM251\EXAMPLES\ASM 下的汇编程序, 学习和调试代码,分析所得结果。 在调试器上仿真软件的执行。 在实验箱上,调试软件,并观察软件的执行结果 四、实验要点 在调试软件目录中启动 DebugServer.exe 调试器服务程序。 启动 SDT 调试软件 ARM Debugger。 五、实验结果

相关主题
文本预览
相关文档 最新文档