Nut/OS  5.0.5
API Reference
stm32l1xx_gpio.h
Go to the documentation of this file.
00001 
00029 /* Define to prevent recursive inclusion -------------------------------------*/
00030 #ifndef __STM32L1xx_GPIO_H
00031 #define __STM32L1xx_GPIO_H
00032 
00033 #ifdef __cplusplus
00034  extern "C" {
00035 #endif
00036 
00037 /* Includes ------------------------------------------------------------------*/
00038 #include "stm32l1xx.h"
00039 
00048 /* Exported types ------------------------------------------------------------*/
00049 
00050 #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
00051                                     ((PERIPH) == GPIOB) || \
00052                                     ((PERIPH) == GPIOC) || \
00053                                     ((PERIPH) == GPIOD) || \
00054                                     ((PERIPH) == GPIOE) || \
00055                                     ((PERIPH) == GPIOH) || \
00056                                     ((PERIPH) == GPIOF) || \
00057                                     ((PERIPH) == GPIOG))
00058 
00062 typedef enum
00063 { 
00064   GPIO_Mode_IN   = 0x00, 
00065   GPIO_Mode_OUT  = 0x01, 
00066   GPIO_Mode_AF   = 0x02, 
00067   GPIO_Mode_AN   = 0x03  
00068 }GPIOMode_TypeDef;
00069 #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \
00070                             ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))
00071 
00078 typedef enum
00079 { GPIO_OType_PP = 0x00,
00080   GPIO_OType_OD = 0x01
00081 }GPIOOType_TypeDef;
00082 #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))
00083 
00091 typedef enum
00092 { 
00093   GPIO_Speed_400KHz = 0x00, 
00094   GPIO_Speed_2MHz   = 0x01, 
00095   GPIO_Speed_10MHz  = 0x02, 
00096   GPIO_Speed_40MHz  = 0x03  
00097 }GPIOSpeed_TypeDef;
00098 #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_400KHz) || ((SPEED) == GPIO_Speed_2MHz) || \
00099                               ((SPEED) == GPIO_Speed_10MHz)||  ((SPEED) == GPIO_Speed_40MHz))
00100 
00107 typedef enum
00108 { GPIO_PuPd_NOPULL = 0x00,
00109   GPIO_PuPd_UP     = 0x01,
00110   GPIO_PuPd_DOWN   = 0x02
00111 }GPIOPuPd_TypeDef;
00112 #define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \
00113                             ((PUPD) == GPIO_PuPd_DOWN))
00114 
00121 typedef enum
00122 { Bit_RESET = 0,
00123   Bit_SET
00124 }BitAction;
00125 #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
00126 
00134 typedef struct
00135 {
00136   uint32_t GPIO_Pin;              
00139   GPIOMode_TypeDef GPIO_Mode;     
00142   GPIOSpeed_TypeDef GPIO_Speed;   
00145   GPIOOType_TypeDef GPIO_OType;   
00148   GPIOPuPd_TypeDef GPIO_PuPd;     
00150 }GPIO_InitTypeDef;
00151 
00152 /* Exported constants --------------------------------------------------------*/
00153 
00161 #define GPIO_Pin_0                 ((uint16_t)0x0001)  
00162 #define GPIO_Pin_1                 ((uint16_t)0x0002)  
00163 #define GPIO_Pin_2                 ((uint16_t)0x0004)  
00164 #define GPIO_Pin_3                 ((uint16_t)0x0008)  
00165 #define GPIO_Pin_4                 ((uint16_t)0x0010)  
00166 #define GPIO_Pin_5                 ((uint16_t)0x0020)  
00167 #define GPIO_Pin_6                 ((uint16_t)0x0040)  
00168 #define GPIO_Pin_7                 ((uint16_t)0x0080)  
00169 #define GPIO_Pin_8                 ((uint16_t)0x0100)  
00170 #define GPIO_Pin_9                 ((uint16_t)0x0200)  
00171 #define GPIO_Pin_10                ((uint16_t)0x0400)  
00172 #define GPIO_Pin_11                ((uint16_t)0x0800)  
00173 #define GPIO_Pin_12                ((uint16_t)0x1000)  
00174 #define GPIO_Pin_13                ((uint16_t)0x2000)  
00175 #define GPIO_Pin_14                ((uint16_t)0x4000)  
00176 #define GPIO_Pin_15                ((uint16_t)0x8000)  
00177 #define GPIO_Pin_All               ((uint16_t)0xFFFF)  
00179 #define IS_GPIO_PIN(PIN) ((PIN) != (uint16_t)0x00)
00180 #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \
00181                               ((PIN) == GPIO_Pin_1) || \
00182                               ((PIN) == GPIO_Pin_2) || \
00183                               ((PIN) == GPIO_Pin_3) || \
00184                               ((PIN) == GPIO_Pin_4) || \
00185                               ((PIN) == GPIO_Pin_5) || \
00186                               ((PIN) == GPIO_Pin_6) || \
00187                               ((PIN) == GPIO_Pin_7) || \
00188                               ((PIN) == GPIO_Pin_8) || \
00189                               ((PIN) == GPIO_Pin_9) || \
00190                               ((PIN) == GPIO_Pin_10) || \
00191                               ((PIN) == GPIO_Pin_11) || \
00192                               ((PIN) == GPIO_Pin_12) || \
00193                               ((PIN) == GPIO_Pin_13) || \
00194                               ((PIN) == GPIO_Pin_14) || \
00195                               ((PIN) == GPIO_Pin_15))
00196 
00203 #define GPIO_PinSource0            ((uint8_t)0x00)
00204 #define GPIO_PinSource1            ((uint8_t)0x01)
00205 #define GPIO_PinSource2            ((uint8_t)0x02)
00206 #define GPIO_PinSource3            ((uint8_t)0x03)
00207 #define GPIO_PinSource4            ((uint8_t)0x04)
00208 #define GPIO_PinSource5            ((uint8_t)0x05)
00209 #define GPIO_PinSource6            ((uint8_t)0x06)
00210 #define GPIO_PinSource7            ((uint8_t)0x07)
00211 #define GPIO_PinSource8            ((uint8_t)0x08)
00212 #define GPIO_PinSource9            ((uint8_t)0x09)
00213 #define GPIO_PinSource10           ((uint8_t)0x0A)
00214 #define GPIO_PinSource11           ((uint8_t)0x0B)
00215 #define GPIO_PinSource12           ((uint8_t)0x0C)
00216 #define GPIO_PinSource13           ((uint8_t)0x0D)
00217 #define GPIO_PinSource14           ((uint8_t)0x0E)
00218 #define GPIO_PinSource15           ((uint8_t)0x0F)
00219 
00220 #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || \
00221                                        ((PINSOURCE) == GPIO_PinSource1) || \
00222                                        ((PINSOURCE) == GPIO_PinSource2) || \
00223                                        ((PINSOURCE) == GPIO_PinSource3) || \
00224                                        ((PINSOURCE) == GPIO_PinSource4) || \
00225                                        ((PINSOURCE) == GPIO_PinSource5) || \
00226                                        ((PINSOURCE) == GPIO_PinSource6) || \
00227                                        ((PINSOURCE) == GPIO_PinSource7) || \
00228                                        ((PINSOURCE) == GPIO_PinSource8) || \
00229                                        ((PINSOURCE) == GPIO_PinSource9) || \
00230                                        ((PINSOURCE) == GPIO_PinSource10) || \
00231                                        ((PINSOURCE) == GPIO_PinSource11) || \
00232                                        ((PINSOURCE) == GPIO_PinSource12) || \
00233                                        ((PINSOURCE) == GPIO_PinSource13) || \
00234                                        ((PINSOURCE) == GPIO_PinSource14) || \
00235                                        ((PINSOURCE) == GPIO_PinSource15))
00236 
00247 #define GPIO_AF_RTC_50Hz      ((uint8_t)0x00)  
00248 #define GPIO_AF_MCO           ((uint8_t)0x00)  
00249 #define GPIO_AF_RTC_AF1       ((uint8_t)0x00)  
00250 #define GPIO_AF_WKUP          ((uint8_t)0x00)  
00251 #define GPIO_AF_SWJ           ((uint8_t)0x00)  
00252 #define GPIO_AF_TRACE         ((uint8_t)0x00)  
00257 #define GPIO_AF_TIM2          ((uint8_t)0x01)  
00261 #define GPIO_AF_TIM3          ((uint8_t)0x02)  
00262 #define GPIO_AF_TIM4          ((uint8_t)0x02)  
00263 #define GPIO_AF_TIM5          ((uint8_t)0x02)  
00267 #define GPIO_AF_TIM9           ((uint8_t)0x03)  
00268 #define GPIO_AF_TIM10          ((uint8_t)0x03)  
00269 #define GPIO_AF_TIM11          ((uint8_t)0x03)  
00273 #define GPIO_AF_I2C1          ((uint8_t)0x04)  
00274 #define GPIO_AF_I2C2          ((uint8_t)0x04)  
00278 #define GPIO_AF_SPI1          ((uint8_t)0x05)  
00279 #define GPIO_AF_SPI2          ((uint8_t)0x05)  
00283 #define GPIO_AF_SPI3          ((uint8_t)0x06)  
00287 #define GPIO_AF_USART1        ((uint8_t)0x07)  
00288 #define GPIO_AF_USART2        ((uint8_t)0x07)  
00289 #define GPIO_AF_USART3        ((uint8_t)0x07)  
00293 #define GPIO_AF_UART4         ((uint8_t)0x08)  
00294 #define GPIO_AF_UART5         ((uint8_t)0x08)  
00298 #define GPIO_AF_USB           ((uint8_t)0xA)  
00302 #define GPIO_AF_LCD           ((uint8_t)0x0B)  
00306 #define GPIO_AF_FSMC           ((uint8_t)0x0C)  
00307 #define GPIO_AF_SDIO           ((uint8_t)0x0C)  
00311 #define GPIO_AF_RI            ((uint8_t)0x0E)  
00316 #define GPIO_AF_EVENTOUT      ((uint8_t)0x0F)  
00318 #define IS_GPIO_AF(AF)   (((AF) == GPIO_AF_RTC_50Hz) || ((AF) == GPIO_AF_MCO)    || \
00319                           ((AF) == GPIO_AF_RTC_AF1)  || ((AF) == GPIO_AF_WKUP)   || \
00320                           ((AF) == GPIO_AF_SWJ)      || ((AF) == GPIO_AF_TRACE)  || \
00321                           ((AF) == GPIO_AF_TIM2)     || ((AF)== GPIO_AF_TIM3)    || \
00322                           ((AF) == GPIO_AF_TIM4)     || ((AF)== GPIO_AF_TIM9)    || \
00323                           ((AF) == GPIO_AF_TIM10)    || ((AF)== GPIO_AF_TIM11)   || \
00324                           ((AF) == GPIO_AF_I2C1)     || ((AF) == GPIO_AF_I2C2)   || \
00325                           ((AF) == GPIO_AF_SPI1)     || ((AF) == GPIO_AF_SPI2)   || \
00326                           ((AF) == GPIO_AF_USART1)   || ((AF) == GPIO_AF_USART2) || \
00327                           ((AF) == GPIO_AF_USART3)   || ((AF) == GPIO_AF_USB)    || \
00328                           ((AF) == GPIO_AF_LCD)      || ((AF) == GPIO_AF_RI)     || \
00329                           ((AF) == GPIO_AF_TIM5)     || ((AF) == GPIO_AF_SPI3)   || \
00330                           ((AF) == GPIO_AF_UART4)    || ((AF) == GPIO_AF_UART5)  || \
00331                           ((AF) == GPIO_AF_FSMC)     || ((AF) == GPIO_AF_SDIO)   || \
00332                           ((AF) == GPIO_AF_EVENTOUT))
00333 
00342 #define GPIO_Mode_AIN GPIO_Mode_AN
00343 
00352 /* Exported macro ------------------------------------------------------------*/
00353 /* Exported functions ------------------------------------------------------- */
00354 
00355 /*  Function used to set the GPIO configuration to the default reset state ****/
00356 void GPIO_DeInit(GPIO_TypeDef* GPIOx);
00357 
00358 /* Initialization and Configuration functions *********************************/
00359 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
00360 void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
00361 void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
00362 
00363 /* GPIO Read and Write functions **********************************************/
00364 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
00365 uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
00366 uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
00367 uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
00368 void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
00369 void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
00370 void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
00371 void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
00372 void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
00373 
00374 /* GPIO Alternate functions configuration functions ***************************/
00375 void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
00376 
00377 #ifdef __cplusplus
00378 }
00379 #endif
00380 
00381 #endif /*__STM32L1xx_GPIO_H */
00382 
00391 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/