Blame view

RIOT/cpu/stellaris_common/include/stellaris_periph/gpio.h 10.1 KB
fb11e647   vrobic   reseau statique a...
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
  //*****************************************************************************
  //
  // gpio.h - Defines and Macros for GPIO API.
  //
  // Copyright (c) 2005-2012 Texas Instruments Incorporated.  All rights reserved.
  // Software License Agreement
  //
  //   Redistribution and use in source and binary forms, with or without
  //   modification, are permitted provided that the following conditions
  //   are met:
  //
  //   Redistributions of source code must retain the above copyright
  //   notice, this list of conditions and the following disclaimer.
  //
  //   Redistributions in binary form must reproduce the above copyright
  //   notice, this list of conditions and the following disclaimer in the
  //   documentation and/or other materials provided with the
  //   distribution.
  //
  //   Neither the name of Texas Instruments Incorporated nor the names of
  //   its contributors may be used to endorse or promote products derived
  //   from this software without specific prior written permission.
  //
  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  //
  // This is part of revision 9453 of the Stellaris Peripheral Driver Library.
  //
  //*****************************************************************************
  
  #ifndef STELLARIS_GPIO_H_
  #define STELLARIS_GPIO_H_
  
  //*****************************************************************************
  //
  // If building with a C++ compiler, make all of the definitions in this header
  // have a C binding.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  extern "C"
  {
  #endif
  
  //*****************************************************************************
  //
  // The following values define the bit field for the ucPins argument to several
  // of the APIs.
  //
  //*****************************************************************************
  #define GPIO_PIN_0              0x00000001  // GPIO pin 0
  #define GPIO_PIN_1              0x00000002  // GPIO pin 1
  #define GPIO_PIN_2              0x00000004  // GPIO pin 2
  #define GPIO_PIN_3              0x00000008  // GPIO pin 3
  #define GPIO_PIN_4              0x00000010  // GPIO pin 4
  #define GPIO_PIN_5              0x00000020  // GPIO pin 5
  #define GPIO_PIN_6              0x00000040  // GPIO pin 6
  #define GPIO_PIN_7              0x00000080  // GPIO pin 7
  
  //*****************************************************************************
  //
  // Values that can be passed to GPIODirModeSet as the ulPinIO parameter, and
  // returned from GPIODirModeGet.
  //
  //*****************************************************************************
  #define GPIO_DIR_MODE_IN        0x00000000  // Pin is a GPIO input
  #define GPIO_DIR_MODE_OUT       0x00000001  // Pin is a GPIO output
  #define GPIO_DIR_MODE_HW        0x00000002  // Pin is a peripheral function
  
  //*****************************************************************************
  //
  // Values that can be passed to GPIOIntTypeSet as the ulIntType parameter, and
  // returned from GPIOIntTypeGet.
  //
  //*****************************************************************************
  #define GPIO_FALLING_EDGE       0x00000000  // Interrupt on falling edge
  #define GPIO_RISING_EDGE        0x00000004  // Interrupt on rising edge
  #define GPIO_BOTH_EDGES         0x00000001  // Interrupt on both edges
  #define GPIO_LOW_LEVEL          0x00000002  // Interrupt on low level
  #define GPIO_HIGH_LEVEL         0x00000007  // Interrupt on high level
  #define GPIO_DISCRETE_INT       0x00010000  // Interrupt for individual pins
  
  //*****************************************************************************
  //
  // Values that can be passed to GPIOPadConfigSet as the ulStrength parameter,
  // and returned by GPIOPadConfigGet in the *pulStrength parameter.
  //
  //*****************************************************************************
  #define GPIO_STRENGTH_2MA       0x00000001  // 2mA drive strength
  #define GPIO_STRENGTH_4MA       0x00000002  // 4mA drive strength
  #define GPIO_STRENGTH_8MA       0x00000004  // 8mA drive strength
  #define GPIO_STRENGTH_8MA_SC    0x0000000C  // 8mA drive with slew rate control
  
  
  //*****************************************************************************
  //
  // Values that can be passed to GPIOPadConfigSet as the ulPadType parameter,
  // and returned by GPIOPadConfigGet in the *pulPadType parameter.
  //
  //*****************************************************************************
  #define GPIO_PIN_TYPE_STD       0x00000008  // Push-pull
  #define GPIO_PIN_TYPE_STD_WPU   0x0000000A  // Push-pull with weak pull-up
  #define GPIO_PIN_TYPE_STD_WPD   0x0000000C  // Push-pull with weak pull-down
  #define GPIO_PIN_TYPE_OD        0x00000009  // Open-drain
  #define GPIO_PIN_TYPE_OD_WPU    0x0000000B  // Open-drain with weak pull-up
  #define GPIO_PIN_TYPE_OD_WPD    0x0000000D  // Open-drain with weak pull-down
  #define GPIO_PIN_TYPE_ANALOG    0x00000000  // Analog comparator
  
  //*****************************************************************************
  //
  // Prototypes for the APIs.
  //
  //*****************************************************************************
  extern void GPIODirModeSet(unsigned long ulPort, unsigned char ucPins,
                             unsigned long ulPinIO);
  extern unsigned long GPIODirModeGet(unsigned long ulPort, unsigned char ucPin);
  extern void GPIOIntTypeSet(unsigned long ulPort, unsigned char ucPins,
                             unsigned long ulIntType);
  extern unsigned long GPIOIntTypeGet(unsigned long ulPort, unsigned char ucPin);
  extern void GPIOPadConfigSet(unsigned long ulPort, unsigned char ucPins,
                               unsigned long ulStrength,
                               unsigned long ulPadType);
  extern void GPIOPadConfigGet(unsigned long ulPort, unsigned char ucPin,
                               unsigned long *pulStrength,
                               unsigned long *pulPadType);
  extern void GPIOPinIntEnable(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinIntDisable(unsigned long ulPort, unsigned char ucPins);
  extern long GPIOPinIntStatus(unsigned long ulPort, tBoolean bMasked);
  extern void GPIOPinIntClear(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPortIntRegister(unsigned long ulPort,
                                  void (*pfnIntHandler)(void));
  extern void GPIOPortIntUnregister(unsigned long ulPort);
  extern long GPIOPinRead(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinWrite(unsigned long ulPort, unsigned char ucPins,
                           unsigned char ucVal);
  extern void GPIOPinConfigure(unsigned long ulPinConfig);
  extern void GPIOPinTypeADC(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeCAN(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeComparator(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeEPI(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeEthernetLED(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeEthernetMII(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeFan(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeGPIOInput(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeGPIOOutput(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeGPIOOutputOD(unsigned long ulPort,
                                      unsigned char ucPins);
  extern void GPIOPinTypeI2C(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeI2CSCL(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeI2S(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeLPC(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypePECIRx(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypePECITx(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypePWM(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeQEI(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeSSI(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeTimer(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeUART(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeUSBAnalog(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOPinTypeUSBDigital(unsigned long ulPort, unsigned char ucPins);
  extern void GPIODMATriggerEnable(unsigned long ulPort, unsigned char ucPins);
  extern void GPIODMATriggerDisable(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOADCTriggerEnable(unsigned long ulPort, unsigned char ucPins);
  extern void GPIOADCTriggerDisable(unsigned long ulPort, unsigned char ucPins);
  
  //****************************************************************************
  //
  // The definitions for GPIOPinConfigure previously resided in this file but
  // have been moved to pin_map.h and made part-specific (in other words, only
  // those definitions that are valid based on the selected part, as defined by
  // PART_<partnum>, will be made available).  For backwards compatibility,
  // pin_map.h is included here so that the expected definitions will still be
  // available (though part-specific now, so some that were previously available
  // but inappropriate for the given part will not be available).
  //
  //*****************************************************************************
  #ifndef DEPRECATED
  #include "pin_map.h"
  #endif
  
  //*****************************************************************************
  //
  // Mark the end of the C bindings section for C++ compilers.
  //
  //*****************************************************************************
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* STELLARIS_GPIO_H_ */