1# GPIO控制 2 3GPIO(General Purpose Input/Output Port),即通用输入输出端口,就是芯片的一些引脚。 4 5作为输入端口时,我们可以通过它们读入引脚的状态--高电平或低电平。如:检测按键的按下与放开。 6 7作为输出端口时,我们可以通过它们输出高电平或低电平来控制连接的外围设备。如:控制LED亮灭。 8 9详细代码参考`sample/gpio`目录 10 11图1 gpio 接口实物图 12 13 14## 对外接口 15 16```java 17/** 18 * set gpio export 19 * @param gpioNum gpioNum 20 * @param bExport export,0:not export 1:export 21 */ 22int UM_GPIO_Export(int gpioNum, int bExport); 23 24/** 25 * set gpio direction 26 * @param gpioNum gpioNum 27 * @param direction direction,0:in 1:out 28 */ 29int UM_GPIO_SetDirection(int gpioNum, int direction); 30 31/** 32 * set gpio value 33 * @param gpioNum gpioNum 34 * @param s32Value value,0:low 1:high 35 */ 36int UM_GPIO_SetValue(int gpioNum, int s32Value); 37 38/** 39 * check gpio export or not 40 * @param gpioNum gpioNum 41 * @param *ps32Value export,0:not export 1:exported 42 */ 43int UM_GPIO_IsExport(int gpioNum, int *ps32Value); 44 45/** 46 * get gpio direction 47 * @param gpioNum gpioNum 48 * @param *ps32Value direction,0:in 1:out 49 */ 50int UM_GPIO_GetDirection(int gpioNum, int *ps32Value); 51 52/** 53 * get gpio value 54 * @param gpioNum gpioNum 55 * @param *ps32Value value,0:low 1:high 56 */ 57int UM_GPIO_GetValue(int gpioNum, int *ps32Value); 58``` 59 60## GPIO对应关系 61 62```java 63// gpios 64#define UM_GPIO_01 380 /* GPIO.7 */ 65#define UM_GPIO_02 381 /* GPIO.0 */ 66#define UM_GPIO_03 382 /* GPIO.2 */ 67#define UM_GPIO_04 383 /* GPIO.3 */ 68#define UM_GPIO_05 384 /* GPIO.21 */ 69#define UM_GPIO_06 385 /* GPIO.22 */ 70#define UM_GPIO_07 386 /* GPIO.23 */ 71#define UM_GPIO_08 387 /* GPIO.24 */ 72#define UM_GPIO_09 388 /* GPIO.25 */ 73#define UM_GPIO_10 389 /* GPIO.1 */ 74#define UM_GPIO_11 390 /* GPIO.4 */ 75#define UM_GPIO_12 391 /* GPIO.5 */ 76#define UM_GPIO_13 392 /* GPIO.6 */ 77#define UM_GPIO_14 393 /* GPIO.30 */ 78#define UM_GPIO_15 394 /* GPIO.26 */ 79#define UM_GPIO_16 395 /* GPIO.27 */ 80``` 81 82更多GPIO口参考可通过`cat /sys/kernel/debug/gpio`查看 83 84## GPIO控制 85 86在串口调试窗口下可通过修改如下文件的值来控制GPIO 87 88```shell 89# echo 386 > /sys/class/gpio/export 90# echo out > /sys/class/gpio/gpio386/direction 91# echo 1 > /sys/class/gpio/gpio386/value 92# echo 0 > /sys/class/gpio/gpio386/value 93``` 94 95## 运行结果 96 97> 本例子只是模拟一个gpio口(GPIO_07)来做设置out模式,且将其设置为高电平,有需要的话可以自己设置程序来控制gpio来操作 98 99烧录成功后,在串口调试窗口下直接执行该程序,将打印如下结果: 100 101 102 103或者在gpio_test后加上输入参数,则对指定的gpio口进行操作 104 105 106