微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux头文件中s3c2410 GPIO的宏

Linux头文件中s3c2410 GPIO的宏

时间:11-11 来源:互联网 点击:

图:

图2 set_gpio_ctrl的参数字段结构图
低16位即为前面所述的GPIO的端口号,高16位中的R字段用来屏蔽/使能IO口的上拉电阻功能。R=0,上拉电阻使能;R=1,上拉电阻失效。M字段用来设置IO口的工作模式,M=0,IO口为输入端口;M=1,IO口为输出端口;M=2,可选功能1;M=3,可选功能2。

set_gpio_ctrl宏就是通过写相应GPIO所在组的GPXCON(X为A~H)的相应位来设置IO口模式(GPACON每一个位控制一个IO口,而GPBCON~GPHCON都是两个位控制一个IO口的模式),通过写GPXUP(X为A~H)来决定是否启用上拉电阻。典型的set_gpio_ctrl调用方式如下:

set_gpio_ctrl(GPIO_MODE_OUT | GPIO_PULLUP_DIS | GPIO_G12);

代码

  1. #defineset_gpio_ctrl(x)
  2. ({GPCON(GRAB_PORT((x)))&=~(0x3<(GRAB_OFS((x))*2));
  3. GPCON(GRAB_PORT(x))|=(GRAB_MODE(x)<(GRAB_OFS((x))*2));
  4. GPUP(GRAB_PORT((x)))&=~(1
  5. GPUP(GRAB_PORT((x)))|=(GRAB_PULLUP((x))

这条语句是将GPG12设置成输出模式,并且不使用端口的上拉电阻。

五、结束
以上主要结合《S3C2410X 32-BIT RISC MICROPROCESSOR USERS MANUAL》分析了$(LINUX_KERNEL_INCLUDE)/asm-arm/arch/s3c2410.h中所定义的对2410GPIO进行操作的几个宏,除了文中提及的几个宏,除此还有read_gpio_bit(x)、read_gpio_reg(x) 、write_gpio_reg(x, v)等,实现方法和上述类似,在此不再一一赘述!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top