第7章 通用端口_第1页
第7章 通用端口_第2页
第7章 通用端口_第3页
第7章 通用端口_第4页
第7章 通用端口_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 7.1 I/O口工作原理及其控制寄存器口工作原理及其控制寄存器 一、一、 I/O口简介口简介 S3C2410A共有共有117个多功能复用个多功能复用I/O口,分为口,分为8组:组: PORT APORT H。 PORT A可做作为功能口,输出口使用;可做作为功能口,输出口使用; PORT BPORT H作输入输出口,功能口使用。作输入输出口,功能口使用。 8组组I/O口按照其位数的不同,可分为口按照其位数的不同,可分为23位,位,11位,位,16位,位,8位:位: 1个个23位的输出口(位的输出口(PORT

2、A) 2个个11位的位的I/O口(口(PORT B 和和PORT H) 4个个16位的位的I/O口(口(PORT C、PORT D、PORT E、PORT G) 1个个8位的位的I/O口(口(PORT F) 2 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 配置配置I/O口功能,需要通过设置一系列寄存器来实现,寄存器口功能,需要通过设置一系列寄存器来实现,寄存器 包括:包括: 1、端口控制寄存器(、端口控制寄存器(GPACONGPHCON) 功能:用于定义每个引脚的功能功能:用于定义每个引脚的功能 说明:说明:PORTA与与PORTBPORTH在功能选择方面

3、有所不同在功能选择方面有所不同 GPACON每一位对应一根引脚(每一位对应一根引脚(23根)根) 0 :输出引脚:输出引脚 1:功能引脚,主要是用地址线:功能引脚,主要是用地址线 A端口主要用于功能口,作为地址线使用端口主要用于功能口,作为地址线使用 GPBCONGPHCON:每两位控制一根引脚每两位控制一根引脚 “00”:输入,:输入,“01”:输出,:输出,“10”:功能引脚功能引脚,”11”保留保留 3 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 例例1:引脚端口作输入,如图所示:引脚端口作输入,如图所示: 则则GPBCON寄存器的值(寄存器的值(3

4、2位)为:位)为: xxxx xxxx xxxx xxxx xxxx 0000 0000 xxxx 按键的输入值在按键的输入值在GPBDAT寄存器的第寄存器的第 2,3,4,5位上,对应外部的输入值位上,对应外部的输入值 4 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 2、端口数据寄存器(、端口数据寄存器(GPADATGPHDAT) 功能:存放读写引脚的数据功能:存放读写引脚的数据 说明:每一个引脚对应寄存器中的一位说明:每一个引脚对应寄存器中的一位 当引脚设为输入,读此寄存器可知相应当引脚设为输入,读此寄存器可知相应 引脚的电平状态,当引脚设为输出时,写

5、引脚的电平状态,当引脚设为输出时,写 此寄存器的相应位即可令引脚输出相应位。此寄存器的相应位即可令引脚输出相应位。 5 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 3、端口上拉寄存器、端口上拉寄存器(GPBUPGPHUP) 功能:用于控制每组端口的上拉电阻。功能:用于控制每组端口的上拉电阻。 1:相应引脚无上拉电阻:相应引脚无上拉电阻 0:相应引脚使用内部上拉电阻相应引脚使用内部上拉电阻 GPIOx Vcc 说明:上拉电阻的作用,当说明:上拉电阻的作用,当GPIOGPIO引脚处于第三态时,引脚处于第三态时, 引脚的状态由上拉电阻决定。引脚的状态由上拉电阻决

6、定。 6 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 7 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 1、端口程序设计、端口程序设计 主要是实现对端口特殊寄存器的访问主要是实现对端口特殊寄存器的访问 例:如想设置例:如想设置GPGCON寄存器值为寄存器值为0 x55555555 汇编语言实现:汇编语言实现: GPGCON寄存器地址为:寄存器地址为:0 x56000060 程序:程序: ldr r0,=0 x55555555 ldr r1,=0 x56000060 str r0,r1 或者:或者: GPGCON equ

7、0 x56000060 ldr r0,=0 x55555555 ldr r1,= GPGCON str r0,r1 C语言如何实现对特殊寄存器的访问?语言如何实现对特殊寄存器的访问? 8 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 2、c语言中访问寄存器语言中访问寄存器 主要使用主要使用volatile volatile关键字是嵌入式系统开发的一个重要特点。关键字是嵌入式系统开发的一个重要特点。 volatile(可变的)(可变的)这个关键字说明这变量可能会被意想不到地改变,这样编译这个关键字说明这变量可能会被意想不到地改变,这样编译 器就不会去假设这个变

8、量的值了。这种器就不会去假设这个变量的值了。这种“意想不到地改变意想不到地改变”,不是由程序去,不是由程序去 改变,而是由改变,而是由硬件硬件去改变。去改变。 例如要访问例如要访问0 x56000060地址地址 (1)转换为地址类型)转换为地址类型 (volatile unsigned *) 0 x56000060 把把0 x56000060强制转换成强制转换成volatile unsigned long类型的地址类型的地址p. 即地址的操作的范围是从即地址的操作的范围是从0 x56000060开始的开始的4个字节个字节(long型型).暂记为暂记为p。 (2)定义指针)定义指针 #defin

9、e A *p 即即A为为P指针指向位置的内容了。这里就是通过内存寻址访问到寄存器指针指向位置的内容了。这里就是通过内存寻址访问到寄存器A, 可以读可以读/写操作写操作 写操作:写操作:A=0X11223344 读操作:读操作:tmp=A 9 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 上例:设置上例:设置GPGCON寄存器值为寄存器值为0 x55555555 ( c语言)语言) #define rGPGCON (*(volatile unsigned *)0 x56000060) rGPGCON= 0 x55555555; 10 第第5 5章章 基于基于S

10、3C2410S3C2410的系统硬件设计的系统硬件设计 C程序:程序: #define rGPBCON (*(volatile unsigned *)0 x56000010) #define rGPBDAT (*(volatile unsigned *)0 x56000014) int data; rGPBCON= rGPBCON /设定设定PORTB为输入方式为输入方式 data= rGPGDAT; /data存放按键的键值存放按键的键值 例例1:引脚端口作输入,如图所示:引脚端口作输入,如图所示: 则则GPBCON寄存器的值(寄存器的值(32位)为:位)为: xxxx xxxx xxxx

11、xxxx xxxx 0000 0000 xxxx 11 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 例例2:端口作为输出:端口作为输出,点亮点亮led1和和led2两盏灯。两盏灯。 #define rGPGCON (*(volatile unsigned *)0 x56000060) #define rGPGDAT (*(volatile unsigned *)0 x56000064) (1)rGPGCON寄存器值为:寄存器值为: Xxxx xxxx xxxx 0101xxxx xxxx xxxx xxxx rGPGCON=rGPGCON (或者是(或者是

12、 rGPGCON=rGPGCON ) (2)点亮)点亮LED1, LED2灭灭 rGPGDAT寄存器值为:寄存器值为: xxxx xxxx xxxx xxxx xxxx xx10 xxxx xxxx rGPGDAT=rGPGDAT /LED1亮亮,LED2灭灭 (3)点亮)点亮LED2,LED1灭灭 rGPGDAT=rGPGDAT |(18) /LED2亮,亮,LED1灭灭 12 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 轮流点亮轮流点亮led1和和led2完整程序:完整程序: #define rGPGCON (*(volatile unsigned *

13、)0 x56000060) #define rGPGDAT (*(volatile unsigned *)0 x56000064) Void main(void) int i; for(;) rGPGCON=rGPGCON For(i=0;i100000;i+); rGPGDAT=rGPGDAT /LED1亮亮,LED2灭灭 For(i=0;i100000;i+); rGPGDAT=rGPGDAT |(18) /LED2亮,亮,LED1灭灭 13 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 #define rGPGCON (*(volatile unsig

14、ned *)0 x56000060) #define rGPGDAT (*(volatile unsigned *)0 x56000064) void main(void) int flag,i; for(;) if (flag=0) rGPGCON=rGPGCON rGPGDAT=rGPGDAT /LED1亮亮,LED2灭灭 for(i=0;i100000;i+); flag=1; else rGPGCON=rGPGCON rGPGDAT=rGPGDAT |(18) /LED2亮,亮,LED1灭灭 for(i=0;i100000;i+); flag=0; 14 第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 测验:测验: 1、2410系统的系统的IO端口的数量是多少?共分为多少组?控端口的数量是多少?共分为多少组?控 制制IO口的特殊功能寄存器有几

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论