51003CC03B《微控制器原理与应用》实验指导书.docx
《51003CC03B《微控制器原理与应用》实验指导书.docx》由会员分享,可在线阅读,更多相关《51003CC03B《微控制器原理与应用》实验指导书.docx(91页珍藏版)》请在冰豆网上搜索。
51003CC03B《微控制器原理与应用》实验指导书
微控制器原理与应用实验指导书
刘龙、陈功、高照玲、田华、李滨虎编写
大连东软信息学院
电子工程系
引言
电子信息技术是当今世界科学技术和经济发展的热点,电子信息类专业是高校的热门专业。
对于应用性学院来说,旨在锻炼提高学生工程素质和实践创新能力的实验课,以及包括其他实践环节的实验教学改革十分重要。
电子类实验课程与其强调理论更应强调技术和应用,这是由专业性质决定的。
既然实验要单独设课,就不应等同于原来实验附属于理论课的情况。
除了增加实验学时、提高实验的要求之外,重要的是要使实验课成为既要和理论课相辅相成,又能自成实验体系的独立课程设置。
这需要从许多方面加以保证,诸如:
任课和指导教师的配备和加强;教学体系既要有实践又应有理论(如误差理论和测量方法);实验内容在基础单元型实验的基础上应加强综合型和设计型实验,以注重创新能力培养;实验考核应把平时考核和期末考试结合起来,探索更为有效的实验考试方法(如现场测试和制作验收)。
总之,实验课教学对比理论课教学要更加"务实",技术基础课教学更要强调理论和实践的统一,理工科教学要特别注重学生实践能力和工程素质的提高。
同时,实验改革要跟上时代的发展,实验技术实验方法要不断创新,注重新器件、新技术(如EDA、DSP、ARM技术)的应用。
设备与材料
这章主要介绍本实验指导书中会用到的设备和材料。
包括:
仿真器和LPC1114开发板。
1.仿真器
调试LPC1114单片机的硬件仿真器目前市面上主要有如下两种:
1)SEGGER公司的JLINKV7、JLINKV8仿真器,如图01所示,可以和市场上主流的软件平台无缝连接;
图01JLink仿真器
2)Keil公司的ULINK2,如图02所示,它是MDK下的专用调试工具;
图02ULINK2仿真器
以上两种仿真器,与实验板的连接都通过的是JTAG接口。
下面对JTAG接口进行介绍。
LPC1114单片机属于Cortex-M内核单片机,其内嵌CoreSight片上跟踪和调试体系结构,支持JTAG和SWD接口调试。
不过对于LPC1100系列微处理器来说,只有U系列带有JATG和SWD两种调试方式,其他处理器只有SWD调试方式。
为了让读者对JTAG有一定的认识,下面也将对JTAG进行介绍。
2.JTAG调试接口
JTAG调试方式是ARM核采用的标准调试接口,从第一款ARM核推出到现在一直在使用。
不管是调试还是编程下载都非常方便,其标准的JTAG接口定义图03所示。
图03JTAG接口定义
表01所示为JTAG接口管脚描述。
表01JTAG接口管脚描述
管脚
信号名
类型
描述
1
VTerf
O
目标板的参考电压输入
2
Vsupply(可选)
O
通过JLINK内部的跳线可设置这个管脚提供3.3V/400mA的电流或者不连接
3
nTRST
I
JTAG复位
5
TDI
I
目标板上CPU的JTAG数据输入
7
TMS
I
目标板的JTAG接口模式设定
9
TCK
I
输入到目标CPU的JTAG时钟输入
11
RTCK
O
从目标板返回的测试时钟信号
13
TDO
O
从目标板输出的JTAG数据
15
nSRST
I/O
目标CPU的复位信号
17
DBGRQ
I
未使用
19
DBGACK
O
用于给目标设备提供5V电源
4、6、8、10、12、14、16、18、20
GND
-
与GND连接
图04JTAG的典型连接图所示,为JTAG调试接口的典型连接图。
图04JTAG的典型连接图
3.SWD调试接口
SWD将多调试引脚的JTAG端口替换为一个时钟引脚加上一个双向数据引脚,却可以提供所有常规调试和测试功能以及实时系统内存访问,无需停止处理器或需要任何目标驻留代码。
SWD调试方式特点如下:
⏹仅需要2个引脚;
⏹高性能数据速率;
⏹低能耗,不需要额外电源或接地插针;
⏹较低的开发工具成本,仿真器可以内置到评估板中;
⏹可靠,内置错误检测功能;
SWD提供了从JTAG的轻松且无风险的迁移,因为两个信号SWDIO和SWCLK重叠在TMS和TCK插针上,从而使双模式设备能够提供其他JTAG信号。
在SWD模式下,可以将这些额外的JTAG针切换到其他用途。
SWD与所有ARM处理器以及使用JTAG进行调试的任何处理器兼容,它可以访问Cortex™处理器(A、R、M)和CoreSight调试基础结构中的寄存器。
如图05为标准的SWD调试端口管脚分布图。
图05标准的SWD调试端口管脚分布
表02SWD调试端口管脚说明所示为SWD接口管脚描述。
表02SWD调试端口管脚说明
管脚
信号名
类型
描述
1
VTerf
O
目标板的参考电压输入
2
VCC33(可选)
O
有调试工具输出电流或不连接
3
保留
NC
未使用
5
保留
NC
未使用
7
SWDIO
I/O
双向数据端口
9
SWCLK
I
输入到目标CPU的时钟
11
保留
NC
未使用
13
SWO
O
SWD输出Trace端口
15
RESET
I/O
目标CPU的复位信号
17
保留
NC
未使用
19
5V-Supply
O
用于给目标设备提供5V电源
4、6、8、10、12、14、16、18、20
GND
-
与GND连接
4.实验板
LPCCortexM0开发板是一块以LPC1114FBD48为主控芯片的开发板,它带有丰富的扩展接口,支持各类外围模块的接入。
1)芯片简介
⏹LPC11C14
⏹以下为LPC11C14FBD48/301的核心资源参数:
⏹内核:
Cortex-M032-bitRISC;
⏹工作频率:
50MHzMax;
⏹工作电压:
1.8-3.6V;
⏹封装:
LQFP48;I/O口:
42;
⏹存储资源:
32kBFlash,8kBRAM;
⏹接口资源:
1xCAN,2xSPI,1xUART,1xI2C,11xPWM,8xADC;
⏹调试下载:
可通过SWD接口实现调试下载,可通过UART接口实现ISP。
⏹AMS1117-3.3
⏹3.3V稳压器件。
2)其它器件简介
⏹电源开关
⏹电源LED
⏹用户LED
⏹便于I/O输出测试或显示程序运行状态。
⏹复位按键
⏹用户按键
⏹便于I/O输入测试或控制程序运行状态;
⏹摇杆
⏹上、下、左、右、按下,共5个状态。
⏹12M晶振
⏹可通过倍频设置,令主频为48M。
3)模块接口简介
⏹8I/Os|8路AD接口,方便接入各类使用I/O控制的模块。
如8位按键模块,电机控制模块等。
同时,该接口也为AD接口,可以方便AD测试。
⏹SPI0/SPI1接口,方便接入SPI模块。
如DataflashAT45DBXX、SD卡、MP3模块等。
⏹I2C接口,方便接入I2C模块。
如I/O扩展芯片PCF8574、EEPROMAT24CXX模块等。
⏹ONE-WIRE接口,方便接入ONE-WIRE器件(TO-92封装)。
如温度传感器DS18B20、电子注册码DS2401模块等。
⏹UART接口,方便接入使用UART接口的器件。
如RS232、USBTOUART模块等。
⏹LCD接口,方便接入LCD+触摸屏模块。
配送的LCD为2.2寸触屏LCD,使用SPI接口,大大降低I/O资源的占用。
⏹CAN接口,方便接入CAN模块。
⏹PS/2接口,方便接入PS/2键盘或鼠标。
4)其它接口简介
⏹5VDC接口
⏹5V与3.3V电源输入输出接口,常用于对外供电,或与用户板进行共地处理。
⏹MCU引脚接口,引出所有引脚,方便与外设进行I/O连接。
⏹SWD接口,支持下载与调试。
Jlink与实验板连接方式如图06所示。
图06仿真器与开发板连接示意图
实验一软件安装与测试
一、实验目的:
1.正确安装MDK软件
2.正确安装Jlink调试驱动,熟悉实验板的用法
3.正确建立一个标准的工程。
二、实验设备:
Cortex-M0开发板、学生自带笔记本电脑
三、实验内容:
安装MDK5软件,安装Jlink驱动,建立一个空的工程。
四、实验原理:
1MDK的安装
对于MDK,安装完后一定要注册,否则可能会受到代码量的限制,导致很多程序会运行不了。
单用户注册成功后会提示过期时间,如图01所示。
图01单用户许可证注册成功界面
2MDK工程模块的新建
1.新建几个必要的文件夹。
在需要保存开发项目的地方新建文件夹,用于保存开发中需要的启动代码、源代码、头文件、工程管理、输出文件等。
下面将介绍LPC1114的MDK工程模版,如图02所示:
图02MDK工程模块
本工程模版包括7个文件夹,表01是对MDK工作模块中的文件进行描述。
表01工程文件描述
序号
名称
描述
1
System
system_LPC11xx的c和h文件
2
Startup
启动代码文件startup_LPC11xx.s
3
Source
main.c文件
4
Gpio
gpio.c和gpio.h文件(可以先不用建立)
5
Doc
项目说明文件
6
Out
编译生成的文件
2.新建工程
(1)在桌面上打开“KeiluVision5”软件,如图03所示。
可以看出MDK界面非常简洁。
图03MDK工作界面
(2)点击菜单“Project”,选择“NewuVisionProject”,将出现如图04所示对话框,要求为新建工程输入一个名称,这里输入“LPC1114”。
然后,把工程保存在刚开始新建的“LPC1114MDK工程->Project”文件夹里边。
图04工程存储
(3)这时会弹出一个对话框,如图05所示,要求选择目标设备的型号。
可以根据使用的处理器来选择处理器型号。
如果没有要选择的可以选择一款相兼容的处理器;如果是新推出的处理器,可以更新开发环境,一般MDK过一段时间都会更新开发环境,以提供对新处理器的支持。
这里选择“LPC1114x301”,在右边的“Description”里边有对这款处理器的介绍,对于此芯片进行了一定的说明。
图05选择处理器
(4)点击“OK”后,将弹出如图06所示对话框,问是否要自动生成启动代码。
启动代码是用来初始化目标设备的配置,完成运行时系统的初始化工作,对于嵌入式系统开发而言是必不可少的。
图06启动代码生成确认框
(5)单击“是”便可将启动代码加入工程,这使得系统的启动代码编写工作量大大减少,从而使得开发者基本不用与汇编语言打交道。
如图07所示,在工程项目中已经添加了启动代码startup_LPC11xx.s。
图07生成的工程
(6)创建工程后,就应开始编写源代码了。
首先创建几个文件组,用于存放源文件。
点击快捷图标“
”,弹出如图08所示对话框:
图08MDK下文件管理
(7)更改“ProjectTargets”下的工程名为LPC1114;更改“Groups”下的“SourceGroup1”为“Startup”用于存放启动代码。
并在“Groups”中新建如图09所示的几项。
图09新建MDK下几个管理项
(8)点击“OK”后,将在左边的“Project”下出现新建的管理结构,如图010所示:
图010MDK文件管理
(9)接下来就应该在工程项目中添加源代码了,拷贝system_LPC11xx.c和system_LPC11xx.h到System文件夹中。
新建文件main.c保存到Source中。
(10)在相应文件组上点击右键,点击“AddFilestoGroup”,如图011所示,将弹出添加文件对话框。
分别把c文件和h文件添加到文件组中。
图011添加文件
(11)分别添加文件到相应的文件组中,最后创建完成的工程组如图012所示。
图012创建完成的工程组
(12)完成文件及文件组的创建后,后面就是在相应的文件中输入源程序代码了,具体代码这里就不在说明,对于初学者来说,可以适当减少文件夹分类。
3MDK硬件配置
完成工程创建和源代码输入后,下面就需要对工程项目进行必要的设置。
主要包括存储器、文件输出、代码优化、代码调试和下载等。
对于需要默认或很少使用的设置,就不进行过多的介绍,读者尽量不要去改动它。
(1)点击快捷方式“
”,弹出如图013所示对话框。
在新建工程的时候已经选择了器件类型,所以这里直接进入第2项开始设置,对Flash和RAM进行设置也非常重要,但是一般情况下MDK已经设置好了,不需要改变。
图013Flash和RAM设置
(2)接下来点击“Output”对输出文件进行设置,如图014所示。
图014输出文件设置
(3)点击“SelectFolderforObjects…”,选择输出文件目录为刚开始新建的“Out”文件夹,如图015所示:
图015选择输出文件夹
(4)勾选复选框“CreateHEXFile”输出十六进制文件代码,并在“NameofExecutable:
”下输入生成的十六进制文件的名字。
具体设置如图016所示。
图016输出文件设置
(5)点击“C/C++”对C和C++进行一定的设置,笔者建议读者在开发的过程中不要更改设置。
当程序编写、调试完成后,可以适当选择“Optimization”下的优化等级,进一步缩小代码空间和优化运行速度。
如果有些文件需要在编译过程中包含进来,可以在“IncludePaths”中添加,如下图017所示。
图017C/C++优化设置
(6)点击“Debug”对调试进行设置,左边是选择采用软件模拟方式进行调试,在没有硬件平台的情况下,可以采用这种方式进行设置。
如果要使用MDK的逻辑分析仪,只能采用软件模拟方式进行调试。
如果有硬件平台,建议读者尽量采用硬件方式进行仿真调试。
那么这里采用哪种硬件工具就需要读者根据自己的需要进行选择,如果没有你选择的工具,请先安装好仿真工具的驱动程序,如果还是没有列出需要选择的工具,可以以文本方式打开安装目录下的TOOLS.INI,并根据需要修改,至于修改方法这里就不再阐述,读者可以在网上查找修改方法。
下面我们将介绍采用JINKV8的SWD方式下的设置,如图018所示。
图018硬件调试设置
(7)在硬件仿真选择“Cortex-M/RJ-LINK/J-Trace”;在复选框“Runtomain()”前面勾选,如果不勾选,那么仿真时会从启动代码开始。
如果勾选了这个复选框,它会直接运行到main()函数,main()函数前面运行的代码就可以不用去关心它,如图019所示。
图019JLINKV8调试设置
(8)如果JINKV8已经安装了驱动,并且连接好PC和目标硬件。
点击“Settings”将进入CortexJLink/JTraceTargetDriverSetup界面。
如果已经连接好硬件后,会自动识别调试方式,如图020所示。
时钟设置可以根据器件的支持的大小适当的调整一下,这里选择默认设置。
其他地方也采用默认设置。
图020SWD方式设置
(9)如果没能正确识别,可以在“Port”下选择正确的方式(SWD/JTAG)。
可以在“MaxClock”下选择调试速度时,对于NXP的芯片尽量不要选择太快,采用默认速度就可以了。
如果选择错误将不能正确识别,如图021所示,更换成JTAG后的界面,由于硬件采用的是SWD方式,所以选择JTAG后,将不能正确识别。
图021JTAG方式设置
(10)点击“Utilities”对下载方式进行设置,在“UseTargetDriverforFlashProgramming”下选择“Cortex-M/RJ-LINK/J-Trace”,保持与“Debug”下的设置一致。
当然,读者也可以使用其他方式下载程序代码。
并且勾选“UpdateTargetbeforeDebugging”,在调试时会自动先下载代码到Flash中,如图022所示。
图022下载设置
(11)点击“Settings”弹出如下对话框,这里软件已经自动设置好Flash下载算法了。
如图023所示。
图023下载芯片设置
(12)如果没有自动设置,可以点击“Add”添加Flash下载算法,如图024所示。
图024下载算法的添加
到此,MDK下的工程项目就设置完成了。
点击“OK”,退出设置对话框。
4MDK的应用
工程模块建立完成后,就可以在MDK平台下输入源代码,并进行编译、调试了。
下面将进一步介绍怎样使用MDK开发项目。
uVision5提供两种工作模式,一种是编译模式,另一种是调试模式:
✧编译模式:
用于汇编及C语言等应用程序源文件的输入,并生产可执行文件;
✧调试模式:
提供友好的调试界面,用于测试应用程序。
在这里两种模式下均可以对源代码进行编辑和修改,但是在不同模式下窗口和窗口布局都有一定的区别,下面将分别介绍这两种模式下的应用窗口。
1.编译模式
在编译模式下,工作区用于编写源文件,既可用汇编语言编写程序,也可用C语言编写程序。
通过File->New菜单项目新建源文件,将打开一个标准的文本编辑窗口,可在此窗口输入源代码。
需要注意的是,只有先保存文件后,再在文件里边输入代码时才能够实现高亮显示关键字,在左侧显示文本中各行的标号,其他颜色显示注释等功能。
当然这些特殊显示功能均可以通过点击Edit->Configuration…,在弹出的对话框中进行设置。
图025是一个典型的编译模式下的工作区。
下面将分别对编译模式下常用到的快捷方式、工程工作区、编译输出、查询窗口等进行详细介绍。
图025编译模式下的工作区
(1)菜单栏
图026为MDK的菜单栏,可以看出,MDK的菜单栏与其他Windows应用程序的菜单栏并没有多大的区别。
而且很多时候,我们都是通过快捷图标或快捷键对MDK进行操作,实际通过菜单栏进行操作的时间并不多。
所以,这里就不过多的介绍,读者可以自行了解,但是对菜单栏一定要熟悉。
MDK的功能非常强大,很多工程师使用MDK多年,但是仍然对一些比较方便、快捷的功能不熟悉,甚至没有使用过。
图026MDK菜单栏
(2)快捷图标
如图027所示,MDK常用的大部分工作,都有相应的快捷图标,通过快捷图标进行操作可以提高工作效率。
图027MDK快捷图标
MDK的快捷图标主要由两行组成,下面将对其中比较常用的快捷图标进行详细说明:
✧新建文档:
可以点击此快捷图标,新建C文件、H文件、汇编文件、文本文件等,在保存的时候加上相应的后缀即可;
✧编译:
在编写好源代码后,需要编译才能调试和下载代码到Flash中。
需要注意的是,第一次点击此快捷方式时,会把整个工程编译一遍,之后再点击,只编译修改的部分。
建议读者多使用此图标编译代码;
✧重新编译:
总是会把整个工程进行重新编译,不管是否修改过代码。
所以编译的时间会比“编译”快捷图标编译长,特别是工程特别大时。
所以,建议读者尽量别使用此快捷图标,而使用“编译”图标;
✧全部保存:
当修改多个文件时,点击此图标会同时保存多个文件,比单一保存方便一些。
✧下载:
当编译完成后,可以点击此快捷图标直接把代码下载到处理器的Flash中;
✧目标设置:
主要是对目标板进行设置,在前面的内容已经介绍,读者可以查看硬件设置部分的内容;
✧文件组、环境配置:
主要是对文件组、编译环境和电子书等进行设置,应用比较多的就是对文件组进行新建、修改等;
✧右缩进:
在编程的时候,一般都要对齐代码,保持文件整洁。
当有多行代码需要整体右缩进4格时,选择代码,点击此快捷图标即可,非常方便;
✧左缩进:
与右缩进相同,只是缩进方向相反;
✧注释文本:
当需要注释掉部分代码或文本时,可以选择文本,点击此快捷图标;
✧恢复文本:
当需要恢复被注释掉的代码或文本时,选择被注释的文本,点击此快捷图标;
✧工程中查找:
如果要在工程中查找某一函数、变量、文本时,点击此快捷图标,弹出查找对话框。
在对话框中输入要查找的内容,并设置好查找条件,之后会把查找结果输出到FindInFiles窗口中;
✧调试:
当编译完代码后,点击此快捷图标,MDK会切换到调试模式,进行代码调试;如果设置在Flash中进行调试的话,会先下载代码到Flash中,再切换到调试模式下;
✧设置断点:
把光标放在需要设置断点的地方,点击此快捷图标设置断点;当然也可以直接在需要设置断点的地方双击鼠标左键设置断点;
✧取消断点:
把光标放在设置好断点的地方,点击此快捷图标取消断点设置;当然也可以直接在设置断点的地方双击鼠标左键取消断点设置;
✧编译器配置:
对uVision进行配置,主要是对编译环境等进行配置。
(3)工程工作区
在工程工作区由多个部分组成,所有的窗口都是叠加在一起的。
这一部分的应用非常频繁,读者应该充分了解这一部分的内容。
1)Project
工程管理页,在编辑模式和调试模式下都有此页。
如图028所示为LPC1114工程模块的工程页显示。
图028LPC1114工程模块工程页显示
2)Books
电子书页,列出了关于uVisionIDE的一些发行信息、开发工具、用户指南及设备数据库相关数据等。
如图029所示。
双击指定的书籍就可以打开,并可以通过上面介绍的“文件组、环境配置”快捷图标打开对话框进行添加、删除和整理书籍。
图029Books页
3)Functions
函数页非常重要,列出了工程中各个C文件中的函数,通过列表可以非常快速的定位函数所在的位置,通过双击函数名称可找到函数所在的位置。
如图030所示,显示LPC1114工程模块的函数。
图030函数显示列表
4)Templates
模板页列出了C语言常用的编程模版,如图031所示,当把鼠标放在相应字符上时就会显示模版的格式。
双击模版就可以在编辑区显示编程模版;通过右键还可以添加自己的模版。
图031模式显示
(4)输出窗口
输出窗口主要有2个页面,分别是Build和FindInFiles。
通常在软件的最下方显示,当然也可拖到其他地方。
1)Build
此页用于显示编译信息,包括汇编、编译、连接、生成目标程序等,同时显示编译结果、错误显示和警告提示。
读者应该明确此窗口的具体显示表示的含义。
图032编译结果显示
编译结果说明,如表02所示。
表02编译项
项目
说明
描述
Code
代码空间
Flash占用空间
RO-data
指令和常量
指令以及常量被编译后是RO类型数据
RW-data
已初始化变量
已被初始化成非0值的变量编译后市RW类型数据
ZI-data
未初始化的变量
未被初始化或初始化为0的变量编译后是ZI类型数据
2)FindInFiles
当使用上面介绍