历史上的今天
返回首页

历史上的今天

今天是:2024年12月18日(星期三)

正在发生

2018年12月18日 | S3C2410A的GPIO介绍及应用

2018-12-18 来源:eefocus

一、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;

}


推荐阅读

史海拾趣

CHONGQING PINGYANG ELECTRONICS CO.,LTD.公司的发展小趣事

2005年,重庆平洋电子有限公司迎来了一个重要的合作机会。经过严格的筛选和谈判,公司与海尔集团达成了先期采购协议,成为海尔集团在重庆市唯一一家免第三方认证的企业。这一合作不仅为公司带来了稳定的订单和收益,还进一步提升了公司的品牌影响力和市场竞争力。

Good Will Instrument Co., Ltd.公司的发展小趣事

2005年,重庆平洋电子有限公司迎来了一个重要的合作机会。经过严格的筛选和谈判,公司与海尔集团达成了先期采购协议,成为海尔集团在重庆市唯一一家免第三方认证的企业。这一合作不仅为公司带来了稳定的订单和收益,还进一步提升了公司的品牌影响力和市场竞争力。

Ethertronics公司的发展小趣事

随着公司的发展,技术创新成为推动重庆平洋电子有限公司不断前进的重要动力。公司不断加大对研发的投入,引进高端人才,积极研发新技术、新产品。经过多年的努力,公司在电子元器件领域取得了重大突破,产品性能和质量得到了显著提升,赢得了市场的广泛认可。

AND Displays公司的发展小趣事

随着公司规模的扩大和实力的增强,AND Displays开始实施国际化战略。公司在全球范围内设立了多个研发中心和生产基地,以便更好地满足不同地区客户的需求。同时,公司还加强了与国际同行的交流与合作,共同推动显示技术的创新与发展。通过全球布局和资源整合,AND Displays逐渐成为了全球显示行业的领军企业之一。

以上五个故事从不同角度展示了AND Displays公司在电子行业中的发展历程和成就。这些故事不仅反映了公司的技术实力和市场竞争力,也体现了公司对环保、可持续发展等社会责任的关注和担当。

Dielectric Laboratories公司的发展小趣事

为了进一步拓展业务,DLI于1955年加入了知名的都福集团(Dover Corporation)。通过这一合作,DLI获得了更多的资金支持和市场资源,加速了公司的发展步伐。同时,都福集团也为DLI提供了更广阔的发展平台,使其能够接触到更多的行业前沿技术和市场信息。

风华邦科(FH-BK)公司的发展小趣事

在电子科技领域,FlyWin集团不断投入研发资源,致力于新技术的开发与应用。公司成立了专门的研发团队,专注于人工智能、物联网等前沿技术的探索。通过不断的技术创新,FlyWin成功推出了一系列具有自主知识产权的电子产品,如智能传感器、物联网解决方案等。这些产品不仅提升了公司的市场竞争力,也为公司的长远发展提供了强大的技术支撑。

问答坊 | AI 解惑

毕业设计制作的小车机器人!

1。寻线 2。寻光 3。机器人之间无线数传用以协同完成任务 4。红外蔽障 5。超声波蔽障 6。串口摄像头 7。自制光电码盘测速…

查看全部问答>

小东西避免重大损失—Windows CE在工控中的应用

大家知道起重机么?看看右图就有个直观的了解咯。起重机又称吊车,属于物料搬运机械。起重机的工作特点是做间歇性运动,即在一个工作循环中取料、运移、卸载等动作的相应机构是交替工作的哟,在我们的建筑业中是不可缺少的重要工具哦。 那么 ...…

查看全部问答>

实时嵌入式操作系统uCOS_II在AT91上的移植

【摘 要】 介绍了嵌入式实时操作系统uCO S2II 的特点和内核结构, 并通过对A TM EL 公司A T 91M 55800A 的体系结构的分析, 讨论了移植的可能性, 同时提出了移植过程中出现的问题及解决的方法, 最终通过设计多 任务的应用程序证实了移植的成功L…

查看全部问答>

sql ce不能运行,求助~~

在只安装有.net framework环境下,在运行到连接sqlce数据库时就无法通过,但也不明确提示什么错, 在安装有开发环境下,能正常运行,不知道怎么回事~~~ 总不至于在客户那边都给装上开发环境吧~~ 我试着装过net framework compact,sql ce,都没效果~~ ...…

查看全部问答>

硬件仿真

想问一下支持硬件仿真的单片机芯片都有哪些  谢谢…

查看全部问答>

寻找PDA无线点菜系统,或者开发人员

寻找PDA无线点菜系统,或开发人员,qq: 5521201 ,谢谢。…

查看全部问答>

国内做BLDC电机的有哪几家公司

国内做BLDC电机的有哪几家公司?…

查看全部问答>

ATMEL系列

原装正品:ATMEGA8A-8AU     2010+ATMEGA8L-8AU     2010+ ATMEGA8L-8PU     2010+ ATMEGA8A-PU      2010+ATMEGA16L-8PU    2010+ATMEGA32 ...…

查看全部问答>

快速查询多就绪任务的最高优先级

今天用GRLIB将手机界面做出来了,加入touch.c就完成了触摸功能,就可以完成任务了。然后又把UC/OS_II加入,以前一直做多就绪任务最高优先级查询,但一直没弄清楚,现在弄明白了。也和大家分享一下心得。 要弄清楚,首先要了解两个变量和两个数组。 ...…

查看全部问答>

我UCOS项目任务优先级划分问题

我在做同步相量测量(PMU) 就是把AD采集的三项交流电压和电流值打上时标然后上传,在接收PC发送的控制命令,如控制继电器开关的命令。由于要对数据打时标(时间戳),底层的PMU采集装置散布在不同的点,每一个点(PMU)安装一个GPS 不现实 ...…

查看全部问答>