嵌入式 ARM9 S3C2451裸机 GPIO封装原理和代码实现(详解)
来源:互联网 发布:男博导女博士知乎 编辑:程序博客网 时间:2024/06/06 01:15
博主以循循渐进的方式理解
总结如下:
GPxCON 配置引脚功能 一般把引脚配置为输出模式进行对外设的控制
GPxDAT 设置引脚高低电平 一般设置为高/低电平
解释如下:
OVERVIEW:
总览
S3C2451 has 174 multi-functional input/output port pins and there are 12 ports as shown below:
S3C2451具有174个多功能输入/输出端口引脚,如下所示12个端口
• Port B(GPB) : 11-input/output port//端口B 下的0---27这28个引脚既有输出功能又有输入功能
......
• Port L(GPL) : 15-input/output port
• Port M(GPM) : 2-input port
Each port can be easily configured by software to meet various system configurations and design requirements.
每个端口都可以通过软件轻松地配置,以满足不同的系统配置和设计要求
You have to define which function of each pin is used before starting the main program. If a pin is not used for
multiplexed functions, the pin can be configured as I/O ports.
在启动主程序之前,必须定义每个pin的功能。如果该引脚没被用作多路复用,则该引脚可以配置为I / O端口
那么问题来了,如何配置引脚功能?
2 PORT CONTROL DESCRIPTIONS:
端口控制描述
2.1 PORT CONFIGURATION REGISTER (GPACON-GPMCON)
端口配置寄存器(GPACON-GPMCON)
In S3C2451, most of the pins are multiplexed pins. So, It is determined which function is selected for each pins.
The GPxCON(port control register) determines which function is used for each pin.
GPxCON(端口控制寄存器)决定哪个引脚使用什么功能。
2.2 PORT DATA REGISTER (GPADAT-GPMDAT)
端口数据寄存器(GPADAT-GPMDAT)
If ports are configured as output ports, data can be written to the corresponding bit of GPxDAT. If Ports are
configured as input ports, the data can be read from the corresponding bit of GPxDAT.
如果将端口配置为输出端口,则S3C2451可以将数据写入相应的GPxDAT中。如果端口是
那么问题来了,何为输入何为输出?
引脚配置为输入是指处理器通过寄存器采集引脚状态 比如,通过GPIOB的某个引脚采集按键Key1是否按下
引脚配置为输出是指处理器通过配置寄存器来给引脚赋值 比如,通过配置GPIOB的某个引脚来控制LED灯的亮灭
回过头来,看GPxCON 、GPxDAT的配置方法(暂且只谈这俩,因为常用)
以GPB为例
3.2 PORT B CONTROL REGISTERS (GPBCON, GPBDAT, GPBUDP, GPBSEL)
Register AddressR/WDescription Reset Value
GPBCON 0x56000010R/WConfigures the pins of port B(配置端口B的引脚) 0x0
GPBDAT 0x56000014R/WThe data register for port B (用于端口B的数据寄存器)0x0
GPBUDP 0x56000018 R/W Pull-up/down control register for port B0x00154555
GPBSEL 0x5600001cR/WSelects the function of port B 0x1
GPBCON Bit Description
Reserved [31:22] Reserved
GPB10 [21:20]//两bit控制一个引脚00 = Input01 =Output
10 = nXDREQ[0] 11 = XDREQ[0]
GPB9 [19:18] 00 = Input 01 = Output
10 = nXDACK[0] 11 = XDACK[0]
GPB8 [17:16] 00 = Input 01 = Output
10 = nXDREQ[1] 11 = XDREQ[1]
GPB7 [15:14] 00 = Input 01 = Output
10 = nXDACK[1] 11 = XDACK[1]
GPB6 [13:12] 00 = Input 01 = Output
10 = nXBREQ 11 = XBREQ
GPB5 [11:10] 00 = Input 01 = Output
10 = nXBACK 11 = XBACK
GPB4//特殊 [9:8] 00 = Input 01 = Output
10 = TCLK 11 = reserved
GPB3 [7:6] 00 = Input 01 = Output
10 = TOUT3 11 = reserved
GPB2 [5:4] 00 = Input 01 = Output
10 = TOUT2 11 = reserved
GPB1 [3:2] 00 = Input 01 = Output
10 = TOUT1 11 = reserved
GPB0 [1:0] 00 = Input 01 = Output
10 = TOUT0 11 = reserved
GPBDAT Bit Description
Reserved(预留位) [31:11] Reserved(未定义的值)
GPBDAT [10:0] [10:0] When the port is configured as input port, the corresponding bit is the pin
state. When the port is configured as output port, the pin state is the same
as the corresponding bit. When the port is configured as functional pin, the
undefined value will be read.
当端口被配置为输入端口时,相应的位就是引脚的
当端口被配置为功能引脚时
未定义的值将被读取。
//至此原理部分理解完了 文章太长 所以代码部分贴到了我的资源里。为方便,S3C2451的手册和原理图一并贴过去。
- 嵌入式 ARM9 S3C2451裸机 GPIO封装原理和代码实现(详解)
- ARM9 S3C2451 LED 知识点 代码 封装 题目实践
- ARM9裸机之GPIO
- s3c2440 ARM9 裸机驱动第一篇-GPIO驱动(汇编)
- s3c2440 ARM9 裸机驱动第一篇-GPIO驱动(C)
- 读书笔记| (二)ARM9 嵌入式学习:代码 & 原理篇
- S3C2451-GPIO
- 基于ARM--s3c2451的函数封装---GPIO口的封装
- ARM9 S3C2451 UART 理解
- 002_<ARM9从裸机到Linux操作系统>____裸机篇__S3C2440的GPIO编程
- S3C2451嵌入式简介
- Ajax实现原理,代码封装
- ARM9裸机启动代码,堆栈的理解[转]
- ARM9 S3C2451 什么是UART中的FIFO ?
- tiny6410裸机实验第2章--------------点亮LED灯(原理和代码分析)
- 嵌入式系统学习——S3C2451之2.4寸LCD函数封装
- 嵌入式Linux裸机开发(十六)——shell实现
- 基于S3C2451裸机开发的电子相册
- 为什么要用到泛型类、泛型方法
- Java泛型之Type体系
- 用JavaSE知识点完成登入注册界面
- 【安全】10分钟理解Capability本质
- 排序算法之简单插入排序
- 嵌入式 ARM9 S3C2451裸机 GPIO封装原理和代码实现(详解)
- application的 使用
- bzoj 3439: Kpm的MC密码
- 最小二乘法
- 39-逗号操作符的分析
- Java知识结构图
- 树和二叉树的应用
- ffmpeg+SDL2 实现简单播放器
- 怎样才能赚到钱系列(二)