README.md
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