aboutsummaryrefslogtreecommitdiffstats
path: root/source/gpio.rst
blob: ee2b6ebe9bda1983f5280f48140f1e3169357f31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
.. _gpio:

GPIO
====

The Maple features 38 ready-to-use general purpose input/output (GPIO)
pins for digital input/output, numbered D0 through D37.  These numbers
correspond to the numeric values next to each header on the Maple
silkscreen.

Many of these pins may additionally be used for special features or
peripheral functions.  This page documents those capabilities, by pin.

The current and voltage limitations have not been copied over from the
STM32 datasheet (see the :ref:`Recommended Reading
<gpio-recommended-reading>` for a link).  In particular, a number of
GPIO pins are 5v tolerant (which means that applying 5v to a pin and
reading it as input or allowing it to drain to ground will not damage
that pin), while some are not.

.. contents:: Contents
   :local:

.. _pin-mapping-mega-table:

Pin Mapping Mega Table
----------------------

This huge reference table shows the available functionality on every
GPIO pin, by peripheral type. The "STM32" column refers to the port
and number that the header is connected to on the microcontroller.
The "5v?" column documents whether or not the pin is 5v tolerant (see
above).

.. csv-table::
   :header: "Pin", "STM32", ":ref:`ADC <adc>`", ":ref:`Timer <timers>`", ":ref:`I2C <i2c>`", ":ref:`UART <usart>`", ":ref:`SPI <spi>`", "5v?"

   "D0",  "PA3",  "ADC3",  "TIM2_CH4",     "-",          "USART2_RX",  "-",         "No"
   "D1",  "PA2",  "ADC2",  "TIM2_CH3",     "-",          "USART2_TX",  "-",         "No"
   "D2",  "PA0",  "ADC0",  "TIM2_CH1_ETR", "-",          "USART2_CTS", "-",         "No"
   "D3",  "PA1",  "ADC1",  "TIM2_CH2",     "-",          "USART2_RTS", "-",         "No"
   "D4",  "PB5",  "-",     "-",            "ISC1_SMBA",  "-",          "-",         "No"
   "D5",  "PB6",  "-",     "TIM4_CH1",     "I2C1_SCL",   "-",          "-",         "Yes"
   "D6",  "PA8",  "-",     "TIM1_CH1",     "-",          "USART1_CK",  "-",         "Yes"
   "D7",  "PA9",  "-",     "TIM1_CH2",     "-",          "USART1_TX",  "-",         "Yes"
   "D8",  "PA10", "-",     "TIM1_CH3",     "-",          "USART1_RX",  "-",         "Yes"
   "D9",  "PB7",  "-",     "TIM4_CH2",     "I2C1_SDA",   "-",          "-",         "Yes"
   "D10", "PA4",  "ADC4",  "-",            "-",          "USART2_CK",  "SPI1_NSS",  "No"
   "D11", "PA7",  "ADC7",  "TIM3_CH2",     "-",          "-",          "SPI1_MOSI", "No"
   "D12", "PA6",  "ADC6",  "TIM3_CH1",     "-",          "-",          "SPI1_MISO", "No"
   "D13", "PA5",  "ADC5",  "-",            "-",          "-",          "SPI1_SCK",  "No"
   "D14", "PB8",  "-",     "TIM4_CH3",     "-",          "-",          "-",         "Yes"
   "D15", "PC0",  "ADC10", "-",            "-",          "-",          "-",         "No"
   "D16", "PC1",  "ADC11", "-",            "-",          "-",          "-",         "No"
   "D17", "PC2",  "ADC12", "-",            "-",          "-",          "-",         "No"
   "D18", "PC3",  "ADC13", "-",            "-",          "-",          "-",         "No"
   "D19", "PC4",  "ADC14", "-",            "-",          "-",          "-",         "No"
   "D20", "PC5",  "ADC15", "-",            "-",          "-",          "-",         "No"
   "D21", "PC13", "-",     "-",            "-",          "-",          "-",         "No"
   "D22", "PC14", "-",     "-",            "-",          "-",          "-",         "No"
   "D23", "PC15", "-",     "-",            "-",          "-",          "-",         "No"
   "D24", "PB9",  "-",     "TIM4_CH4",     "-",          "-",          "-",         "Yes"
   "D25", "PD2",  "-",     "TIM3_ETR",     "-",          "-",          "-",         "Yes"
   "D26", "PC10", "-",     "-",            "-",          "-",          "-",         "Yes"
   "D27", "PB0",  "ADC8",  "TIM3_CH3",     "-",          "-",          "-",         "No"
   "D28", "PB1",  "ADC9",  "TIM3_CH4",     "-",          "-",          "-",         "No"
   "D29", "PB10", "-",     "-",            "I2C2_SCL",   "USART3_TX",  "-",         "Yes"
   "D30", "PB11", "-",     "-",            "I2C2_SDA",   "USART3_RX",  "-",         "Yes"
   "D31", "PB12", "-",     "TIM1_BKIN",    "I2C2_SMBAL", "USART3_CK",  "SPI2_NSS",  "Yes"
   "D32", "PB13", "-",     "TIM1_CH1N",    "-",          "USART3_CTS", "SPI2_SCK",  "Yes"
   "D33", "PB14", "-",     "TIM1_CH2N",    "-",          "USART3_RTS", "SPI2_MISO", "Yes"
   "D34", "PB15", "-",     "TIM1_CH3N",    "-",          "-",          "SPI2_MOSI", "Yes"
   "D35", "PC6",  "-",     "-",            "-",          "-",          "-",         "Yes"
   "D36", "PC7",  "-",     "-",            "-",          "-",          "-",         "Yes"
   "D37", "PC8",  "-",     "-",            "-",          "-",          "-",         "Yes"

.. _gpio-modes:

GPIO Modes
----------

.. doxygenenum:: WiringPinMode

Function Reference
------------------

.. doxygenfunction:: pinMode

.. doxygenfunction:: digitalRead

.. doxygenfunction:: digitalWrite

.. doxygenfunction:: analogRead

.. _gpio-recommended-reading:

Recommended Reading
-------------------

STMicro documentation for STM32F103RB microcontroller:

  * `All <http://www.st.com/mcu/devicedocs-STM32F103RB-110.html>`_
  * `Datasheet <http://www.st.com/stonline/products/literature/ds/13587.pdf>`_ (pdf)
  * `Reference Manual <http://www.st.com/stonline/products/literature/rm/13902.pdf>`_ (pdf)