S3C2410A的GPIO介绍及应用

发布者:温柔心情最新更新时间:2018-12-18 来源: eefocus关键字:S3C2410A  GPIO 手机看文章 扫描二维码
随时随地手机看文章

一、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为二进制最低位。


#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;

}


关键字:S3C2410A  GPIO 引用地址:S3C2410A的GPIO介绍及应用

上一篇:s3c2410中断跳转过程
下一篇:ARM裸机——FS2410按键控制LED灯(查询方式)

推荐阅读最新更新时间:2024-03-16 16:20

恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3--GPIO模块(一)
KEA128芯片有7组IO,PORTA--H每组8个引脚,PORTI有7个引脚,共计71个。 单个引脚驱动能力是2.5mA,内部均可上拉到VDD,无内部下拉。应通过编程将未使用引脚内部上拉。 MCU处在运行、等待、调试模式下,GPIO正常工作,停止模式下,GPIO停止工作。 下面是端口控制寄存器介绍,主要是端口滤波寄存器,上拉使能寄存器和高驱动能力使能寄存器 GPIO有三组寄存器,分别为GPIOA、GPIOB、GPIOC。每组有7个寄存器,分别为输出寄存器(PDOR)、输出置1寄存器(PSOR)、输出清0寄存器(PCOR)、输出取反寄存器(PTOR)、输入寄存器(PDIR)、数据放向寄存器(PDD
[单片机]
恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3--<font color='red'>GPIO</font>模块(一)
STM32学习探究:流水灯的实现
流水灯的实现 这里我们使用 stm32mini 开发板实现外接流水灯,这里我采用了三个灯(说明问题就可以了)。外接的引脚分别为PA2,PB8,PC13三个引脚,在连接的时候,采用灯的正极接GPIO引脚,负极接GND(这是一种合理的方式)。 注意:虽然接VCC也可以发光,但是这样不是合理的连接方式,而且,发光的情况刚好与接GND的情况相反。 参考的相关资料如下: 时钟使能: 端口配置: 端口输出: 具体实现的代码如下: //led.h文件 #ifndef __LED_H #define __LED_H #include sys.h //LED端口定义 #define LED0 PAout(
[单片机]
STM32学习探究:流水灯的实现
STM32之HAL库和标准库的GPIO
HAL库 使用CubeMX自动生成需要的代码。 一、初始化GPIO 自动生成的HAL库GPIO初始化代码: void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO
[单片机]
按键实验(GPIO的输入模式)
@按键实验(GPIO的输入模式) #引言 在之前的实验中,小罗同学使用的都只是GPIO的输出模式,这次的按键实验虽然比较简单,但也是我第一次接触GPIO的输入,所以还是想写点东西记录一下。 #按键模块电路图 我手中的开发板除去复位按键后还有其余四个按键,电路结构图如下: 以上四个按键所对应的管脚编号分别为:PA0、PE4、PE3、PE2。由图可知,KEY_UP为高电平有效,其他三个均为低电平有效。 #按键配置 大家都知道,在使用引脚之前首先要进行相应的配置来初始化,相关代码如下: void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; //先对挂接在
[单片机]
按键实验(<font color='red'>GPIO</font>的输入模式)
漫谈STM32的GPIO
简介:单片的输入输出不叫GPIO,仅仅是个io,稍微复杂点的就是串口,至于后面那些增强的1t的带da的单片机,都不属于入门学习范围.那些东西都是为了低成本而存在,对学习没有任何作用.只要初学者入门了,所有片内外设都非常简单的搞定.本文是一片基础学习文章.入门者的精神食粮. 理解gpio不仅仅是会配置寄存器,因为好多人根本不知道寄存器如何配置.如果不信的话那回答我这个问题,stm32的io频率到底该配置成多少Mhz? 上面这张图是来自stm32的中文版手册.我对这些模块进行了简单的标注.下面我就从外到内进行分析信号的流向以及每一部分存在/屏蔽的意义. 先看上半部分,就是io的I,input,输入功能.信号从io引脚流入,
[单片机]
漫谈STM32的<font color='red'>GPIO</font>
STM32 GPIO口不同的模式心得
首先GPIO最基本、最简单的作用是我们可以通过编程的方式让它作输入或者输出,而输入/输出的形式为高低电平(通常0V为低电平,3.3V为高电平)。 要让GPIO作输入或者输出,首先就需要对IO口相关的寄存器进行配置。而寄存器是中央处理器内的组成部分,寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。 因此对IO口的初始化就是向相关寄存器里面写不同的值,从而确定使用哪一个IO口(IO口标号)、以及IO口工作模式(输入还是输出)、输出速度等参数。 在经过初始化之后就可以正常使用IO口了,比如如果IO口设置成了某个输入模式,就可以通过调用相关函数或者直接操作相关寄存器去得到IO口的电平
[单片机]
STM32——GPIO设置:快速点亮第一个LED灯
简介 不同的开发板的原理图结构也不尽相同,笔者在这里使用野火的MINI-V3(F103VET6)简易开发板对GPIO口的设置做一个简单的介绍,并实现按键控制LED灯的亮灭。方便读者可以快速熟悉并灵活应用。 原理图分析 首先我们来看一下发光二极管部分和按键部分的原理图。 下面是按键的原理图部分: 在这里,我们将使用KEY1(PA0)来控制红灯PB5的亮灭。由原理图可知,其控制LED灯的PB5引脚为低电平时,灯亮。当KEY1按下时,PA0引脚由之前的低电平转为高电平(3V3)。明确了目的之后我们就可以分析GPIO口并进行设置了。 GPIO设置 经过上述的功能明确之后,我们将其分为两大类,分别是输入类(如按键)和输出类(LED灯
[单片机]
STM32——<font color='red'>GPIO</font>设置:快速点亮第一个LED灯
stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载程序解决方法
软件环境:iar for arm 在系统复位的时候默认是开启JTAG与swd的,在点击下载后的2秒内按下复位键即可将程序下载进stm32 注意:在程序里边加入GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); 来彻底解除限制,或用写寄存器的方式,SWG_CFG 写入000
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved