]> git.sur5r.net Git - freertos/blob - Demo/_Cortex_STM32L152_IAR/system_and_ST_code/STM32L1xx_StdPeriph_Driver/inc/stm32l1xx_gpio.h
First phase of changing the directory that starts Cortex, with one that starts CORTEX.
[freertos] / Demo / _Cortex_STM32L152_IAR / system_and_ST_code / STM32L1xx_StdPeriph_Driver / inc / stm32l1xx_gpio.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32l1xx_gpio.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    07/02/2010\r
7   * @brief   This file contains all the functions prototypes for the GPIO \r
8   *          firmware library.\r
9   ******************************************************************************\r
10   * @copy\r
11   *\r
12   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
14   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
15   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
16   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
17   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18   *\r
19   * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>\r
20   */ \r
21 \r
22 /* Define to prevent recursive inclusion -------------------------------------*/\r
23 #ifndef __STM32L1xx_GPIO_H\r
24 #define __STM32L1xx_GPIO_H\r
25 \r
26 #ifdef __cplusplus\r
27  extern "C" {\r
28 #endif\r
29 \r
30 /* Includes ------------------------------------------------------------------*/\r
31 #include "stm32l1xx.h"\r
32 \r
33 /** @addtogroup STM32L1xx_StdPeriph_Driver\r
34   * @{\r
35   */\r
36 \r
37 /** @addtogroup GPIO\r
38   * @{\r
39   */\r
40 \r
41 /** @defgroup GPIO_Exported_Types\r
42   * @{\r
43   */ \r
44 #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \\r
45                                     ((PERIPH) == GPIOB) || \\r
46                                     ((PERIPH) == GPIOC) || \\r
47                                     ((PERIPH) == GPIOD) || \\r
48                                     ((PERIPH) == GPIOE) || \\r
49                                     ((PERIPH) == GPIOH))\r
50 \r
51 /** @defgroup Configuration_Mode_enumeration \r
52   * @{\r
53   */ \r
54 typedef enum\r
55\r
56   GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */\r
57   GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */\r
58   GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */\r
59   GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */\r
60 }GPIOMode_TypeDef;\r
61 #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \\r
62                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))\r
63 /**\r
64   * @}\r
65   */\r
66 \r
67 /** @defgroup Output_type_enumeration\r
68   * @{\r
69   */ \r
70 typedef enum\r
71 { GPIO_OType_PP = 0x00,\r
72   GPIO_OType_OD = 0x01\r
73 }GPIOOType_TypeDef;\r
74 #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))\r
75 \r
76 /**\r
77   * @}\r
78   */\r
79 \r
80 /** @defgroup Output_Maximum_frequency_enumeration \r
81   * @{\r
82   */ \r
83 typedef enum\r
84\r
85   GPIO_Speed_400KHz = 0x00, /*!< Very Low Speed */\r
86   GPIO_Speed_2MHz   = 0x01, /*!< Low Speed */\r
87   GPIO_Speed_10MHz  = 0x02, /*!< Medium Speed */\r
88   GPIO_Speed_40MHz  = 0x03  /*!< High Speed */\r
89 }GPIOSpeed_TypeDef;\r
90 #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_400KHz) || ((SPEED) == GPIO_Speed_2MHz) || \\r
91                               ((SPEED) == GPIO_Speed_10MHz)||  ((SPEED) == GPIO_Speed_40MHz))\r
92 /**\r
93   * @}\r
94   */\r
95 \r
96 /** @defgroup Configuration_Pull-Up_Pull-Down_enumeration \r
97   * @{\r
98   */ \r
99 typedef enum\r
100 { GPIO_PuPd_NOPULL = 0x00,\r
101   GPIO_PuPd_UP     = 0x01,\r
102   GPIO_PuPd_DOWN   = 0x02\r
103 }GPIOPuPd_TypeDef;\r
104 #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \\r
105                             ((PUPD) == GPIO_PuPd_DOWN))\r
106 /**\r
107   * @}\r
108   */\r
109 \r
110 /** @defgroup Bit_SET_and_Bit_RESET_enumeration\r
111   * @{\r
112   */\r
113 typedef enum\r
114 { Bit_RESET = 0,\r
115   Bit_SET\r
116 }BitAction;\r
117 #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))\r
118 \r
119 /**\r
120   * @}\r
121   */\r
122 \r
123 /** \r
124   * @brief  GPIO Init structure definition\r
125   */ \r
126 typedef struct\r
127 {\r
128   uint32_t GPIO_Pin;              /*!< Specifies the GPIO pins to be configured.\r
129                                        This parameter can be any value of @ref GPIO_pins_define */\r
130 \r
131   GPIOMode_TypeDef GPIO_Mode;     /*!< Specifies the operating mode for the selected pins.\r
132                                        This parameter can be a value of @ref GPIOMode_TypeDef */\r
133 \r
134   GPIOSpeed_TypeDef GPIO_Speed;   /*!< Specifies the speed for the selected pins.\r
135                                        This parameter can be a value of @ref GPIOSpeed_TypeDef */\r
136 \r
137   GPIOOType_TypeDef GPIO_OType;   /*!< Specifies the operating output type for the selected pins.\r
138                                        This parameter can be a value of @ref GPIOOType_TypeDef */\r
139 \r
140   GPIOPuPd_TypeDef GPIO_PuPd;     /*!< Specifies the operating Pull-up/Pull down for the selected pins.\r
141                                        This parameter can be a value of @ref GPIOPuPd_TypeDef */\r
142 }GPIO_InitTypeDef;\r
143 /**\r
144   * @}\r
145   */\r
146 \r
147 /** @defgroup GPIO_Exported_Constants\r
148   * @{\r
149   */\r
150   \r
151 /**\r
152   * @}\r
153   */\r
154 \r
155 /** @defgroup GPIO_pins_define \r
156   * @{\r
157   */\r
158 #define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */\r
159 #define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected */\r
160 #define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!< Pin 2 selected */\r
161 #define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!< Pin 3 selected */\r
162 #define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!< Pin 4 selected */\r
163 #define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!< Pin 5 selected */\r
164 #define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!< Pin 6 selected */\r
165 #define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!< Pin 7 selected */\r
166 #define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!< Pin 8 selected */\r
167 #define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected */\r
168 #define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected */\r
169 #define GPIO_Pin_11                ((uint16_t)0x0800)  /*!< Pin 11 selected */\r
170 #define GPIO_Pin_12                ((uint16_t)0x1000)  /*!< Pin 12 selected */\r
171 #define GPIO_Pin_13                ((uint16_t)0x2000)  /*!< Pin 13 selected */\r
172 #define GPIO_Pin_14                ((uint16_t)0x4000)  /*!< Pin 14 selected */\r
173 #define GPIO_Pin_15                ((uint16_t)0x8000)  /*!< Pin 15 selected */\r
174 #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!< All pins selected */\r
175 \r
176 #define IS_GPIO_PIN(PIN) ((PIN) != (uint16_t)0x00)\r
177 #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \\r
178                               ((PIN) == GPIO_Pin_1) || \\r
179                               ((PIN) == GPIO_Pin_2) || \\r
180                               ((PIN) == GPIO_Pin_3) || \\r
181                               ((PIN) == GPIO_Pin_4) || \\r
182                               ((PIN) == GPIO_Pin_5) || \\r
183                               ((PIN) == GPIO_Pin_6) || \\r
184                               ((PIN) == GPIO_Pin_7) || \\r
185                               ((PIN) == GPIO_Pin_8) || \\r
186                               ((PIN) == GPIO_Pin_9) || \\r
187                               ((PIN) == GPIO_Pin_10) || \\r
188                               ((PIN) == GPIO_Pin_11) || \\r
189                               ((PIN) == GPIO_Pin_12) || \\r
190                               ((PIN) == GPIO_Pin_13) || \\r
191                               ((PIN) == GPIO_Pin_14) || \\r
192                               ((PIN) == GPIO_Pin_15))\r
193 /**\r
194   * @}\r
195   */\r
196 \r
197 /** @defgroup GPIO_Pin_sources \r
198   * @{\r
199   */ \r
200 #define GPIO_PinSource0            ((uint8_t)0x00)\r
201 #define GPIO_PinSource1            ((uint8_t)0x01)\r
202 #define GPIO_PinSource2            ((uint8_t)0x02)\r
203 #define GPIO_PinSource3            ((uint8_t)0x03)\r
204 #define GPIO_PinSource4            ((uint8_t)0x04)\r
205 #define GPIO_PinSource5            ((uint8_t)0x05)\r
206 #define GPIO_PinSource6            ((uint8_t)0x06)\r
207 #define GPIO_PinSource7            ((uint8_t)0x07)\r
208 #define GPIO_PinSource8            ((uint8_t)0x08)\r
209 #define GPIO_PinSource9            ((uint8_t)0x09)\r
210 #define GPIO_PinSource10           ((uint8_t)0x0A)\r
211 #define GPIO_PinSource11           ((uint8_t)0x0B)\r
212 #define GPIO_PinSource12           ((uint8_t)0x0C)\r
213 #define GPIO_PinSource13           ((uint8_t)0x0D)\r
214 #define GPIO_PinSource14           ((uint8_t)0x0E)\r
215 #define GPIO_PinSource15           ((uint8_t)0x0F)\r
216 \r
217 #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \\r
218                                        ((PINSOURCE) == GPIO_PinSource1) || \\r
219                                        ((PINSOURCE) == GPIO_PinSource2) || \\r
220                                        ((PINSOURCE) == GPIO_PinSource3) || \\r
221                                        ((PINSOURCE) == GPIO_PinSource4) || \\r
222                                        ((PINSOURCE) == GPIO_PinSource5) || \\r
223                                        ((PINSOURCE) == GPIO_PinSource6) || \\r
224                                        ((PINSOURCE) == GPIO_PinSource7) || \\r
225                                        ((PINSOURCE) == GPIO_PinSource8) || \\r
226                                        ((PINSOURCE) == GPIO_PinSource9) || \\r
227                                        ((PINSOURCE) == GPIO_PinSource10) || \\r
228                                        ((PINSOURCE) == GPIO_PinSource11) || \\r
229                                        ((PINSOURCE) == GPIO_PinSource12) || \\r
230                                        ((PINSOURCE) == GPIO_PinSource13) || \\r
231                                        ((PINSOURCE) == GPIO_PinSource14) || \\r
232                                        ((PINSOURCE) == GPIO_PinSource15))\r
233 /**\r
234   * @}\r
235   */\r
236 \r
237 /** @defgroup GPIO_Alternat_function_selection_define \r
238   * @{\r
239   */\r
240 \r
241 /** \r
242   * @brief  AF 0 selection  \r
243   */ \r
244 #define GPIO_AF_RTC_50Hz      ((uint8_t)0x00)  /*!< RTC 50/60 Hz Alternate Function mapping */\r
245 #define GPIO_AF_MCO           ((uint8_t)0x00)  /*!< MCO Alternate Function mapping */\r
246 #define GPIO_AF_RTC_AF1       ((uint8_t)0x00)  /*!< RTC_AF1 Alternate Function mapping */\r
247 #define GPIO_AF_WKUP          ((uint8_t)0x00)  /*!< Wakeup (WKUP1, WKUP2 and WKUP3) Alternate Function mapping */\r
248 #define GPIO_AF_SWJ           ((uint8_t)0x00)  /*!< SWJ (SW and JTAG) Alternate Function mapping */\r
249 #define GPIO_AF_TRACE         ((uint8_t)0x00)  /*!< TRACE Alternate Function mapping */\r
250 \r
251 /** \r
252   * @brief  AF 1 selection  \r
253   */ \r
254 #define GPIO_AF_TIM2          ((uint8_t)0x01)  /*!< TIM2 Alternate Function mapping */\r
255 /** \r
256   * @brief  AF 2 selection  \r
257   */ \r
258 #define GPIO_AF_TIM3          ((uint8_t)0x02)  /*!< TIM3 Alternate Function mapping */\r
259 #define GPIO_AF_TIM4          ((uint8_t)0x02)  /*!< TIM4 Alternate Function mapping */\r
260 /** \r
261   * @brief  AF 3 selection  \r
262   */ \r
263 #define GPIO_AF_TIM9           ((uint8_t)0x03)  /*!< TIM9 Alternate Function mapping */\r
264 #define GPIO_AF_TIM10          ((uint8_t)0x03)  /*!< TIM10 Alternate Function mapping */\r
265 #define GPIO_AF_TIM11          ((uint8_t)0x03)  /*!< TIM11 Alternate Function mapping */\r
266 /** \r
267   * @brief  AF 4 selection  \r
268   */ \r
269 #define GPIO_AF_I2C1          ((uint8_t)0x04)  /*!< I2C1 Alternate Function mapping */\r
270 #define GPIO_AF_I2C2          ((uint8_t)0x04)  /*!< I2C2 Alternate Function mapping */\r
271 /** \r
272   * @brief  AF 5 selection  \r
273   */ \r
274 #define GPIO_AF_SPI1          ((uint8_t)0x05)  /*!< SPI1 Alternate Function mapping */\r
275 #define GPIO_AF_SPI2          ((uint8_t)0x05)  /*!< SPI2 Alternate Function mapping */\r
276 /** \r
277   * @brief  AF 7 selection  \r
278   */ \r
279 #define GPIO_AF_USART1        ((uint8_t)0x07)  /*!< USART1 Alternate Function mapping */\r
280 #define GPIO_AF_USART2        ((uint8_t)0x07)  /*!< USART2 Alternate Function mapping */\r
281 #define GPIO_AF_USART3        ((uint8_t)0x07)  /*!< USART3 Alternate Function mapping */\r
282 /** \r
283   * @brief  AF 10 selection  \r
284   */ \r
285 #define GPIO_AF_USB           ((uint8_t)0xA)  /*!< USB Full speed device  Alternate Function mapping */\r
286 /** \r
287   * @brief  AF 11 selection  \r
288   */ \r
289 #define GPIO_AF_LCD           ((uint8_t)0x0B)  /*!< LCD Alternate Function mapping */\r
290 /** \r
291   * @brief  AF 14 selection  \r
292   */ \r
293 #define GPIO_AF_RI            ((uint8_t)0x0E)  /*!< RI Alternate Function mapping */\r
294 \r
295 /** \r
296   * @brief  AF 15 selection  \r
297   */ \r
298 #define GPIO_AF_EVENTOUT      ((uint8_t)0x0F)  /*!< EVENTOUT Alternate Function mapping */\r
299 \r
300 #define IS_GPIO_AF(AF)   (((AF) == GPIO_AF_RTC_50Hz) || ((AF) == GPIO_AF_MCO) || \\r
301                           ((AF) == GPIO_AF_RTC_AF1) || ((AF) == GPIO_AF_WKUP) || \\r
302                           ((AF) == GPIO_AF_SWJ)    || ((AF) == GPIO_AF_TRACE) || \\r
303                           ((AF) == GPIO_AF_TIM2)   || ((AF)== GPIO_AF_TIM3) || \\r
304                           ((AF) == GPIO_AF_TIM4)   || ((AF)== GPIO_AF_TIM9) || \\r
305                           ((AF) == GPIO_AF_TIM10)  || ((AF)== GPIO_AF_TIM11) || \\r
306                           ((AF) == GPIO_AF_I2C1)   || ((AF) == GPIO_AF_I2C2) || \\r
307                           ((AF) == GPIO_AF_SPI1)   || ((AF) == GPIO_AF_SPI2) || \\r
308                           ((AF) == GPIO_AF_USART1) || ((AF) == GPIO_AF_USART2) || \\r
309                           ((AF) == GPIO_AF_USART3) || ((AF) == GPIO_AF_USB) || \\r
310                           ((AF) == GPIO_AF_LCD)    || ((AF) == GPIO_AF_RI) || \\r
311                           ((AF) == GPIO_AF_EVENTOUT))\r
312 \r
313 /**\r
314   * @}\r
315   */\r
316 \r
317 /** @defgroup GPIO_Legacy \r
318   * @{\r
319   */\r
320     \r
321 #define GPIO_Mode_AIN GPIO_Mode_AN\r
322 \r
323 /**\r
324   * @}\r
325   */\r
326   \r
327 /** @defgroup GPIO_Exported_Macros\r
328   * @{\r
329   */\r
330 \r
331 /**\r
332   * @}\r
333   */\r
334 \r
335 /** @defgroup GPIO_Exported_Functions\r
336   * @{\r
337   */\r
338 void GPIO_DeInit(GPIO_TypeDef* GPIOx);\r
339 void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);\r
340 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);\r
341 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
342 uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);\r
343 uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
344 uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);\r
345 void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
346 void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
347 void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);\r
348 void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);\r
349 void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
350 void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);\r
351 \r
352 #ifdef __cplusplus\r
353 }\r
354 #endif\r
355 \r
356 #endif /*__STM32L1xx_GPIO_H */\r
357 /**\r
358   * @}\r
359   */\r
360 \r
361 /**\r
362   * @}\r
363   */\r
364 \r
365 /**\r
366   * @}\r
367   */\r
368 \r
369 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r