PART1:

GPIO(General Purpose I/O ports)即通用输入/输出口。我们在实际应用中,不管是接LCD、接键盘,控制流水灯等等应用,都离不开对I/O的操作。可以说,GPIO的操作是所有硬件操作的基础。

S3C2440共有130个I/0端口,共分九组,分别为:GPA、GPB、...、GPJ。我们可以通过寄存器来操作这些IO。S3C2440共有三种寄存器,分别为GPxCON、GPxDAT、GPxUP。GPxCON用于选择引脚功能;GPxDAT用于读/写引脚数据;GPxUp用于确定是否使用内部上拉电阻。需要注意的是,A组没有GPAUP寄存器,即A组I/O口无上拉电阻选择功能。
   1、GPxCON
   A组I/O口的GPxCON比较特殊,GPACON中每位对应一根引脚(共23根)。当某位设置为0时,相应引脚为输出引脚。反之,为相应引脚为地址线或用于地址控制,此时GPADAT无用。
   B组~J组的I/O在寄存器操作方面完全相同。GPxCON中每两位控制一根引脚:00表示输入、01表示输出、10表示特殊功能、11保留不用。
   2、GPxDAT
   GPxDAT用于读/写引脚数据:当引脚设置为输出时,则写次寄存器相应位可令此引脚输出高电平或低电平;当此引脚设置为输入时,则读此寄存器相应位引脚的电平状态为高还是低。
   3、GPxUP
   GPxUP用来设置相应引脚是否使用上拉电阻。某位为0时则不使用上拉电阻;某位为1时则使用上拉电阻。
PART2:
1.GPIO简介:  
   GPIO(通用输入/输出端口)是相对于芯片而言的,如果在对应的芯片存在GPIO引脚则可以通过读这些引脚来获取引脚的变化(即:引脚的高低电平的变化).
   在S3C2410芯片中存在117个I/O端口,共分为A~H共8组分别为GPA~~GPH,在S3C2440中存在130个I/O端口,共分为A~J9组名分别为GPA~GPJ,配置这些端口相应的寄存器(GPXCON, x=A~H/J),设置引脚是用于输入/输出,或者是用于特殊功能.
1.1通过寄存器来访问引脚:
    1.GPXCON寄存器:
        GPXCON(x=A~~H/J)寄存器用于设置相应引脚的功能是输入/输出,还是特殊功能或保留不用。
         在功能配置方面PORTA与PORTB~PORTH/J有所不同,GPACON寄存器中每一位对应一个引脚(共23位),当某位被设置为0是,对应该位引脚被设置为输出引脚(可以用于写入),此时我们可以对GPADAT寄存器(用于写引脚)进行写操作,当某位被设置为1时(相应引脚为地址线/或用于控制),此时GONADAT无用.
         PORTB~PORTH/J对寄存器操作完全相同,GPXCON每2位对应一个引脚:
         00--输入。 01--输出。10--特殊功能。11--保留不用。
    2.GPXDAT寄存器:
        GPXDAT用于读/写引脚,当配置GPXCON寄存器设置某引脚为输入时,读此寄存器可以得知相应引脚的变化,当配置GPXCON寄存器设置某引脚为输出时,通过写此此寄存器可以是相应引脚产生高低电平变化.
   3.GPXUP寄存器:
         当某位为1时,相应引脚无内部上拉电阻;为0是,相应引脚使用内部上拉电阻;
1.2通过软件访对GPIO的访问:
#define GPBCON        (*(volatile unsigned long *)0x56000010)
/*0x56000010:为S342440的GPBCON地址 */
#define GPBDAT         (*(volatile unsigned long *)0x56000014)
/*0x56000014:为S342440的GPBDAT地址*/
#define  GPB_OUT      (1<<(2*5)) 
/*此处为设置GPBCON对应第五位引脚的值其值为01----对应GPBCON展开值为0000010000000000*/                   
GPBCON = GPB_OUT; //设置GPB5为输出
GPBDAT  &= ~(1<<5);  //向GPB5输出低电平
PS:GPIO各端口的寄存器地址对考s3c2440之datasheet。

#define GPBCON (*(volatile unsigned *) 0x56000010) //GPBCON控制寄存器的地址 控制寄存器用于确定数据引脚的用途,2个bit确定用途 #define GPBDAT (*(volatile unsigned *) 0x56000014) #define GPBUP (*(volatile unsigned *) 0x56000018) #define GPB5_out (1<< (5*2))//即为 0000 0000 0000 0000 0000 01 00 00 00 00 00 void delay() { int i, j; for(i = 0; i < 10000; i ++) for(j = 0; j < 50; j ++); } int main() { //GPBCON = 0x155555;//配置protB的所有引脚为输出 GPBCON = GPB5_out;//GPB5设置为输出 GPBDAT = (1<<5);//初始时设置LED1为高电平即熄灭状态 while(1) { //使第一个LED1 闪烁 GPBDAT = ~(1<<5);//使得GPB5为低电平LED1处于亮的状态 delay(); GPBDAT = (1<<5); delay(); } return 0; }

电路图:

MICRO2440裸跑之GPIO相关推荐

  1. Part2:S3C2440裸跑一个LED程序

    Part2:S3C2440落跑一个LED程序 0 写在前面 1 明确"操作对象"和"操作过程" 2 代码编写和分析--看一个程序如何裸跑... 2.1 代码编写 ...

  2. ZYNQ UltraScale 双核裸跑 / 裸跑 + Linux

    # 1 背景提出     某项目对中断延迟有很高的要求,客户的构架为:PPC+ Vxworks,延迟时间大概:10us.(因硬件设计原因, 还可以更小).我们在Linu系统下测试中断延迟大概几百us, ...

  3. PYNQ2裸跑之音频ADAU1761

    前面在qt和matlab中实现了音频的播放,最终目的是在底层硬件中实现数据播放,之所以使用裸跑是为了更好的理解音频codec的相关配置和IIC.I2S的接口的通用代码的开发和测试.         芯 ...

  4. F1C100S裸奔nes游戏模拟器-f1c100s裸跑-WINDOWS下keil-MDK纯裸跑 回味80后的小幸福

    裸跑f1c100s-nes游戏模拟器 F1C100S-完整nes游戏模拟器(显示60帧-可音频输出),后附测试文件可下载. 全志F1C100S使用ARM9内核,QNF88封装适合手工焊接,内置32M ...

  5. 4岁雪地裸跑、7岁自主创业,这个11岁机器人比赛冠军,南京大学自考毕业了!...

      新智元报道   编辑:张佳 [新智元导读]4岁雪地裸跑.独自驾驶帆船出海,5岁开飞机,7岁自主创业成为公司第一大股东,8岁徒步100公里穿越新疆罗布泊无人区,9岁小学毕业,还获得多项机器人世界冠军 ...

  6. 广州高校学生发起百人裸跑要求校方安装空调

    华南师范大学石牌校区的同学们为了装空调出奇招,校方表示正在一校三区逐步安装 新快报讯 炎炎夏日,在没有空调的宿舍里要如何度过?华南师范大学石牌校区的同学们为此出奇招,准备发起一场"百人裸跑& ...

  7. s3c2416运行JAVA_s3c2416裸跑环境配置

    最近刚刚开始学习ARM-linux,上周买了块tq2416的板子,给的Linux资料太复杂太深奥不愿看,等不及想要把2416跑起来.于是到处找相关裸跑资料,可是用2416的人实在少,网上的资料更少,裸 ...

  8. TX2440 裸跑实验-跑马灯(ADS1.2编译) 入门

    TX2440 裸跑实验-跑马灯(ADS1.2编译) 入门 一.实验目的: 理解汇编的编程结构,有助于学习ARM汇编,为后续学习CPU的启动机制来了个入门级 二.实验环境: TX2440平台 三.实验工 ...

  9. s3c2416keil下裸跑

    原文  http://www.cnblogs.com/yanzhicheng/p/3197053.html 最近刚刚开始学习ARM-linux,上周买了块tq2416的板子,给的Linux资料太复杂太 ...

最新文章

  1. 学习BeetlSQL总结(2)——查询API,更新API
  2. python数值型转换字符型_2.6 字符型常量
  3. python在线课程价格-杭州python课程价格
  4. 《深入理解计算机系统》读书笔记七:浮点数表示
  5. Shell——从hello world和echo命令开始
  6. linux无缝升级的版本,最近一周发布新版本的Linux发行版 - 2020-01-03
  7. Project testing plan
  8. 如何防止盗号 使用windows自带的 屏幕键盘 OSK
  9. Linux下browser-sync无法启动Chrome的解决方法
  10. codeforces 212E IT Restaurants(树形dp+背包思想)
  11. ddtek.oracle.dll使用相关
  12. python实现爱心代码
  13. python 获取路由器中设备ip地址_Python中如何获取当前机器的IP地址
  14. 2022年内蒙古医院三基考试传染病学考前冲刺题及答案
  15. python逆向爬取网易云评论进行情感分析!网易评论才是高手
  16. python re模块下载_python: re模块
  17. comp3311辅导 assignment1
  18. 大型三甲医院医学影像PACS系统源码(三维重建)
  19. slua 是c语言开发的吗,初学者必备文档:LUA新手快速学习笔记
  20. Android自学之路,DrawerLayout must be measured with MeasureSpec.EXACTLY.错误

热门文章

  1. acm国际大学上计算机竞赛,2018年ACM国际大学生程序设计竞赛校内选拔赛报名通知...
  2. springboot流浪狗领养管理系统 毕业设计-附源码260839
  3. 阿里云天池龙珠计划SQL训练营Task 2:SQL基础查询与排序
  4. knockout ififnot
  5. hdu 5411 2015多校十1006 ~矩阵快速幂
  6. 调用hcm接口同步员工数据更新员工信息没有同步到bdm
  7. 冒号在matlab中的含义,matlab中冒号的用法
  8. 马斯克脑机接口_马斯克脑机接口是真的吗
  9. 【晒猫狂魔】晒晒我家逆子
  10. 汽车电子(三)--- 车机TBOX 介绍