0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式GPIO接口基础操作

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-08-15 14:00 次阅读

1、GPIO

GPIO(General Purpose Input/Output Port),即通用输入输出端口,就是芯片的一些引脚。作为输入端口时,我们可以通过它们读入引脚的状态--高电平或低电平,作为输出端口时,我们可以通过它们输出高电平或低电平来控制连接的外围设备。

S3C2440有130个GPIO引脚,分为A~J共9组:GPA、GPB、…、GPJ。通过设置相应的寄存器来设置某个引脚的功能(输入或输出或是其他特殊功能)。

2、通过寄存器操作GPIO

每个端口可以很容易的通过软件配置以满足各种系统配置和设计需求,在使用之前你必须定义每个引脚的功能,如果不是用于复用功能,则引脚可以配置为普通输入输出端口。

1)端口配置寄存器GPxCON(x为A~J)

GPxCON是用于选择引脚功能。

PORT A的端口配置寄存器GPACON中每一位对应一个引脚(PORT A共23个引脚,bit0~bit22对应GPA0~GPA22)。当某位被设为0时,相应的引脚被设置成输出引脚,此时可以在GPADAT中相应位写入0或1让此引脚输出低电平或高电平。当某位被设为1时,相应的引脚被设为地址线或用于地址控制,此时GPADAT无用。(GPACON通常被设为全1,以便访问外部存储器件)

PORT B~PORT J的端口配置寄存器操作完全相同:GPxCON中每两位控制一个引脚,00为输入、01为输出、10为特殊功能、11保留。

2)端口数据寄存器GPxDAT(x为A~J)

GPxDAT是用于读/写引脚数据。

当引脚被设为输入时,读此寄存器可得到相应引脚的电平状态是高还是低;当引脚被设为输出时,通过写此寄存器的相应位可设置相应引脚输出高电平或低电平。

3)端口上拉寄存器GPxUP(x为B~J,注意:PORT A端口没有这个寄存器)

GPxUP是用于选择是否使用内部上拉电阻

此寄存器的某位被设置为1时,相应引脚不使用内部上拉电阻;设置为0时,相应引脚使用内部上拉电阻。

图1 上拉电阻

3、使用软件来访问硬件

对单个引脚的操作有3种:输出高低电平、检测引脚状态、中断,这些操作一般通过读、写寄存器完成。如图2所示电路,可以设置GPFCON寄存器将GPF4、GPF5、GPF6引脚设置4为输出功能,然后写GPFDAT寄存器的相应位使这3个引脚输出高电平或低电平来控制相应的LED。相应的引脚输出低电平时,LED点亮,输出高电平时,LED熄灭。

图2 LED电路图

S3C2440的GPFCON、GPFDAT寄存器地址分别是0x56000050、0x56000054,通过软件读写它们的地址可以访问这些寄存器。S3C2440芯片手册对这些寄存器的介绍如下图:

图3 PORT F寄存器介绍

4、GPIO操作实例

使用GPIO控制一个LED。例如,我们要想点亮LED1,就需要设置GPF4引脚为输出功能,然后设置该引脚输出低电平。

板子上电后执行的第一条指令,并不是main函数,如果我们使用keil开发,启动文件会由编译器完成(会有一个S3C2440.S文件就是启动文件),它要做的工作主要是各种初始化然后跳转到C文件的main函数执行。但是我们在Linux系统下使用arm-linux-gcc编译裸机程序时,就需要自己编写一个这样的启动文件代码。(建一个目录led_on_c,把编写的代码文件和Makefile文件放在该目录下)

自己编写的启动文件代码crt0.S内容:

下面是LED1的控制程序led_on_c.c文件,内容如下:

Makefile文件:

第2、3行分别编译源程序crt0.S、led_on_c.c

第4行将编译得到的结果连接起来

第5行把连接得到的ELF格式可执行文件led_on_c_elf转换成二进制格式文件led_on_c.bin

第6行将结果转换为汇编码以供查看

在led_on_c目录下执行make命令生成可执行文件led_on_c.bin,然后把该文件烧写到NAND Flash。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    4995

    浏览量

    117423
  • GPIO
    +关注

    关注

    16

    文章

    1124

    浏览量

    50414

原文标题:嵌入式最基础的GPIO接口操作了解一下!

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式操作系统及其特点

    通过API函数来使用操作系统。嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标推化浏览器等,嵌入式
    发表于 07-11 16:51

    嵌入式基础教程之嵌入式系统组成

      本文创客学院嵌入式开发培训讲师为读者介绍嵌入式基础教程之嵌入式系统组成,嵌入式系统通常由嵌入式处理器、外围设备
    发表于 06-28 13:59

    嵌入式最基础的GPIO接口操作了解一下!

    (输入或输出或是其他特殊功能)。2、通过寄存器操作GPIO每个端口可以很容易的通过软件配置以满足各种系统配置和设计需求,在使用之前你必须定义每个引脚的功能,如果不是用于复用功能,则引脚可以配置为普通
    发表于 08-30 14:17

    什么叫嵌入式

    设备的一部分,它是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含
    发表于 06-28 11:23

    什么是嵌入式操作系统? 

    、INTEGRITY、OSE、C ExecuTIve  什么是嵌入式操作系统 嵌入式操作系统是一种支持嵌入式系统应用的
    发表于 10-28 07:35

    概述常用的嵌入式操作系统

    嵌入式操作系统需要在不同的微处理器中,因此,需要将微处理器外围的嵌入式硬件抽象处理,形成标准的接口函数或接口文件,便于
    发表于 11-03 07:11

    嵌入式linux驱动对gpio的基本操作

    文章目录代码驱动层代码应用层代码 测试驱动Makefile这里记录的是嵌入式linux驱动对gpio的基本操作。实现的内容是:gpio驱动编写>&
    发表于 11-05 07:59

    基于Linux的嵌入式操作系统

    嵌入式操作系统一、嵌入式操作系统概述1.1 嵌入式操作系统的特点1.2
    发表于 11-08 09:05

    GPIO接口的硬件介绍与操作方法分享

    嵌入式Linux开发ARM9裸机-1-GPIO接口一、GPIO硬件介绍1、二、GPIO操作1、一
    发表于 12-14 07:01

    如何在嵌入式linux中应用层操作gpio

    嵌入式linux文件io方式操作gpio口示例在嵌入式linux中应用层操作gpio口,如果懒得
    发表于 12-16 06:19

    嵌入式操作系统(EOS)是指什么

    嵌入式操作系统(EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通
    发表于 12-22 08:27

    什么是嵌入式操作系统?嵌入式操作系统有何功能

    什么是嵌入式操作系统?常见的嵌入式操作系统有哪几种?嵌入式操作系统有何功能?
    发表于 12-24 07:07

    嵌入式linux、arm嵌入式操作系统的相关资料分享

    开发工具链异常处理linux内核裁剪与移植GCC命令基本用法系统调用与中断进程间通信接口中断驱动程序引导程序C语言与汇编语言嵌入式操作系统嵌入式系统应用领域
    发表于 12-27 07:35

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面
    发表于 09-11 07:24

    STM32嵌入式操作系统介绍

    嵌入式操作系统的特点• 嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面
    发表于 09-28 06:59