Subversion Repositories DashDisplay

Rev

Rev 30 | Rev 50 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
30 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32l1xx_hal_gpio.h
4
  * @author  MCD Application Team
5
  * @version V1.2.0
6
  * @date    01-July-2016
7
  * @brief   Header file of GPIO HAL module.
8
  ******************************************************************************
9
  * @attention
10
  *
11
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
12
  *
13
  * Redistribution and use in source and binary forms, with or without modification,
14
  * are permitted provided that the following conditions are met:
15
  *   1. Redistributions of source code must retain the above copyright notice,
16
  *      this list of conditions and the following disclaimer.
17
  *   2. Redistributions in binary form must reproduce the above copyright notice,
18
  *      this list of conditions and the following disclaimer in the documentation
19
  *      and/or other materials provided with the distribution.
20
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
21
  *      may be used to endorse or promote products derived from this software
22
  *      without specific prior written permission.
23
  *
24
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
  *
35
  ******************************************************************************
36
  */
37
 
38
/* Define to prevent recursive inclusion -------------------------------------*/
39
#ifndef __STM32L1xx_HAL_GPIO_H
40
#define __STM32L1xx_HAL_GPIO_H
41
 
42
#ifdef __cplusplus
43
 extern "C" {
44
#endif
45
 
46
/* Includes ------------------------------------------------------------------*/
47
#include "stm32l1xx_hal_def.h"
48
 
49
/** @addtogroup STM32L1xx_HAL_Driver
50
  * @{
51
  */
52
 
53
/** @defgroup GPIO GPIO
54
  * @brief GPIO HAL module driver
55
  * @{
56
  */
57
 
58
/* Exported types ------------------------------------------------------------*/
59
 
60
/** @defgroup GPIO_Exported_Types GPIO Exported Types
61
  * @{
62
  */
63
/**
64
  * @brief   GPIO Init structure definition  
65
  */
66
typedef struct
67
{
68
  uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.
69
                           This parameter can be any value of @ref GPIO_pins */
70
 
71
  uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.
72
                           This parameter can be a value of @ref GPIO_mode */
73
 
74
  uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
75
                           This parameter can be a value of @ref GPIO_pull */
76
 
77
  uint32_t Speed;     /*!< Specifies the speed for the selected pins.
78
                           This parameter can be a value of @ref GPIO_speed */
79
 
80
  uint32_t Alternate;  /*!< Peripheral to be connected to the selected pins
81
                            This parameter can be a value of @ref GPIOEx_Alternate_function_selection */
82
}GPIO_InitTypeDef;
83
 
84
/**
85
  * @brief  GPIO Bit SET and Bit RESET enumeration
86
  */
87
typedef enum
88
{
89
  GPIO_PIN_RESET = 0,
90
  GPIO_PIN_SET
91
}GPIO_PinState;
92
/**
93
  * @}
94
  */
95
 
96
/* Exported constants --------------------------------------------------------*/
97
 
98
/** @defgroup GPIO_Exported_Constants GPIO Exported Constants
99
  * @{
100
  */
101
 
102
 
103
/** @defgroup GPIO_pins GPIO pins
104
  * @{
105
  */
106
#define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */
107
#define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */
108
#define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */
109
#define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */
110
#define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */
111
#define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */
112
#define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */
113
#define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */
114
#define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */
115
#define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */
116
#define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */
117
#define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */
118
#define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */
119
#define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */
120
#define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */
121
#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */
122
#define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */
123
 
124
#define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */
125
/**
126
  * @}
127
  */
128
 
129
/** @defgroup GPIO_mode GPIO mode
130
  * @brief GPIO Configuration Mode
131
  *        Elements values convention: 0xX0yz00YZ
132
  *           - X  : GPIO mode or EXTI Mode
133
  *           - y  : External IT or Event trigger detection
134
  *           - z  : IO configuration on External IT or Event
135
  *           - Y  : Output type (Push Pull or Open Drain)
136
  *           - Z  : IO Direction mode (Input, Output, Alternate or Analog)
137
  * @{
138
  */
139
#define  GPIO_MODE_INPUT                        ((uint32_t)0x00000000)   /*!< Input Floating Mode                   */
140
#define  GPIO_MODE_OUTPUT_PP                    ((uint32_t)0x00000001)   /*!< Output Push Pull Mode                 */
141
#define  GPIO_MODE_OUTPUT_OD                    ((uint32_t)0x00000011)   /*!< Output Open Drain Mode                */
142
#define  GPIO_MODE_AF_PP                        ((uint32_t)0x00000002)   /*!< Alternate Function Push Pull Mode     */
143
#define  GPIO_MODE_AF_OD                        ((uint32_t)0x00000012)   /*!< Alternate Function Open Drain Mode    */
144
 
145
#define  GPIO_MODE_ANALOG                       ((uint32_t)0x00000003)   /*!< Analog Mode  */
146
 
147
#define  GPIO_MODE_IT_RISING                    ((uint32_t)0x10110000)   /*!< External Interrupt Mode with Rising edge trigger detection          */
148
#define  GPIO_MODE_IT_FALLING                   ((uint32_t)0x10210000)   /*!< External Interrupt Mode with Falling edge trigger detection         */
149
#define  GPIO_MODE_IT_RISING_FALLING            ((uint32_t)0x10310000)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */
150
 
151
#define  GPIO_MODE_EVT_RISING                   ((uint32_t)0x10120000)   /*!< External Event Mode with Rising edge trigger detection               */
152
#define  GPIO_MODE_EVT_FALLING                  ((uint32_t)0x10220000)   /*!< External Event Mode with Falling edge trigger detection              */
153
#define  GPIO_MODE_EVT_RISING_FALLING           ((uint32_t)0x10320000)   /*!< External Event Mode with Rising/Falling edge trigger detection       */
154
 
155
/**
156
  * @}
157
  */
158
 
159
/** @defgroup GPIO_speed GPIO speed
160
  * @brief GPIO Output Maximum frequency
161
  * @{
162
  */  
163
#define  GPIO_SPEED_FREQ_LOW       ((uint32_t)0x00000000) /*!< max: 400 KHz, please refer to the product datasheet */
164
#define  GPIO_SPEED_FREQ_MEDIUM    ((uint32_t)0x00000001) /*!< max: 1 MHz to 2 MHz, please refer to the product datasheet */
165
#define  GPIO_SPEED_FREQ_HIGH      ((uint32_t)0x00000002) /*!< max: 2 MHz to 10 MHz, please refer to the product datasheet */
166
#define  GPIO_SPEED_FREQ_VERY_HIGH ((uint32_t)0x00000003) /*!< max: 8 MHz to 50 MHz, please refer to the product datasheet */
167
 
168
/**
169
  * @}
170
  */
171
 
172
 /** @defgroup GPIO_pull GPIO pull
173
   * @brief GPIO Pull-Up or Pull-Down Activation
174
   * @{
175
   */  
176
#define  GPIO_NOPULL        ((uint32_t)0x00000000)   /*!< No Pull-up or Pull-down activation  */
177
#define  GPIO_PULLUP        ((uint32_t)0x00000001)   /*!< Pull-up activation                  */
178
#define  GPIO_PULLDOWN      ((uint32_t)0x00000002)   /*!< Pull-down activation                */
179
 
180
/**
181
  * @}
182
  */
183
 
184
/**
185
  * @}
186
  */
187
 
188
/* Private constants ---------------------------------------------------------*/
189
/** @defgroup GPIO_Private_Constants GPIO Private Constants
190
  * @{
191
  */
192
 
193
/**
194
  * @}
195
  */
196
 
197
/* Private macros --------------------------------------------------------*/
198
/** @defgroup GPIO_Private_Macros GPIO Private Macros
199
  * @{
200
  */
201
 
202
#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
203
 
204
#define IS_GPIO_PIN(__PIN__)        ((((__PIN__) & GPIO_PIN_MASK) != (uint32_t)0x00) &&\
205
                                     (((__PIN__) & ~GPIO_PIN_MASK) == (uint32_t)0x00))
206
 
207
#define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \
208
                            ((PULL) == GPIO_PULLDOWN))
209
 
210
#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW)  || ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || \
211
                                ((SPEED) == GPIO_SPEED_FREQ_HIGH) || ((SPEED) == GPIO_SPEED_FREQ_VERY_HIGH))
212
 
213
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT)              ||\
214
                            ((MODE) == GPIO_MODE_OUTPUT_PP)          ||\
215
                            ((MODE) == GPIO_MODE_OUTPUT_OD)          ||\
216
                            ((MODE) == GPIO_MODE_AF_PP)              ||\
217
                            ((MODE) == GPIO_MODE_AF_OD)              ||\
218
                            ((MODE) == GPIO_MODE_IT_RISING)          ||\
219
                            ((MODE) == GPIO_MODE_IT_FALLING)         ||\
220
                            ((MODE) == GPIO_MODE_IT_RISING_FALLING)  ||\
221
                            ((MODE) == GPIO_MODE_EVT_RISING)         ||\
222
                            ((MODE) == GPIO_MODE_EVT_FALLING)        ||\
223
                            ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\
224
                            ((MODE) == GPIO_MODE_ANALOG))
225
 
226
/**
227
  * @}
228
  */
229
 
230
/* Exported macro ------------------------------------------------------------*/
231
 
232
/** @defgroup GPIO_Exported_Macros GPIO Exported Macros
233
  * @{
234
  */
235
 
236
/**
237
  * @brief  Checks whether the specified EXTI line flag is set or not.
238
  * @param  __EXTI_LINE__: specifies the EXTI line flag to check.
239
  *         This parameter can be GPIO_PIN_x where x can be(0..15)
240
  * @retval The new state of __EXTI_LINE__ (SET or RESET).
241
  */
242
#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))
243
 
244
/**
245
  * @brief  Clears the EXTI's line pending flags.
246
  * @param  __EXTI_LINE__: specifies the EXTI lines flags to clear.
247
  *         This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
248
  * @retval None
249
  */
250
#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
251
 
252
/**
253
  * @brief  Checks whether the specified EXTI line is asserted or not.
254
  * @param  __EXTI_LINE__: specifies the EXTI line to check.
255
  *          This parameter can be GPIO_PIN_x where x can be(0..15)
256
  * @retval The new state of __EXTI_LINE__ (SET or RESET).
257
  */
258
#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))
259
 
260
/**
261
  * @brief  Clears the EXTI's line pending bits.
262
  * @param  __EXTI_LINE__: specifies the EXTI lines to clear.
263
  *          This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
264
  * @retval None
265
  */
266
#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
267
 
268
/**
269
  * @brief  Generates a Software interrupt on selected EXTI line.
270
  * @param  __EXTI_LINE__: specifies the EXTI line to check.
271
  *          This parameter can be GPIO_PIN_x where x can be(0..15)
272
  * @retval None
273
  */
274
#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__))
275
 
276
/**
277
  * @}
278
  */
279
 
280
/* Include GPIO HAL Extension module */
281
#include "stm32l1xx_hal_gpio_ex.h"
282
 
283
/* Exported functions --------------------------------------------------------*/
284
/** @defgroup GPIO_Exported_Functions GPIO Exported Functions
285
 *  @brief    GPIO Exported Functions
286
  * @{
287
  */
288
 
289
/** @defgroup GPIO_Exported_Functions_Group1 Initialization and Configuration functions
290
 *  @brief    Initialization and Configuration functions
291
 * @{
292
 */
293
 
294
/* Initialization and de-initialization functions *****************************/
295
void              HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);
296
void              HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);
297
 
298
/**
299
  * @}
300
  */
301
 
302
/** @defgroup GPIO_Exported_Functions_Group2 IO operation functions
303
 *  @brief    IO operation functions
304
 * @{
305
 */
306
 
307
/* IO operation functions *****************************************************/
308
GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
309
void              HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
310
void              HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
311
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
312
void              HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
313
void              HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
314
 
315
/**
316
  * @}
317
  */
318
 
319
/**
320
  * @}
321
  */
322
 
323
/**
324
  * @}
325
  */
326
 
327
/**
328
  * @}
329
  */  
330
 
331
#ifdef __cplusplus
332
}
333
#endif
334
 
335
#endif /* __STM32L1xx_HAL_GPIO_H */
336
 
337
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
338