19
19
#define _PINS_ARDUINO_H_
20
20
21
21
#include "PeripheralPins.h"
22
- #include "pins_arduino_common.h"
23
- #include "variant.h"
24
-
25
- #ifdef __cplusplus
26
- extern "C" {
27
- #endif
28
22
29
23
/**
30
24
* Libc porting layers
@@ -34,79 +28,28 @@ extern "C" {
34
28
#define WEAK __attribute__ ((weak))
35
29
#endif
36
30
37
- #define NOT_AN_INTERRUPT NC // -1
38
- #define DEND PEND
39
- #define NUM_DIGITAL_PINS ((uint32_t)DEND)
40
- #define NUM_ANALOG_INPUTS ((uint32_t)(AEND-A0))
41
-
42
- // Convert a digital pin number Dxx to a PinName PX_n
43
- // Note: Analog pin is also a digital pin.
44
- #define digitalPinToPinName (p ) (((uint32_t)p < NUM_DIGITAL_PINS) ? digitalPin[p] : NC)
45
- // Convert a PinName PX_n to a digital pin number
46
- uint32_t pinNametoDigitalPin (PinName p );
47
-
48
- // Convert an analog pin number to a digital pin number
49
- // Used by analogRead api to have A0 == 0
50
- #define analogInputToDigitalPin (p ) (((uint32_t)p < NUM_ANALOG_INPUTS) ? (p+A0) : p)
51
- // Convert an analog pin number Axx to a PinName PX_n
52
- #define analogInputToPinName (p ) (digitalPinToPinName(analogInputToDigitalPin(p)))
53
- // All pins could manage EXTI
54
- #define digitalPinToInterrupt (p ) (digitalPinIsValid(p) ? p : NOT_AN_INTERRUPT)
55
-
56
- #define digitalPinHasI2C (p ) (pin_in_pinmap(digitalPinToPinName(p), PinMap_I2C_SDA) ||\
57
- pin_in_pinmap(digitalPinToPinName(p), PinMap_I2C_SCL))
58
- #define digitalPinHasPWM (p ) (pin_in_pinmap(digitalPinToPinName(p), PinMap_PWM))
59
- #define digitalPinHasSerial (p ) (pin_in_pinmap(digitalPinToPinName(p), PinMap_UART_RX) ||\
60
- pin_in_pinmap(digitalPinToPinName(p), PinMap_UART_TX))
61
- #define digitalPinHasSPI (p ) (pin_in_pinmap(digitalPinToPinName(p), PinMap_SPI_MOSI) ||\
62
- pin_in_pinmap(digitalPinToPinName(p), PinMap_SPI_MISO) ||\
63
- pin_in_pinmap(digitalPinToPinName(p), PinMap_SPI_SCLK) ||\
64
- pin_in_pinmap(digitalPinToPinName(p), PinMap_SPI_SSEL))
65
-
66
-
67
- #define digitalPinToPort (p ) (get_GPIO_Port(STM_PORT(digitalPinToPinName(p))))
68
- #define digitalPinToBitMask (p ) (STM_GPIO_PIN(digitalPinToPinName(p)))
69
-
70
- #define analogInPinToBit (p ) (STM_PIN(digitalPinToPinName(p)))
71
- #define portOutputRegister (P ) (&(P->ODR))
72
- #define portInputRegister (P ) (&(P->IDR))
73
-
74
- #define portSetRegister (P ) (&(P->BSRR))
75
- #if defined(STM32F2xx ) || defined(STM32F4xx ) || defined(STM32F7xx )
76
- // For those series reset are in the high part so << 16U needed
77
- #define portClearRegister (P ) (&(P->BSRR))
78
- #else
79
- #define portClearRegister (P ) (&(P->BRR))
80
- #endif
81
-
82
-
83
- #if defined(STM32F1xx )
84
- // Config registers split in 2 registers:
85
- // CRL: pin 0..7
86
- // CRH: pin 8..15
87
- // Return only CRL
88
- #define portModeRegister (P ) (&(P->CRL))
89
- #else
90
- #define portModeRegister (P ) (&(P->MODER))
91
- #endif
92
- #define portConfigRegister (P ) (portModeRegister(P))
93
-
94
-
95
- #define digitalPinIsValid (p ) (digitalPinToPinName(p) != NC)
96
-
97
- // As some pin could be duplicated in digitalPin[]
98
- // return first occurence of linked PinName (PYx)
99
- #define digitalPinFirstOccurence (p ) (pinNametoDigitalPin(digitalPinToPinName(p)))
100
-
101
- // Specific for Firmata. As some pins could be duplicated,
102
- // ensure 'p' is not one of the serial pins
103
- #if defined(PIN_SERIAL_RX ) && defined(PIN_SERIAL_TX )
104
- #define pinIsSerial (p ) ((digitalPinFirstOccurence(p) == PIN_SERIAL_RX) ||\
105
- (digitalPinFirstOccurence(p) == PIN_SERIAL_TX))
106
- #endif
107
-
108
- #ifdef __cplusplus
109
- }
110
- #endif
31
+ // Arduino digital pin alias
32
+ // GPIO port (A to K) * 16 pins: 176
33
+ enum {
34
+ D0 , D1 , D2 , D3 , D4 , D5 , D6 , D7 , D8 , D9 ,
35
+ D10 , D11 , D12 , D13 , D14 , D15 , D16 , D17 , D18 , D19 ,
36
+ D20 , D21 , D22 , D23 , D24 , D25 , D26 , D27 , D28 , D29 ,
37
+ D30 , D31 , D32 , D33 , D34 , D35 , D36 , D37 , D38 , D39 ,
38
+ D40 , D41 , D42 , D43 , D44 , D45 , D46 , D47 , D48 , D49 ,
39
+ D50 , D51 , D52 , D53 , D54 , D55 , D56 , D57 , D58 , D59 ,
40
+ D60 , D61 , D62 , D63 , D64 , D65 , D66 , D67 , D68 , D69 ,
41
+ D70 , D71 , D72 , D73 , D74 , D75 , D76 , D77 , D78 , D79 ,
42
+ D80 , D81 , D82 , D83 , D84 , D85 , D86 , D87 , D88 , D89 ,
43
+ D90 , D91 , D92 , D93 , D94 , D95 , D96 , D97 , D98 , D99 ,
44
+ D100 , D101 , D102 , D103 , D104 , D105 , D106 , D107 , D108 , D109 ,
45
+ D110 , D111 , D112 , D113 , D114 , D115 , D116 , D117 , D118 , D119 ,
46
+ D120 , D121 , D122 , D123 , D124 , D125 , D126 , D127 , D128 , D129 ,
47
+ D130 , D131 , D132 , D133 , D134 , D135 , D136 , D137 , D138 , D139 ,
48
+ D140 , D141 , D142 , D143 , D144 , D145 , D146 , D147 , D148 , D149 ,
49
+ D150 , D151 , D152 , D153 , D154 , D155 , D156 , D157 , D158 , D159 ,
50
+ D160 , D161 , D162 , D163 , D164 , D165 , D166 , D167 , D168 , D169 ,
51
+ D170 , D171 , D172 , D173 , D174 , D175 ,
52
+ DMAX
53
+ };
111
54
112
55
#endif /*_PINS_ARDUINO_H_*/
0 commit comments