您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 实验二 IO 口实验
IO口实验实验目的•掌握S3C2410X芯片的I/O控制寄存器的配置;•通过实验掌握ARM芯片使用I/O口控制LED显示;•了解ARM芯片中复用I/O口的使用方法。实验设备•硬件:EmbestEduKit-III实验平台,EmbestARM标准/增强型仿真器套件,•PC机。•软件:EmbestIDEforARM集成开发环境,Windows98/2000/NT/XP。实验内容•编写程序,控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:LED1亮-LED2亮-LED3亮-LED4亮-LED1灭-LED2灭-LED3灭-LED4灭-全亮-全灭,如此反复。•GPIO(GeneralPurposeI/O,通用输入/输出接口)也称为并行I/O(parallelI/O),是最基本的I/O形式,由一组输入引脚、输出引脚或输入/输出引脚组成,CPU对它们能够进行存取操作。有些GPIO引脚能够通过软件编程改变输入/输出方向。•一个双向GPIO端口(D0)的简化功能逻辑图如图所示,图中PORT为数据寄存器和DDR(DataDirectionRegister)为数据方向寄存器。实验原理图双向GPIO功能逻辑图•DDR设置端口的方向。如果DDR的输出为1,则GPIO端口为输出形式;如果DDR的输出为零,则GPIO端口为输入形式。写入WR—DDR信号能够改变DDR的输出状态。DDR在微控制器地址空间中是一个映射单元。这种情况下,如果需要改变DDR,则需要将恰当的值置于数据总线的第0位(即D0),同时激活WR—DDR信号。读DDR,就能得到DDR的状态,同时激活RD—DDR信号。•如果设置PORT引脚端为输出,则PORT寄存器控制着该引脚端状态。如果将PORT引脚端设置为输入,则此输入引脚端的状态由引脚端上的逻辑电路层来实现对它的控制。对PORT寄存器的写操作,需要激活WR—PORT信号。PORT寄存器也映射到微控制器的地址空间。需指出,即使当端口设置为输入时,如果对PORT寄存器进行写操作,并不会对该引脚产生影响。但从PORT寄存器的读出,不管端口是什么方向,总会影响该引脚端的状态。•S3C2410A共有117个多功能复用输入/输出端口(I/O口),分为端口A~端口H共8组。为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件对进行配置。每个引脚的功能必须在启动主程序之前进行定义。如果一个引脚没有使用复用功能,那么它可以配置为I/O口。注意:端口A除了作为功能口外,只能够作为输出口使用。•在S3C2410A中,大多数的引脚端都是复用的,所以对于每一个引脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功能。每个引脚端的功能通过端口控制寄存器(PnCON)来定义(配置)。与配置I/O口相关的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口数据寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。S3C2410A的I/O口配置情况请参考第3章所列。•S3C2410X芯片上共有71个多功能的输入输出管脚,他们分为7组I/O端口。•一个23位的输出端口(端口A);•两个11位的输入/输出端口(端口B、H);•四个16位的输入/输出端口(端口C、D、E、G);•一个8位的输入/输出端口(端口F);•可以很容易的设置每组端口来满足不同系统配置和设计的需要。在运行程序之前必须对每个用到的管脚功能进行设置,如果某些管脚的复用功能没有使用,可以先将该管脚设置为I/O口。1.S3C2410XI/O口控制寄存器•端口控制寄存器(GPACON-GPHCON)•在S3C2410X中,大多数的管脚都复用,所以必须对每个管脚进行配置。端口控制寄存器(PnCON)定义了每个管脚的功能。•如果GPF0-GPF7和GPG0-GPG7在掉电模式使用了弱上拉信号,这些端口必须在中断模式配置。•端口数据寄存器(GPADAT-GPHDAT)如果端口被配置成了输出端口,可以向PnDAT的相应位写数据。如果端口被配置成了输入端口,可以从PnDAT的相应位读出数据。•端口上拉寄存器(GPBUP-GPHUP)端口上拉寄存器控制了每个端口组的上拉电阻的允许/禁止。如果某一位为0,相应的上拉电阻被允许,如果是1,相应的上拉电阻被禁止。如果端口的上拉电阻被允许,无论在哪种状态(INPUT,OUTPUT,DATAn,EINTn等)下,上拉电阻都要起作用。•多状态控制寄存器这个寄存器控制数据端口的上拉电阻,高阻态,USBpad和CLKOUT选项。•外部中断控制寄存器(EXTINTN)24个外部中断有各种各样的中断请求信号,EXTINTN寄存器可以配置信号的类型为低电平触发,高电平触发,下降沿触发,上升沿触发,两沿触发中断请求。8个外部中断引脚有数字滤波器(参考数据手册中的EINTFLTn)。只有16个外部中断(EINT[15:0])用于唤醒cpu。•掉电模式和I/O端口在掉电模式下仍然保持所有的GPIO的所有状态值,可以参考相应章节的内容。EINTMASK在掉电模式下也不能阻止唤醒cpu。但是如果EINTMASK屏蔽了EINT[15:4]的某一位,仍然可以唤醒cpu,但是SRCPND的EINT4_7位和EINT8_23位不能在cpu唤醒后马上被置位。I/O端口控制寄存器端口A控制寄存器(GPACON/GPADAT)端口B控制寄存器(GPBCON,GPBDAT,GPBUP)•端口B被配置位输入端口后,可以从引脚上读出相应的外部源输入的数据。如果端口被配置位输出端口,向该位写入的数据可以被发送到相应的引脚上。如果该引脚被配置位功能引脚,读出的数据不确定。•置位GPBUP[10:0]中的某位,允许端口B的相应位的上拉功能,反之禁止上拉功能。端口C控制寄存器(GPCCON,GPCDAT,GPCUP)2.电路设计LED1-4分别与GFP7-4相连,通过GFP7-4引脚的高低电平来控制发光二极管的亮与灭。当这几个管脚输出高电平的时候发光二极管熄灭,反之,发光二极管点亮。实验操作步骤•1.准备实验环境1)编写代码;2)使用EduKit-III目标板附带的串口线连接目标板上UART0和PC机串口COMx2.串口接收设置•在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。3.打开实验例程•1)运行EmbestIDE开发环境,进入实验例程目录EduKit2410\4.2_led_test子目录下的•led_test.pjf例程,编译链接工程;•2)点击IDE的Debug菜单,选择RemoteConnect项或F8键,远程连接目标板;•3)点击IDE的Debug菜单,选择Download下载调试代码到目标系统的RAM中;•4)在工程管理窗口中双击led_test.c就会打开该文件,分别在约第34行•(for(i=0;i100000;i++);)和58行(for(i=0;i100000;i++);)设置断点后,•点击Debug菜单Go或F5键运行程序;•5)程序停到第一个断点处,观察四个灯是否都被点亮(注意观察渐变过程),按stepout(shift+F11),跳出这个子函数,继续执行;•6)程序运行到led_off(),按stepinto(F11),停到第二个断点处,观察四个灯是否都熄灭(注意观察渐变过程)。按stepout(shift+F11),继续执行;•7)去掉断点,重新下载,执行程序;3.观察实验结果•观察发光二极管的亮灭情况,可以观察到的现象与前面实验内容中的相符,说明实验成功的实现了对I/0的操作。实验练习题•自己编写程序使数码管以不同的显示方式显示
本文标题:实验二 IO 口实验
链接地址:https://www.777doc.com/doc-3377397 .html