历史上的今天
今天是:2024年11月01日(星期五)
2021年11月01日 | ARM之GPIO介绍(Exynos4412平台)
2021-11-01 来源:eefocus
GPIO
概述:GPIO的英文全称是General-Purpose Input/Output,也就是通用输入输出。在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO.接口至少有两个寄存器,即“通用IO控制寄存器”和“通用IO数据寄存器”。
特性
46个可中断通用控制I/O;
172个外部中断;
32个外部可唤醒中断;
252个多路复用I/O口;
睡眠模式引脚状态可控(除了GPX0,GPX1,GPH2,GPH3);
GPIO常用寄存器
引脚控制寄存器(GPxCON x=A0~V4)
在exynos4412中,大多数的引脚都是功能复用的,所以必须对每个引脚进行配置。引脚控制寄存器(GPxCON)用来配置每个引脚的功能。



引脚数据寄存器(GPxDAT x=A0~V4)
如果引脚功能被配置为输出功能,可以通过向GPxDAT寄存器对应位写入数据,控制引脚输出相应电平。如果引脚被配置为输入功能,则可以从GPxDAT寄存器对应位读出数据读回的数据就是当前引脚的电平状态。

引脚上拉下拉设置寄存器(GPxPUD x=A0~V4)
exynos4412芯片的内部给引脚设置了上拉电路和下拉电路,通过引脚上下拉设置寄存器控制引脚上拉电阻和下拉电阻的使能和禁止。如果引脚的上拉电阻被使能,则无论在哪种状态(输入、输出、DATAn、EINTn等其他功能)下,上拉电阻都起作用。

引脚驱动能力寄存器(GPxDRV x=A0~V4)
根据和引脚连接的外设电器特性,设置引脚合适的驱动电流,达到既能满足正常驱动的需求,也不浪费功耗。

低功耗模式引脚功能控制寄存器(GPxCONPDn x=A0~V4)
该寄存器用来控制exynos4412芯片在低功耗模式下的引脚功能,类似GPxCON寄存器,部分引脚没有这个功能。
低功耗引脚上下拉设置寄存器(GPxPUDPDN x=A0~V4)
该寄存器用来控制exynos4412芯片在低功耗模式下的引脚上拉和下拉功能的使能和禁止,类似GPxPUDPDN寄存器,部分引脚诶呦这个功能。
注意
GPIO模块的基地址是0x1100_0000
GPx2组的配置寄存器GPx2DRV的地址是:基地址+偏移量
0x1100 0000+0x0c4c=0x11000c4c
GPIO寄存器的封装
直接封装
#define GPx2CON (*(volatie unsigned int *)0x1100 0c40)
1
这里定义了一个宏,宏定义在预处理阶段进行直接替换。0x11000c40是一个十六进制的数据,前面用(unsigned *)修饰,表示把0x11000c40强制转换成一个指向unsigned int型的指针变量。
volatile 是C 语言的 32个关键字之一,是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件中断或者线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,每次读取这个变量的值都要从内存单元里读取,而不是直接使用放在高速缓存或寄存器里的备份,从而可以提供对特殊地址的稳定访问。
结构体封装
和直接封装是相同的道理,在这里就不进行赘述,一般都是使用直接封装的方法,有兴趣的可以将直接封装改写为结构体封装。
上一篇:ARM指令集(数据处理指令)
下一篇:ARM之I2C总线协议介绍
史海拾趣
|
各位能否推荐一8位模数芯片,AD/DA集成到一个片子上的,最好是I2C接口,或spi接口的,我知道一款,但不好买,各位仁兄还知道有没有其他的吗?小弟在此先谢了啊… 查看全部问答> |
|
我用内嵌TCP/IP协议的GPRS模块进行数据传输,其它命令都是正确的回复,但是最后一个上网的命令不正确 大家好,希望能帮帮我。我用西门子公司的MC55进行GPRS中的TCP/IP数据传输,用51单片机控制,现在TCP/IP设置的命令都回复的OK,但是最后一条连网命令不正确,经查证发现连网的命令是发送正确的,就是连不上网,是怎么回事啊?… 查看全部问答> |
|
为了单独测试这个DS18B20的初始化,弄了个最小化的电路如下: DS18B20接P1.7,LED接P1.0 如果初始化成功,则LED应该点亮. 程序: #include sbit DQ = P1^7; sbit LED = P1^0; void delay2us(unsigned char t) { whil ...… 查看全部问答> |
|
交流下大家的Windows CE产品,看看目前市场上用到的Windows CE产品有哪些? 注:标明Windows CE版本号、产品名及简要介绍、工资。 先说我自己的: Windows CE 5.0、Windows CE 6.0 终端——类似电脑,主要用户行业的窗口柜台(如银行、邮政 ...… 查看全部问答> |
|
我的屏幕的分辨率为800*480.那么对应的屏幕坐标为(3200,1920)?。。我现在出现的问题是,平常的操作基本正常,但是无法出现右键,AYGSHELL组件也已经选了。是不是抖动问题?但是我在DdsiTouchPanelGetPoint中保存第一次按下时的坐标,在弹起之前 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:37 编辑 今年大赛做B题基于自由摆的平板控制系统的参赛者有时间可以而看看,这个论文感觉就是我们试题B的出处!由于文件太大。。采用分卷压缩的!将3个附件同时下载下来即可解压! … 查看全部问答> |
|
想用休眠模式让电机停,执行到寄存器pcon不停? #include #define uchar unsigned char #define uint unsigned int sbit a = P2^6;//电机 sbit k = P3^7;//按键进入休眠 void ex_int0() interrupt 0//外部中断0唤醒函数 { PCON=0; } void ...… 查看全部问答> |




