S3C2410A的GPIO介绍及应用
2016-11-16 21:57
260 查看
一、GPIO的概念
GPIO的英文全称是General-Purpose Input/Output Ports,中文意思是通用I/O端口。在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号,GPIO就是满足这种需求的一种通用可编程I/O端口。
对于每个GPIO端口,其至少需要两个寄存器,一个是控制用的“通用I/O端口控制寄存器”,另一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,数据的传输方向是通过端口控制寄存器控制的。
二、S3C2410A芯片的GPIO特性
S3C2410A芯片内部集成了8组,共117个I/O引脚GPIO,其中GPIO端口分为A~H`等8中端口,每种端口都有第二功能甚至第三功能,对于这些功能可以通过对应的端口控制寄存器进行设置,可以设置为端口输入模式、端口输出模式等。当I/O设置为GPIO输出模式时,可以通过写相应的rGPXDAT寄存器控制相应I/O口输出高电平或低电平,rGPXDAT为1时对应的I/O口输出为高电平,为0时输出为低电平。
GPIO的初始化输入/输出:
以组位单位进行,GPIO A~GPIO H 共8组。初始化是依据实际应用需求,通过编程进行设置。输入操作是从数据寄存器的相应位中读出数据,输出是将数据写入到数据寄存器的被设置为输出的相应位。
三、S3C2410A的GPIO输出运用
通过对S32410A的GPIO口的设置实现LED1到LED4的亮灭及蜂鸣器报警,蜂鸣器报警一次,LED1~LED4一起亮灭五次,LED1~LED4再以二进制形式按顺序显示0到15,其中LED1为二进制最低位。
GPIO的英文全称是General-Purpose Input/Output Ports,中文意思是通用I/O端口。在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号,GPIO就是满足这种需求的一种通用可编程I/O端口。
对于每个GPIO端口,其至少需要两个寄存器,一个是控制用的“通用I/O端口控制寄存器”,另一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,数据的传输方向是通过端口控制寄存器控制的。
二、S3C2410A芯片的GPIO特性
S3C2410A芯片内部集成了8组,共117个I/O引脚GPIO,其中GPIO端口分为A~H`等8中端口,每种端口都有第二功能甚至第三功能,对于这些功能可以通过对应的端口控制寄存器进行设置,可以设置为端口输入模式、端口输出模式等。当I/O设置为GPIO输出模式时,可以通过写相应的rGPXDAT寄存器控制相应I/O口输出高电平或低电平,rGPXDAT为1时对应的I/O口输出为高电平,为0时输出为低电平。
GPIO的初始化输入/输出:
以组位单位进行,GPIO A~GPIO H 共8组。初始化是依据实际应用需求,通过编程进行设置。输入操作是从数据寄存器的相应位中读出数据,输出是将数据写入到数据寄存器的被设置为输出的相应位。
三、S3C2410A的GPIO输出运用
通过对S32410A的GPIO口的设置实现LED1到LED4的亮灭及蜂鸣器报警,蜂鸣器报警一次,LED1~LED4一起亮灭五次,LED1~LED4再以二进制形式按顺序显示0到15,其中LED1为二进制最低位。
#include "config.h" #define LED1_CON (1 << 11) //GPE11口 #define LED2_CON (1 << 12) //GPE12口 #define LED3_CON (1 << 4) //GPH4口 #define LED4_CON (1 << 6) //GPH6口 #define BEEP (1 << 10) //GPH10口 #define BEEP_MASK (~BEEP) void DelayNS(uint32 dly) { uint32 i; for(; dly > 0; dly--) { for(i = 0; i < 50000; i--); } } void BEEP() { rGPHDAT = rGPHDAT & BEEP_MASK; DelayNS(5); rGPHDAT = rGPHDAT |BEEP; DelayNS(5); } void LED_ON() { rGPEDAT = RGPEDAT | (0X03 << 11); rGPHDAT = RGPHDAT | (0X05 << 4); } void LED_OFF() { rGPEDAT = RGPEDAT & (~(0X03 << 11)); rGPHDAT = rGPHDAT & (~(0X05 << 4)); } void LED_Disnum() { dat = dat & 0x0000000F; //参数过滤 //控制LED3、LED4显示 if(dat & 0x08) { rGPHDAT = rGPHDAT | (0x01 << 6); } else { rGPHDAT = rGPHDAT & (~(0X01 << 6)); } if(dat & 0x04) { rGPHDAT = rGPHDAT | (0x01 << 4); } else { rGPHDAT = rGPHDAT & (~(0x01 << 4)); } //控制LED1、LED2显示 rGPEDAT = (rGPEDAT&(~(0x03<<11))) | ((dat & 0x03) << 11); } int main() { int i; rGPECON = (rGPECON&(~(0x0f<<22))) | (0x05<<22); //设置GPE11、GPE12为GPIO输出模式 rGPHCON = (rGPHCON&(~(0x33<<8))) | (0x11<<8); //设置GPH4、GPH6为GPIO输出模式 rGPHCON = (rGPHCON&(~(0x03<<20))) | (0x01<<20); //设置GPH10为GPIO输出模式 while(1) { BEEP(); for(i = 0; i < 5; i++) { LED_OFF(); DelayNS(5); LED_ON(); DelayNS(5); } for(i = 0; i < 16; i++) { LED_Disnum(i) ; DelayNS(15); } } return 0; }
相关文章推荐
- Jakarta Struts应用框架介绍
- Rational中DataPool的介绍与实际应用
- 端到端J2ME应用开发实例——介绍Smart Ticket
- Java应用中表达式解析器(Java Cup/JFlex)生成器的介绍及示例
- [转载]SSE指令介绍及其C、C++应用
- PHP中的SQlite数据库应用介绍 php sqlite数据库
- Jakarta Struts应用框架介绍
- 蓝牙基本介绍及相关应用
- UCML--编译型应用框架快速开发工具体系介绍
- Rational中DataPool的介绍与实际应用-续(1)
- 当前主要所见即所得(WYSIWYG)在线编辑器介绍及应用
- 应用Rational 工具简化基于J2EE的项目:第一部分 介绍
- 2005,Linux企业应用走向成功-OSDL专题介绍
- 用Struts建立MVC应用的介绍
- Rational中DataPool的介绍与实际应用-续(2)
- Rational中DataPool的介绍与实际应用-续(4)
- Jakarta Struts应用框架介绍
- 在PHP中应用MVC的介绍(一)
- Jakarta Struts应用框架介绍
- SQL2000系统表、存储过程、函数的功能介绍及应用