Subversion Repositories LedShow

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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