Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fb00b51

Browse filesBrowse files
[DOCS] Writing a new Arduino documentation about GPIO (espressif#5894)
* add new documation GPIO Co-authored-by: pedro.minatel <pedro.minatel@espressif.com>
1 parent 5dc8fb8 commit fb00b51
Copy full SHA for fb00b51

File tree

Expand file treeCollapse file tree

3 files changed

+167
-0
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+167
-0
lines changed

‎docs/source/_static/gpio_output.png

Copy file name to clipboard
3.42 KB
Loading

‎docs/source/_static/gpio_pullup.png

Copy file name to clipboard
4.73 KB
Loading

‎docs/source/api/gpio.rst

Copy file name to clipboard
+167Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,170 @@
11
####
22
GPIO
33
####
4+
5+
About
6+
-----
7+
8+
One of the most used and versatile peripheral in a microcontroller is the GPIO. The GPIO is commonly used to write and read the pin state.
9+
10+
GPIO stands to General Purpose Input Output, and is responsible to control or read the state of a specific pin in the digital world. For example, this peripheral is widely used to create the LED blinking or to read a simple button.
11+
12+
.. note:: There are some GPIOs with special restrictions, and not all GPIOs are accessible through the developemnt board. For more information about it, see the corresponding board pin layout information.
13+
14+
GPIOs Modes
15+
***********
16+
17+
There are two different modes in the GPIO configuration:
18+
19+
- **Input Mode**
20+
21+
In this mode, the GPIO will receive the digital state from a specific device. This device could be a button or a switch.
22+
23+
- **Output Mode**
24+
25+
For the output mode, the GPIO will change the GPIO digital state to a specific device. You can drive an LED for example.
26+
27+
GPIO API
28+
--------
29+
30+
Here is the common functions used for the GPIO peripheral.
31+
32+
pinMode
33+
*******
34+
35+
The ``pinMode`` function is used to define the GPIO operation mode for a specific pin.
36+
37+
.. code-block:: arduino
38+
39+
void pinMode(uint8_t pin, uint8_t mode);
40+
41+
* ``pin`` defines the GPIO pin number.
42+
* ``mode`` sets operation mode.
43+
44+
The following modes are supported for the basic `input` and `output`:
45+
46+
* **INPUT** sets the GPIO as input without pullup or pulldown (high impedance).
47+
* **OUTPUT** sets the GPIO as output/read mode.
48+
* **INPUT_PULLDOWN** sets the GPIO as input with the internal pulldown.
49+
* **INPUT_PULLUP** sets the GPIO as input with the internal pullup.
50+
51+
Internal Pullup and Pulldown
52+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
53+
54+
The ESP32 SoC families supports the internal pullup and pulldown throught a 45kR resistor, that can be enabled when configuring the GPIO mode as ``INPUT`` mode.
55+
If the pullup or pulldown mode is not defined, the pin will stay in the high impedance mode.
56+
57+
digitalWrite
58+
*************
59+
60+
The function ``digitalWrite`` sets the state of the selected GPIO to ``HIGH`` or ``LOW``. This function is only used if the ``pinMode`` was configured as ``OUTPUT``.
61+
62+
.. code-block:: arduino
63+
64+
void digitalWrite(uint8_t pin, uint8_t val);
65+
66+
* ``pin`` defines the GPIO pin number.
67+
* ``val`` set the output digital state to ``HIGH`` or ``LOW``.
68+
69+
digitalRead
70+
***********
71+
72+
To read the state of a given pin configured as ``INPUT``, the function ``digitalRead`` is used.
73+
74+
.. code-block:: arduino
75+
76+
int digitalRead(uint8_t pin);
77+
78+
* ``pin`` select GPIO
79+
80+
This function will return the logical state of the selected pin as ``HIGH`` or ``LOW``.
81+
82+
Interrupts
83+
----------
84+
85+
The GPIO peripheral on the ESP32 supports interruptions.
86+
87+
attachInterrupt
88+
***************
89+
90+
The function ``attachInterruptArg`` is used to attach the interrupt to the defined pin.
91+
92+
.. code-block:: arduino
93+
94+
attachInterrupt(uint8_t pin, voidFuncPtr handler, int mode);
95+
96+
* ``pin`` defines the GPIO pin number.
97+
* ``handler`` set the handler function.
98+
* ``mode`` set the interrupt mode.
99+
100+
Here are the supported interrupt modes:
101+
102+
* **DISABLED**
103+
* **RISING**
104+
* **FALLING**
105+
* **CHANGE**
106+
* **ONLOW**
107+
* **ONHIGH**
108+
* **ONLOW_WE**
109+
* **ONHIGH_WE**
110+
111+
attachInterruptArg
112+
******************
113+
114+
The function ``attachInterruptArg`` is used to attach the interrupt to the defined pin using arguments.
115+
116+
.. code-block:: arduino
117+
118+
attachInterruptArg(uint8_t pin, voidFuncPtrArg handler, void * arg, int mode);
119+
120+
* ``pin`` defines the GPIO pin number.
121+
* ``handler`` set the handler function.
122+
* ``arg`` pointer to the interrupt arguments.
123+
* ``mode`` set the interrupt mode.
124+
125+
detachInterrupt
126+
***************
127+
128+
To detach the interruption from a specific pin, use the ``detachInterrupt`` function giving the GPIO to be detached.
129+
130+
.. code-block:: arduino
131+
132+
detachInterrupt(uint8_t pin);
133+
134+
* ``pin`` defines the GPIO pin number.
135+
136+
.. _gpio_example_code:
137+
138+
Example Code
139+
------------
140+
141+
GPIO Input and Output Modes
142+
***************************
143+
144+
.. code-block:: arduino
145+
146+
#define LED 12
147+
#define BUTTON 2
148+
149+
uint8_t stateLED = 0;
150+
151+
void setup() {
152+
pinMode(LED, OUTPUT);
153+
pinMode(BUTTON,INPUT_PULLUP);
154+
}
155+
156+
void loop() {
157+
158+
if(!digitalRead(BUTTON)){
159+
stateLED = stateLED^1;
160+
digitalWrite(LED,stateLED);
161+
}
162+
}
163+
164+
GPIO Interrupt
165+
**************
166+
167+
.. literalinclude:: ../../../libraries/ESP32/examples/GPIO/GPIOInterrupt/GPIOInterrupt.ino
168+
:language: arduino
169+
170+
.. _datasheet: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.