收藏 分销(赏)

ARM实验指导书.docx

上传人:可**** 文档编号:4252792 上传时间:2024-08-30 格式:DOCX 页数:55 大小:805.23KB
下载 相关 举报
ARM实验指导书.docx_第1页
第1页 / 共55页
ARM实验指导书.docx_第2页
第2页 / 共55页
ARM实验指导书.docx_第3页
第3页 / 共55页
ARM实验指导书.docx_第4页
第4页 / 共55页
ARM实验指导书.docx_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、西南科技大学计算机科学与技术学院第一章 ADS集成开发环境1 ADS集成开发环境简介1.1 ARM编译器的选择 ADS目前,针对ARM处理器核的C语言编绎器有很多,如SDT、ADS、IAR、TASKING和GCC等。据了解,目前在国内最流行的是SDT、ADS和GCC。SDT和ADS均为ARM公司自己开发,ADS为SDT的升级版,以后ARM公司不再支持SDT,所以不会选择SDT。GCC虽然支持广泛,很多开发套件使用它作为编译器,与ADS比较其编译效率较低,这对充分发挥芯片性能很不得,所以最终使用ADS编译程序和调试。本实验设备采用ADS编译器,其全称为ARM Developer Suite。AD

2、S由命令行开发工具、ARM时实库、GUI开发环境(Code Warrior和AXD)、实用程序和支持软件组成。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。ADS支持汇编语言和标准C语言和标准C+语言。1.2 ADS库路径ADS库路径是在ADS软件安装路径的lib目录下的两个子目录。假设,ADS软件安装在e:armadsv1_2目录,则在e:armadsv1_2lib目录下的两个子目录armlib和cpplib是ARM的库所在路径。armlib这个子目录包含了ARM C库,浮点代数运算库,数学库存等各类库函数。与这些库相就的头文件在e:armadsv1_2

3、include目录中。Cpplib这个子目录包含了Rogue Wave C+库和C+支持函数库。Rogue Wave C+库和C+支持函数库合在一起被称为ARM C+库。与这些库相应的头文件安装在e:armadsv1_2include目录下。读者需特别注意的几点:(1) ARM C库函数是以二进制格式提供的;(2) ARM 库函数禁止修改。如果读者想对库函数创建新的实现的话,可以把这个新 的函数编译成目标文件,然后在链接的时候把它包含进来。这样在链接的时候, 使用的是新的函数实现而不是原来的库函数。(3) 通常情况下,为了创建依赖于目标的应用程序,在ANSI C库中只有很少的几个函数需要实现重

4、建。(4) Rogue Wave Standard C+函数库的源代码不是免费发布的,可以从Rogue Wave Software Inc,或ARM公司通过支付许可证费用来获得源文件。2 ADS集成开发环境的使用2.1 进入ADS集成开发环境 点击桌面ADS图标,如下图所示,进入ADS集成开发环境。 2.2 建立一个工程(1) 在CodeWarrior中新建一个工程有两种方法:方法一:在工具栏中单击“New”按钮,如下图:方法二:在“File”菜单中选择“New”,如下图: (2)执行上步骤后,则会弹出“新建工程对话框”,如下图:在这个对话框中为用户提供了7种可选择的工程类型。ARM Exec

5、utabl Image:用于由ARM指令的代码生成一个ELF格式的可执行映像文件;ARM Object Library:用于由ARM指令的代码生成一个armar格式的目标文件库;Empty Prlject:用于创建一个不包含任何库或源文件的工程;Makefile Importer Wizard:用于将Visual C 的nmake 或 GNU make 文件转入到CodeWarrior IDE 工程文件;Thumb ARM Executable Image:用于由ARM指令和Thumb指令的混和代码生成一个可执行的ELF格式的映像文件;Thumb Executable image:用于由Thu

6、mb 指令创建一个可执行的ELF格式的映像文件;Thumb Object Library:用于由Thumb指令的代码生成一个armar格式的目标文件库。在这里选择ARM Executable Image,在“Project name:”中输入工程文件名,本例为“ledcircle”,点击“Location:”文本框的“Set”按钮,浏览选择想要将该工程保存的路径,将宽大些设置好后,点击“确定”,即可建立一个新的名为ledcircle的工程。此时会出现ledcircle.mcp的窗口,如下图如示,其中有三个标签页,分别为files,linkorder,target。 2.3 新建原文件(1)在“

7、File”菜单中选择“New”,在打开的对话框中,选择标签页File,在File name中输入要创建的文件名,若是汇编语言则文件名格式为:*.s,若是C语言则文件名格式为:*.c,然后再点击“确定”关闭窗口。 在这里还有一个细节,希望注意。在建立好一个工程时,默认的target是DebugRel ,还有另外两个可用的target,分别为Realse和Debug,这三个target的含义分别为:DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息;Debug:使用该目标为每一个源文件生成最完全的调试信息;Release:使用该目标不会生成任何调试信息。在本例中,使用默认

8、的 DebugRel 目标。2.4 向工程添加文件(1)在ledcircle.mcp窗口的file标签页内右击鼠标右键,选中“Add Files”可以把要用到的源程序添加到工程中。(2)选中了要添加的文件后,会出现如下所示的一个对话框,询问用户把文件添加到何类目标中,在这里,我们选择DebugRel目标,再按OK即可把刚才创建的两个文件添加到工程中来。 (3)对于本实验,在建立好每一个工程后都需将stardcode文件夹里的所有文件添加至工程中,且新建的每个文件里都需包含“config.h”头文件才行。原因不多说明,有兴趣可自行阅读文件代码。2.5 编译和链接工程在进行编译和链接前,首先讲述一

9、下如何进行生成目标的配置。点击Edit菜单,选择“DebugRel Settings”,则出现如下图如示的对话框:这个对话框中的设置很多,在这里只介绍一些最为常用的设置选项,读者若对其他未涉及到的选项感兴趣,可以查看相应的帮助文件。 (1)target设置选项A: TargetName 文本框显示了当前的目标设置。B: Linker 选项供用户选择要使用的链接器。在这里默认选择的是ARM Linker,使用该链接器,将使用armlink链接编译器和汇编器生成的工程中的文件相应的目标文件。C: Pre-Linker:目前CodeWarrior IDE不支持该选项。D: Post-Linker:选

10、择在链接完成后,还要对输出文件进行的操作。因为在本例中,希望生成一个可以烧写到Flash中去的二进制代码,所在在这里选择 ARM fromELF,表示在链接生成映像文件后,再调用FromELF命令将含有调试信息的ELF格式的映像文件转换成其化格式的文件。 (2)Linker设置 鼠标选中ARM Linker,出现如下图所示对话框。这里详细介绍该对话框的主要的标签页选项,因为这些选项对最终生成的文件有着直接的影响。 A: 在标签页Output中,Linktype中提供了三种链接方式。Partial方式表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Sim

11、ple方式是默认的链接方式,也是最为频繁使用的链接方式,它链接生成简单的ELF格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered方式使得链接器要根据scatter格式文件中指定的地址映射,生成复杂的ELF格式的映像文件。这个选项一般情况下,使用不太多。因为我们所举的例子比较简单,选择Simple方式就可以了。在选择Simple方式后,就会出现Simple image。B: RO Base:这个文本框设置包含有RO段的加载域为同一个地址。默认是0x8000。这里用户要根据自已硬件的实际SDRAM的地址空间来修改这个地址,保证在这里填写的地址,是程序运行时,SDRAM地址空

12、间所能覆盖的地址。针对本实验可以设置地址值为: 0x00000000 。C: RW Base:这个文本框设置了包含RW和ZI输出段的运行域地址。如果选中split选项,链接器生成的映像文件将包含两个加载域和两个运行域,此时,在RW Base中所输入的地址为包含RW和ZI输出段的域设置了加载域和运行域地址。本实验可设置为:0x40000030 。D: 在标签页Options中,将Image entry point文本框设置为:0x00000000 。如下图所示:E: 在标签页Layout中,将Object/Symbol设为:startup.oF: 将Section设为:vectors鼠标选中AR

13、M fromELF,则会出现如下图所示的对话框:A: 在Output format中选择Intel 32 bit Hex B: 在Output file name文本域输入期望生成的输出文件存放的路径,或通过点击Choose按钮从文件对话框中选择输出文件。如果在这个文本域不输入路径名,则生成的文件存放在工程所在的目录下。 (3)点击CodeWarrior IDE的菜单Project下的make菜单,或按F7键就可以对工程进行编译和链接了。第二章 基础实验一 数码管扫描程序1 实验目的1.1 理解ARM数码管显示的一般原理,掌握使用数码显示的一般方法。1.2 学会十六进制字型的显示方法1.3 学

14、会同时(实际上并不是同时,只是视觉)让多个数码管显示,显示任意字符1.4 了解74HC595是如何工作的2 实验内容2.1 理解数码管显示的字符代码和数字之间的关系。2.2 理解数码管是如何片选及显示2.3 依次让多个数码管显示任意字符2.4 学会使用74HC5953 实验预习要求3.1 查找数码管扫描相关资料,了解循环扫描的基本原理,3.2 复习ARM中对端口的操作步骤,复习数码管模块的是实现方法。3.3 查找74HC595的芯片资料,了解该芯片的工作原理和在数码管扫描模块中的作用。4 实验原理5 端口寄存器介绍PINSEL是用于选择端口功能选择,IOPIN用于读引脚当前状态,IOSET控制

15、寄存器引脚输出高电平,IOCLR控制寄存器引脚输出低电平,IODIR控制每个IO口的方向。例如:IODIR |= DLED_RCK;(DLED_RCK为宏,是一个 32位无符号整型)5.1 595原理数码管扫描涉及到4个引脚,分别是P0.17P0.20。P0.17,P0.18,P0.20分别作为74HC595的SCK,SI,RCK。(结合74HC595手册理解)通过SI口接收每位数据;SCK的高电平发出移位信号,每位数据都移动到下一个移位寄存器中;遇到同步发送脉冲RCK时,将多位数据一次发送到寄存器中,形成一个相当于8位或多位的并行数据;从而通过595给数码管给予片选和数据5.2 数码管原理数

16、码管内部为8个发光二极管,并排列为8字形,同时加一个位表示小数点,通过这8个发光二极管的合理组合,可以构成不同的数字字型和简单的字母字型,同时数码管还有一个位选信号。即8个数码管的公共端,用于电平选中。原理图中的AH的0,1组合就可以组成不同的字符。6 实验流程图 数码管原理图 图 1 数码管总体流程图 7 参考源代码8 思考题8.1 如何使你写的程序高效8.2 如何使你写的程序可广泛移植到其他程序中8.3 是否有其他的方法让数码管显示二 键盘扫描程序1 实验目的1.1 了解键盘电路的布局,理解键盘扫描的基本原理1.2 熟练掌握键盘轮转扫描的方法1.3 熟悉74HC595芯片的原理,以及如何利

17、用74HC595写程序实现串并转换。2 实验内容2.1 了解实验箱键盘模块的工作原理,引脚连接。2.2 写程序实现轮转扫描算法,实现键盘的扫描。能够判断是否有键按下,结合数码管显示模块,实现按下某键显示相应内容。3 实验预习要求3.1 查找键盘相关资料,了解轮转扫描的基本原理,对比其与行扫描、全扫描的区别。3.2 复习ARM中对端口的操作步骤,复习数码管模块的是实现方法。3.3 查找74HC595的芯片资料,了解该芯片的工作原理和在键盘扫描模块中的作用。4 实验原理4.1 键盘扫描引脚设置键盘扫描涉及到4个引脚,分别是P0.4P0.7。P0.4,P0.6,P0.7分别作为74HC595的SCK

18、,SI,RCK,(595原理在前一实验已做介绍) p0.5为返回值端口,也是按键是否按下的判断位。在硬件电路上,只要一个按键按下,并且对应的片选中该位为低电平(任意一位同时满足两条件),那么rekey端口将返回低电平,处理器可以根据该端口的电平来判断是否有键按下。具体是何键值则可以由程序设计判断,因为片选可以通过逐位清(16个位只能有一位为)来实现的(本实验才用轮转扫描算法)4.2 轮转扫描实现通过595向16位键盘输入片选,其中只有一位为,为了在同一时刻只判断一位是否按下。通过对片选数据逐位右移,将对每一位判断是否按下,如果同时满足该位片选为且有键按下,那么返回值为,说明有键按下,同时可在程

19、序中用一记数变量记录判断是哪一位,同时就解决了是何键按下,因为一旦判断出返回值为,说明此刻记数变量的值即为按下键盘为的值(或者说相关,看你具体程序如何处理),此刻立即取出变量中的值,就做到了判断是何键位的目的。5 实验流程图 总体流程图扫描函数流程图6 参考源代码7 思考题7.1 如果按键与需要的偶尔有差别,为什么?7.2 当按下键后,是否需要继续扫描,两者如何实现?7.3 同时按下两个键,什么结果,为什么?三 点阵屏汉字显示程序1 实验目的1.1 了解点阵屏显示基本原理1.2 熟悉74HC595芯片的原理,以及如何利用74HC595写程序实现串并转换。1.3 熟悉使用字模软件1.4 进一步熟

20、悉ARM的端口操作2 实验内容2.1 建立汉字字库2.2 在点阵屏上显示汉字3 实验预习要求3.1 预习GPIO(GERERAL PROGRAMABLE INPUT OUTPUT)通用可编程输入输出口的基本操作。3.2 找相关74HC595芯片的资料,了解起基本原理和使用方法。4 实验原理点阵屏涉及到4个引脚,分别是P0.20P0.17。P0.4,P0.17,P0.18和P0.19,P0.20分别作为74HC595的SCK,SI,RCK。(结合74HC595手册理解)通过SI口接收每位数据,P0.18和P0.19分别对应SI-X,SI-Y,用于控制行和列的显示;SCK的高电平发出移位信号,每位

21、数据都移动到下一个移位寄存器中;遇到同步发送脉冲RCK时,将多位数据一次发送到寄存器中,形成一个相当于16位或多位的并行数据。 点阵显示是这样实现的。利用串并转换将两个16位数据分别发送给P0.18和P0.19所对应的SI-X和SI-Y。它们分别控制片选位和显示数据位。(至于行列哪个作片选位哪个做数据显示位可由自己定,一般便于观察和结合字模软件,将点阵屏相对于实验箱正向的行作为数据显示位,列作为片选位)通过控制片选和数据显示位可以实现固定行显示固定的亮灭信息。再通过扫描算法(与LED灯相似)实现点阵屏显示任意数据信息。字模软件的使用:通过字模软件,可以很容易的实现16X16(或者其他大小)的点

22、阵字模数据的提取,而不用手动的去计算。具体的实现方法可以结合软件自己尝试,比较容易。字库的建立一个重要问题在于如何索引,即通过哪种方式可以方便的调用你的字库,一般建立字库采用二维数组。通过数字索引或者其他方式可以方便调用。如果是ASC码的字符,可以通过以ASK码为桥梁方便的建立索引。5 实验流程图图 2点阵总体流程图图 3 点阵扫描函数流程图 6 参考源代码7 思考题7.1 怎样使点阵屏隔一段时间显示另一个字?7.2 与LED程序相比较,有什么异同?四 外部中断实验1 实验目的1.1 了解外部中断的基本设置方法和原理。1.2 通过外部中断实验学习ARM中中断的产生机制。1.3 了解中断的应用。

23、2 实验内容2.1 通过实验箱发声器和红外发送-接收对管实现通过外部中断令发生器产生声响。3 实验预习要求3.1 预习ARM嵌入式系统基础教程中向量中断控制器和外部中断输入的章节,了解相关寄存器的内容和用法。3.2 了解什么是外部中断,与其他中断有什么联系和区别。4 实验原理首先需要介绍向量中断控制器的相关知识:4.1 向量中断控制器(VECTORED INTERRUPT CONTROLLER,简称VIC)向量中断寄存器:具有32个中断请求输入,可将其编程分为3类:FIQ,向量IRQ,非向量IRQ。可编程分配机制意味着不同外设的中断优先级可以动态分配及调整。中断输入可以在VIC被设置成三类1、

24、FIQ中断 :具有最高优先级2、向量IRQ中断 :具有中等优先级 VIC最多支持16个向量IRQ中断,这些中断被分为16个优先级,每个优先级有一个中断服务地址3、非向量IRQ中断 :具有最低优先级 所有的非向量IRQ中断共用一个中断服务地址4.2 相关寄存器与中断相关的常用和比较重要的寄存器主要有:VICIntEnable 中断使能寄存器32位,每一位控制一个中断源,向某一位写入1,允许该中断源产生中断VICIntClr 中断使能清零寄存器,与VICIntEnable相反,写入1,相应位中断源禁止中断VICIntSelect 中断选择寄存器 向某位写1,对应中断源产生FIQ中断,否则产生IRQ

25、中断,其中断相应延时相应较长VICVectCntl 中断向量控制寄存器 为中断源分配向量IRQ的优先级 ,VICVectCntl n,n值越小优先级越高,0=n=15 VICVectCntl 位 7 6 5 4 3 2 1 0功能 - - En 【 中断源序号 】VICVectAddr 向量地址寄存器 为该中断优先级设置服务程序入口地址VICRawIntr 中断状态寄存器 32寄存器,当某位为1时,对应位中断源产生中断请求VICFIQStatus FIQ状态寄存器 32寄存器,当某位为1时,对应位中断源产生FIQ中断请求VICIRQStatus IRQ状态寄存器 32寄存器,当某位为1时,对应

26、位中断源产生IRQ中断请求 VICSoftInt 软件中断寄存器 32寄存器,当某位为1时,对应位中断源产生相应中断请求VICSoftIntClear 软件中断清零寄存器 当某位为1时,将清零VICSoftInt对应位 软件使能寄存器VICSoftInt 位 311 0 功能 - 该位为1时只有在特权模式下访问VIC寄存器4.3 初始化基本步骤以上寄存器并不是全部需要用到,当需要时再进行相应设置即可。这里给出中断初始化的基本步骤: 1、设置中断类型 VICIntSelect 2、设置中断优先级 VICVectCnt 3、将中断服务程序写入相应中断优先级的中断服务程序地址 如:VICVectAd

27、drn = (int)IRQ_Timer0Interrupt 4、使能外部中断 VICIntEnable4.4 中断源下表列出了每一个外设功能的中断源。中断类型号 中断类型号 0 WDT(Watchdog Interrupt) 10 SPI0 1 - 11 SPI1 2 ARM Core 12 PLL 3 ARM Core 13 RTC 4 TIMER0 14 System Control(External Interrupt0(EINT0) 5 TIMER1 15 System Control(External Interrupt1(EINT1)6 UART0 16 System Contr

28、ol(External Interrupt2(EINT2)7 UART1 17 System Control(External Interrupt3(EINT3)8 PWM0 (Match 0-6(MR0-6) 18 A/D 4.5 外部中断LPC2114/2124/2210/2212/2214(包括我们使用的ARM芯片)含有4个外部中断输入(作为可选的引脚功能,即可以通过PINSEL0/1寄存器设置相应引脚为外部中断功能)。外部中断输入可用于将处理器从掉电模式唤醒。4.5.1 外部中断的相关寄存器有:EXINT 外部中断标志寄存器 包含EINT0、EINT1、EINT2和EINT3的中断标志

29、。 EXTWAKE 外部中断唤醒寄存器 包含3个用于控制外部中断中断是否将处理器从掉电模式唤醒的使能位。EXTMODE 外部中断方式寄存器 控制由每个引脚的边沿或电平触发中断EXTPOLAR 外部中断极性寄存器 控制由每个引脚的哪种电平或边沿来触发中断在对外部中断进行初始化设置时要注意,用EXINT寄存器选择外部中断0,然后利用EXTMODE寄存器选择边沿触发中断。电平触发中断和边沿触发中断的区别在于:电平触发中断是当输入电平为低或高时,将一直触发中断服务程序直到电平变为高或低;而边沿触发则是当电平发生跳变时才触发一次中断服务程序;根据不同需要选择不同触发方式。在我们的实验中要选取边沿触发。根

30、据EXTPOLAR寄存器可以设置每个引脚的哪种电平或边沿来触发中断。外部中断的初始化设置与一般的终端初始化设置基本一致,只是要多加属于外部中断自己的一些寄存器操作。4.5.2 脉冲输入模块脉冲输入模块中的红外线发送接收对管用作脉冲输入在正常状态下,发送管发送红外线,接收管接收,信号输出端输出为低电平;若发送管和接收管之间插入一件对红外线有遮挡的物体,接收管不能接收到红外线,此时信号输出端输出高电平。如果遮挡物是循环连续运动的话,该装置就是一个非常好的无触点信号源。5 实验流程图 图 4 外部中断总体流程图 图 5 外部中断服务程序(结合代码) 6 参考源代码7 思考题7.1 如果改用外部中断1

31、可不可以实现该外部中断实验?7.2 能否实现一个利用外部中断进行计数的程序,相应显示在LED灯中?五 定时器实验1 实验目的1.1 了解定时器工作的基本原理。1.2 掌握定时器的各个寄存器的功能和设置方法。1.3 了解ARM中定时器0和定时器1的基本用途。2 实验内容2.1 使用定时器0实现1秒定时,让蜂鸣器间隔一秒响一秒。3 实验预习要求3.1 预习定时器0和定时器1的章节,了解定时器特性,用途以及引脚。3.2 对定时器的寄存器进行全面的了解。4 实验原理定时器对外设时钟(pclk)周期进行计数,根据4 个匹配寄存器的设定,可设置位匹配(即到达匹配寄存器设定的定时值0 时)产生中断或执行其他

32、动作。他还包括4 个捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。1特性(1)带有可编程32 位预分频器的32 位定时器/计数器;(2)具有多达4 路捕获通道。当输入信号发生跳变时可取得定时器的瞬间值。也可选择使捕获事件产生中断;(3)4 个32 位匹配寄存器,匹配时的动作有如下3 种-匹配时定时器继续工作,可选择产生中断-匹配时停止定时器,可选择产生中断-匹配时复位定时器,可选择产生中断(4)4 个对应于匹配寄存器的外部输出,匹配时的输出有如下4 种-匹配时设置为低电平-匹配时设置为高电平-匹配时翻转-匹配时无动作2相关寄存器描述 (更加详细的寄存器描述参考ARM嵌入式系

33、统基础教程P274)TCR 定时控制寄存器,控制定时计数器(禁止或复位,是否启用) 1启用0禁止TC 定时器计数器 32位计数器,计数频率为pclk经过预分频计数器后频率值。(选择做定时器还是计数器,0定时器,1计数器)PR 预分频控制寄存器 用于设定分频值,32位寄存器,pclk/3相当于3个脉冲时间产生一个上升沿 计数时钟频率=Fpclk/(N+1)PC 预分频计数器 32位计数器,计数频率为pclk,当计数值等于预分频计数器的值时,TC计数器加一IR 中断标志寄存器 读该寄存器识别中断源,写该寄存器清除中断标志MCR 匹配控制寄存器 用于控制在匹配时是否产生中断或复位TC位 功能0 中断

34、(MR0) 为1时,MR0与TC值的匹配将产生中断1 复位(MR0) 为1时,MR0与TC值的匹配将使TC复位2 停止(MR0) 为1时,MR0与TC值的匹配将清零TCR的bit0位,使TC和PC停止5:3 MR18:6 MR2 与上对应相同9:11 MR3 MR n 匹配寄存器n,通过MCR寄存器可以设置匹配发生时的动作EMR 外部匹配寄存器 EMR控制外部匹配管脚MATx.0MATx.3CCR 捕获控制寄存器,用于设置捕获信号的触发特征(下降沿捕获还是上升沿),以及捕获发生时是否产生中断CRn(13) 捕获寄存器n,在捕获n引脚上产生捕获时间时,CRn装载TC的值3定时器初始化步骤: 1、

35、计数定时器计数频率 (设置T0PR) 2、设置匹配值及工作模式 (设置T0MCR) 3、设置捕获方式 (设置T0CCR) 4、设置定时器中断 (设置VIC) 5、启动定时器 (设置TCR)4中断函数ads1.2 规定,在定义中断服务函数时,必须加入关键字_irq,保证函数返回时会切换处理器模式。需要注意的是:注意在退出中断服务程序时,要清零相应外设的中断标志以及VICVectAddr,为响应下一次中断做好准备 。 在中断函数中我们添加需要处理的事件程序。5 实验流程图 图 6 定时器初始化流程图 图 7 定时器整体流程图(结合代码) 6 参考源代码7 思考题7.1 如何设置定时器1?7.2 怎

36、样将蜂鸣时间改为两秒一间隔?7.3 结合数码管程序,把数码管扫描放到定时器中。六 UART串口通信模块1 实验目的1.1 了解计算机常用的接口。1.2 掌握串口通信的原理,能实现实验箱与PC的通信。2 实验内容2.1 了解串口通信的数据帧格式及波特率设置。2.2 实现实验箱与PC的通信,包括从在PC上显示实验箱的键盘按键,在实验箱的数据管显示PC发送的数据。3 实验预习要求3.1 查找相关串口资料,了解串口工作的基本流程。4 实验原理4.1 串口接口简介计算机常见的接口包括:并行接口,串行接口,磁盘接口(IDE接口,EIDE接口),SCSI接口,USB接口等。其中串口是计算机上一种常用的设备通

37、信协议,大多数计算机包含两个基于RS232的串口。串口通讯对嵌入式设备(单片机)而言意义重大,因为它不但可以实现单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,还能实现设备之间的通信。4.2 串口数据帧格式及串口通信的控制串口要实现数据的通信,必须要保证串口发送与接收数据的速率一致和相同的数据帧格式。我们可以通过设置波特率来实现传输数据速率的匹配,所谓波特率是指每秒传送的信息位的数量。如果接收端与发送端的波特率设置不同的话,就会造成数据传输错误。 串口的数据帧格式一般为:图 1 数据帧格式及相应寄存器设置我们可以通过串行接口实现数据的发送和接收,一般通过查询方式发送数据,通过中断方式

38、接收数据。 其流程图如下: 图 2 串口发送函数流程图图 图3 串口接收(中断)函数流程图4.3 实现步骤图 4 串口连接电路逻辑图在LPC2292中与串口相关的寄存器(串口0):图 5 UART0相关的寄存器其中:(1)U0IER,U0IIR:中断使能与中断标志寄存器。 (2)U0DLM,U0DLL:波特率设置寄存器。(3)U0THR,U0TSR:发送缓存与发送移位寄存器。 (4)U0RBR,U0RSR:接收缓存与接收移位寄存器。(5)U0LCR:设置UART0格式(数据帧格式)。(6)U0FCR:FIFO控制。(7)U0LSR:UART0当前状态寄存器。在使用UART0之前需要设置的寄存器

39、:U0IER:中断的设置(中断优先级,中断服务程序地址等)。 U0DLM,U0DLL:波特率 (每秒传送的信息位的数量,一般设置为9600) 设置。U0LCR:数据帧格式设置(包括有效数据位数,奇偶校验,结束位数等)。U0FCR:使能FIFO与触发设置。 一般用默认值。5 实验流程图图 5 串口工作流程图6 参考源代码7 思考题7.1 串口与并口有什么不同?七 I2C存储程序1 实验目的1.1 理解并掌握I2C工作原理!1.2 理解并掌握AT24C02工作方式熟练掌握你存储方式以及读写各状态之间的转换和意义2 实验内容2.1 利用实验箱向AT24C02以字节形式写入并读出,用数码管显示3 实验

40、要求与预习3.1 参考ARM嵌入式系统基础教程(PPT)了解I2C工作原理。3.2 读ATC2402数据手册,理解你其操作原理4 实验原理4.1 I2C接口介绍是Philips推出的一种串行总线方式,用于IC器件之间的通信。它通过SDA和SCL两根线连到总线上的器件之间传递信息,并通过软件寻址识别到每个器件,而不是片选线。而对SDA和SCL则是通过器件之间发生应答和非应答信号。而关联应答和非应答信号,则会对器件产生不同状态,并通过状态的不同对器件操作。4.2 写函数带选择地址字节写的状态(已经发送启示条件)0X08(装入器件地址和读写位)(接受可器件地址和读写位并已经接受ACK)0X18(将发

41、送数据,即AT24C02的存储地址)-(接收到24C02的写入地址,接受ACK)0X28(将发送写入数据)-(接受到存储数据,接受到ACK)0X28(发送停止条件,STO复位), 每一状态参考课本设置下一次操作的初始状态!4.3 读函数带选择地址字节读的状态0X080X18(发送的要读地址)-(前面跟写一样)0X28(将置位STA将从新发送启始条件)(已经发送启始条件)0X10(将发送器件地址以及读状态)(接受到状态信息)0X40(将接收数据,返回非ACK)(接收到数据)0X58(提取数据)4.4 启动I2C后,循环等待中断,每到达一状态产生一次中断、直到完成,停止循环!具体状态转换请仔细读A

42、RM嵌入式系统基础教程(ppt)和ATC2402数据手册5 实验流程图总的流程图 写函数流程图 读函数流程图6 参考源代码7 思考题7.1 如何完成字符串写入和带选择地址连续读八 电机实验1 实验目的1.1 了解步进电机、直流电机工作的基本原理。1.2 学习步进电机、直流电机的控制原理和控制方法。2 实验内容2.1 实现直流电机不同转速的转动。2.2 利用定时器实现步进电机的不同转速的转动,并可以控制步进电机的正转和逆转。3 实验预习要求3.1 适当复习端口操作章节。3.2 在网上查找步进、直流电机相关资料,了解基本原理并结合电机连接引脚熟悉控制原理。4 实验原理4.1 步进电机步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 应用文书 > 技术指导

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服