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。

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

    关注

    31

    文章

    5334

    浏览量

    120219
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52049

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    嵌入式实时操作系统教程

    嵌入式实时操作系统教程:以VRTX为对象详细介绍了嵌入式实时操作系统的原理和应用,特别是第一部分关于嵌入式实时
    发表于 04-19 21:55 44次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作</b>系统教程

    嵌入式操作系统是什么_嵌入式操作系统有哪些

    驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到
    发表于 04-08 14:36 2.1w次阅读

    如何在嵌入式Linux中使用GPIO

    了解如何在嵌入式Linux中使用GPIO,特别强调Zynq-7000系列。 我们介绍了基本的用户和内核空间GPIO使用情况,以及GPIOGPIO
    的头像 发表于 11-26 07:02 4070次阅读

    嵌入式Linux下使用GPIO中断功能

    GPIO应用是嵌入式设备最基本的应用之一, 本文就基于Embedded Linux系统演示开发GPIO中断以及输出相关的基本应用示例.
    发表于 04-29 15:48 2550次阅读
    <b class='flag-5'>嵌入式</b>Linux下使用<b class='flag-5'>GPIO</b>中断功能

    嵌入式操作系统的主要特点都有哪些

    嵌入式操作系统(EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通
    发表于 11-26 11:35 1.6w次阅读

    嵌入式操作系统如何应用_嵌入式操作系统的组成

    本文首先介绍了入操作系统的特点,其次阐述了嵌入式操作系统的应用,最后介绍了嵌入式操作系统的组成
    发表于 09-01 16:36 3604次阅读

    嵌入式GPIO驱动LED设计

    嵌入式GPIO驱动LED设计1. 操作内容2. 操作步骤2.1 编译Linux内核2.2 编译LED驱动2.3 运行文件3. 操作结果1
    发表于 10-20 21:51 13次下载
    【<b class='flag-5'>嵌入式</b>】<b class='flag-5'>GPIO</b>驱动LED设计

    嵌入式Linux LED GPIO

    文章目录前言LED终端脚本C语言GPIO子系统微信公众号前言这是前2篇:嵌入式Linux i.MX开发板嵌入式Linux NFS嵌入式Linux 交叉编译工具链Linux 中的三大类驱
    发表于 11-01 17:05 11次下载
    <b class='flag-5'>嵌入式</b>Linux LED <b class='flag-5'>GPIO</b>

    嵌入式Linux的GPIO中断

    做个STM32开发的都知道,通过程序配置让普通的GPIO口具有中断功能。这样对于设备检测某些硬件的自动设备要方便的多。那么在嵌入式的Linux是否具有这样的功能呢?答案是肯定的,下面我们就来介绍一下
    发表于 11-01 17:37 6次下载
    <b class='flag-5'>嵌入式</b>Linux的<b class='flag-5'>GPIO</b>中断

    嵌入式Linux驱动 GPIO操作 包括驱动和应用层程序对驱动进行测试

    文章目录代码驱动层代码应用层代码 测试驱动Makefile这里记录的是嵌入式linux驱动对gpio的基本操作。实现的内容是:gpio驱动编写&amp;amp;amp;gt;&
    发表于 11-02 14:36 10次下载
    <b class='flag-5'>嵌入式</b>Linux驱动 <b class='flag-5'>GPIO</b><b class='flag-5'>操作</b> 包括驱动和应用层程序对驱动进行测试

    嵌入式操作系统

    嵌入式操作系统一、嵌入式操作系统概述1.1 嵌入式操作系统的特点1.2
    发表于 11-03 18:36 46次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作</b>系统

    什么是嵌入式操作系统?

    嵌入式操作系统是一种专门的操作系统(OS),旨在为非计算机的设备执行特定任务。嵌入式操作系统的主要工作是运行允许设备完成其工作的代码。
    的头像 发表于 12-23 15:33 7759次阅读
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>操作</b>系统?