基于ARM的Linux嵌入式系统如何操作GPIO口

2019-07-13 01:35发布

深圳扬创科技的Linux工业平板电脑是一款基于ARM架构的Cortex-A8硬件平台,Linux2.6.30操作系统,QT库4.7.3版本,自带8入8出的GPIO口,方便用户控制,采集信号,GPIO口读写操作如下:
IO输入输出功能(此功能选配)
总共有16路IO口,默认配置为8路输入和8路输出。
(1)8路输出
bool SetIO( unsignedchar level , unsigned char ioNum)
参数说明:
unsigned char level: 0:低电平1:高电平
unsigned char ioNum: 0-7(分别代表要输出的IO口号:OUT0 ~ OUT7)
(2)8路输入
a) bool SetIoMode(int ioNum,int ioMode ,int triggeredMode);
参数说明:
int ioNum: 0-7:分别代表要设置的IO口号:IN0 ~ IN7;0xf:代表设置所有的8路输入口为某种方式。
int ioMode: IO_POLLING_MODE(查询模式)
IO_INTR_MODE (中断模式)
int triggeredMode: IO_INTR_LOW_LEVEL_TRIGGERED 低电平触发
IO_INTR_HIGH_LEVEL_TRIGGERED 高电平触发
IO_INTR_FALLING_EDGE_TRIGGERED 下降沿触发
IO_INTR_RISING_EDGE_TRIGGERED 上升沿触发
IO_INTR_BOTH_EDGE_TRIGGERED 双沿触发
函数说明:
SetIoMode是设置8路输入口的接收方式,分为查询方式和中断方式,可以对每一个口单独配置为查询或者中断。
在配置为查询模式后此函数的第三个参数不起作用,可以设置为任意的整数。
在配置为中断模式后此函数的第三个参数来设置中断触发的模式,总共分为以上5种。
注意:系统中默认使用的8路输入IO口全是查询模式,可以通过以上函数设置为中断方式。 
b) unsigned charGetIO(unsigned char * level ,unsigned char ioNum)
参数说明:
unsigned char * level: 0:得到低电平1:得到高电平
unsigned char ioNum: 0-7(分别代表要得到的IO口号:IN0 ~ IN7)
返回值说明:
Unsigned char :返回的是所有8路输入IO口的当前高低状态,unsigned char总共一个字节,8位,从第0位---第7位,分别代表IN0-IN7的高低电平。
c) bool GetIoBlockMode( unsignedchar * level,unsigned char ioNum)
参数说明:
unsigned char * level: 0:得到低电平1:得到高电平
unsigned char ioNum: 0-7(分别代表要得到的IO口号:IN0 ~ IN7)
函数说明:此函数是用于IO口配置为中断模式后,用户在一个线程中调用此函数,当要读取的IO口(ioNum)中断产生的时候才会返回,否则一直阻塞,所以此函数只能是用在IO口设置为中断方式后才可以用。
d)8路输入IO口使用说明
查询模式:系统默认8路输入IO全是查询模式,所以如果用户不需要中断模式,则可以直接通过GetIO函数来得到相应输入口的值为高电平还是低电平,不需要用到SetIoMode函数。
中断模式:系统默认8路输入IO全是查询模式,所以如果用户需要中断模式,则需要通过SetIoMode函数来设置相应IO口为中断模式,并且设置相应的中断触发方式。设置完成后,新起一个线程,调用GetIoBlockMode函数,没有来中断之前一直阻塞,一旦系统收到中断,立即返回。
Note:函数的具体详细的用法,请看光盘中的示例源码,目录:光盘/ testApp / YC210Tool /