Subversion Repositories EngineBay2

Rev

Rev 35 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32l1xx_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) 2017 STMicroelectronics.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   * This software component is licensed by ST under BSD 3-Clause license,
  13.   * the "License"; You may not use this file except in compliance with the
  14.   * License. You may obtain a copy of the License at:
  15.   *                        opensource.org/licenses/BSD-3-Clause
  16.   *
  17.   ******************************************************************************
  18.   */
  19.  
  20. /* Define to prevent recursive inclusion -------------------------------------*/
  21. #ifndef __STM32L1xx_HAL_GPIO_H
  22. #define __STM32L1xx_HAL_GPIO_H
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. /* Includes ------------------------------------------------------------------*/
  29. #include "stm32l1xx_hal_def.h"
  30.  
  31. /** @addtogroup STM32L1xx_HAL_Driver
  32.   * @{
  33.   */
  34.  
  35. /** @defgroup GPIO GPIO
  36.   * @brief GPIO HAL module driver
  37.   * @{
  38.   */
  39.  
  40. /* Exported types ------------------------------------------------------------*/
  41.  
  42. /** @defgroup GPIO_Exported_Types GPIO Exported Types
  43.   * @{
  44.   */
  45. /**
  46.   * @brief   GPIO Init structure definition
  47.   */
  48. typedef struct
  49. {
  50.   uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.
  51.                            This parameter can be any value of @ref GPIO_pins */
  52.  
  53.   uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.
  54.                            This parameter can be a value of @ref GPIO_mode */
  55.  
  56.   uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
  57.                            This parameter can be a value of @ref GPIO_pull */
  58.  
  59.   uint32_t Speed;     /*!< Specifies the speed for the selected pins.
  60.                            This parameter can be a value of @ref GPIO_speed */
  61.  
  62.   uint32_t Alternate;  /*!< Peripheral to be connected to the selected pins
  63.                             This parameter can be a value of @ref GPIOEx_Alternate_function_selection */
  64. } GPIO_InitTypeDef;
  65.  
  66. /**
  67.   * @brief  GPIO Bit SET and Bit RESET enumeration
  68.   */
  69. typedef enum
  70. {
  71.   GPIO_PIN_RESET = 0,
  72.   GPIO_PIN_SET
  73. } GPIO_PinState;
  74. /**
  75.   * @}
  76.   */
  77.  
  78. /* Exported constants --------------------------------------------------------*/
  79.  
  80. /** @defgroup GPIO_Exported_Constants GPIO Exported Constants
  81.   * @{
  82.   */
  83.  
  84.  
  85. /** @defgroup GPIO_pins GPIO pins
  86.   * @{
  87.   */
  88. #define GPIO_PIN_0                 ((uint16_t)0x0001U)  /* Pin 0 selected    */
  89. #define GPIO_PIN_1                 ((uint16_t)0x0002U)  /* Pin 1 selected    */
  90. #define GPIO_PIN_2                 ((uint16_t)0x0004U)  /* Pin 2 selected    */
  91. #define GPIO_PIN_3                 ((uint16_t)0x0008U)  /* Pin 3 selected    */
  92. #define GPIO_PIN_4                 ((uint16_t)0x0010U)  /* Pin 4 selected    */
  93. #define GPIO_PIN_5                 ((uint16_t)0x0020U)  /* Pin 5 selected    */
  94. #define GPIO_PIN_6                 ((uint16_t)0x0040U)  /* Pin 6 selected    */
  95. #define GPIO_PIN_7                 ((uint16_t)0x0080U)  /* Pin 7 selected    */
  96. #define GPIO_PIN_8                 ((uint16_t)0x0100U)  /* Pin 8 selected    */
  97. #define GPIO_PIN_9                 ((uint16_t)0x0200U)  /* Pin 9 selected    */
  98. #define GPIO_PIN_10                ((uint16_t)0x0400U)  /* Pin 10 selected   */
  99. #define GPIO_PIN_11                ((uint16_t)0x0800U)  /* Pin 11 selected   */
  100. #define GPIO_PIN_12                ((uint16_t)0x1000U)  /* Pin 12 selected   */
  101. #define GPIO_PIN_13                ((uint16_t)0x2000U)  /* Pin 13 selected   */
  102. #define GPIO_PIN_14                ((uint16_t)0x4000U)  /* Pin 14 selected   */
  103. #define GPIO_PIN_15                ((uint16_t)0x8000U)  /* Pin 15 selected   */
  104. #define GPIO_PIN_All               ((uint16_t)0xFFFFU)  /* All pins selected */
  105.  
  106. #define GPIO_PIN_MASK              (0x0000FFFFU) /* PIN mask for assert test */
  107. /**
  108.   * @}
  109.   */
  110.  
  111. /** @defgroup GPIO_mode GPIO mode
  112.   * @brief GPIO Configuration Mode
  113.   *        Elements values convention: 0xX0yz00YZ
  114.   *           - X  : GPIO mode or EXTI Mode
  115.   *           - y  : External IT or Event trigger detection
  116.   *           - z  : IO configuration on External IT or Event
  117.   *           - Y  : Output type (Push Pull or Open Drain)
  118.   *           - Z  : IO Direction mode (Input, Output, Alternate or Analog)
  119.   * @{
  120.   */
  121. #define  GPIO_MODE_INPUT                        (0x00000000U)   /*!< Input Floating Mode                   */
  122. #define  GPIO_MODE_OUTPUT_PP                    (0x00000001U)   /*!< Output Push Pull Mode                 */
  123. #define  GPIO_MODE_OUTPUT_OD                    (0x00000011U)   /*!< Output Open Drain Mode                */
  124. #define  GPIO_MODE_AF_PP                        (0x00000002U)   /*!< Alternate Function Push Pull Mode     */
  125. #define  GPIO_MODE_AF_OD                        (0x00000012U)   /*!< Alternate Function Open Drain Mode    */
  126.  
  127. #define  GPIO_MODE_ANALOG                       (0x00000003U)   /*!< Analog Mode  */
  128.  
  129. #define  GPIO_MODE_IT_RISING                    (0x10110000U)   /*!< External Interrupt Mode with Rising edge trigger detection          */
  130. #define  GPIO_MODE_IT_FALLING                   (0x10210000U)   /*!< External Interrupt Mode with Falling edge trigger detection         */
  131. #define  GPIO_MODE_IT_RISING_FALLING            (0x10310000U)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */
  132.  
  133. #define  GPIO_MODE_EVT_RISING                   (0x10120000U)   /*!< External Event Mode with Rising edge trigger detection               */
  134. #define  GPIO_MODE_EVT_FALLING                  (0x10220000U)   /*!< External Event Mode with Falling edge trigger detection              */
  135. #define  GPIO_MODE_EVT_RISING_FALLING           (0x10320000U)   /*!< External Event Mode with Rising/Falling edge trigger detection       */
  136.  
  137. /**
  138.   * @}
  139.   */
  140.  
  141. /** @defgroup GPIO_speed GPIO speed
  142.   * @brief GPIO Output Maximum frequency
  143.   * @{
  144.   */
  145. #define  GPIO_SPEED_FREQ_LOW       (0x00000000U) /*!< max: 400 KHz, please refer to the product datasheet */
  146. #define  GPIO_SPEED_FREQ_MEDIUM    (0x00000001U) /*!< max: 1 MHz to 2 MHz, please refer to the product datasheet */
  147. #define  GPIO_SPEED_FREQ_HIGH      (0x00000002U) /*!< max: 2 MHz to 10 MHz, please refer to the product datasheet */
  148. #define  GPIO_SPEED_FREQ_VERY_HIGH (0x00000003U) /*!< max: 8 MHz to 50 MHz, please refer to the product datasheet */
  149.  
  150. /**
  151.   * @}
  152.   */
  153.  
  154. /** @defgroup GPIO_pull GPIO pull
  155.   * @brief GPIO Pull-Up or Pull-Down Activation
  156.   * @{
  157.   */
  158. #define  GPIO_NOPULL        (0x00000000U)   /*!< No Pull-up or Pull-down activation  */
  159. #define  GPIO_PULLUP        (0x00000001U)   /*!< Pull-up activation                  */
  160. #define  GPIO_PULLDOWN      (0x00000002U)   /*!< Pull-down activation                */
  161.  
  162. /**
  163.   * @}
  164.   */
  165.  
  166. /**
  167.   * @}
  168.   */
  169.  
  170. /* Private constants ---------------------------------------------------------*/
  171. /** @defgroup GPIO_Private_Constants GPIO Private Constants
  172.   * @{
  173.   */
  174.  
  175. /**
  176.   * @}
  177.   */
  178.  
  179. /* Private macros --------------------------------------------------------*/
  180. /** @defgroup GPIO_Private_Macros GPIO Private Macros
  181.   * @{
  182.   */
  183.  
  184. #define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
  185.  
  186. #define IS_GPIO_PIN(__PIN__)        ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U) &&\
  187.                                      (((uint32_t)(__PIN__) & ~GPIO_PIN_MASK) == 0x00U))
  188.  
  189. #define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \
  190.                             ((PULL) == GPIO_PULLDOWN))
  191.  
  192. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW)  || ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || \
  193.                                 ((SPEED) == GPIO_SPEED_FREQ_HIGH) || ((SPEED) == GPIO_SPEED_FREQ_VERY_HIGH))
  194.  
  195. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT)              ||\
  196.                             ((MODE) == GPIO_MODE_OUTPUT_PP)          ||\
  197.                             ((MODE) == GPIO_MODE_OUTPUT_OD)          ||\
  198.                             ((MODE) == GPIO_MODE_AF_PP)              ||\
  199.                             ((MODE) == GPIO_MODE_AF_OD)              ||\
  200.                             ((MODE) == GPIO_MODE_IT_RISING)          ||\
  201.                             ((MODE) == GPIO_MODE_IT_FALLING)         ||\
  202.                             ((MODE) == GPIO_MODE_IT_RISING_FALLING)  ||\
  203.                             ((MODE) == GPIO_MODE_EVT_RISING)         ||\
  204.                             ((MODE) == GPIO_MODE_EVT_FALLING)        ||\
  205.                             ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\
  206.                             ((MODE) == GPIO_MODE_ANALOG))
  207.  
  208. /**
  209.   * @}
  210.   */
  211.  
  212. /* Exported macro ------------------------------------------------------------*/
  213.  
  214. /** @defgroup GPIO_Exported_Macros GPIO Exported Macros
  215.   * @{
  216.   */
  217.  
  218. /**
  219.   * @brief  Checks whether the specified EXTI line flag is set or not.
  220.   * @param  __EXTI_LINE__ specifies the EXTI line flag to check.
  221.   *         This parameter can be GPIO_PIN_x where x can be(0..15)
  222.   * @retval The new state of __EXTI_LINE__ (SET or RESET).
  223.   */
  224. #define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))
  225.  
  226. /**
  227.   * @brief  Clears the EXTI's line pending flags.
  228.   * @param  __EXTI_LINE__ specifies the EXTI lines flags to clear.
  229.   *         This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
  230.   * @retval None
  231.   */
  232. #define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
  233.  
  234. /**
  235.   * @brief  Checks whether the specified EXTI line is asserted or not.
  236.   * @param  __EXTI_LINE__ specifies the EXTI line to check.
  237.   *          This parameter can be GPIO_PIN_x where x can be(0..15)
  238.   * @retval The new state of __EXTI_LINE__ (SET or RESET).
  239.   */
  240. #define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))
  241.  
  242. /**
  243.   * @brief  Clears the EXTI's line pending bits.
  244.   * @param  __EXTI_LINE__ specifies the EXTI lines to clear.
  245.   *          This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
  246.   * @retval None
  247.   */
  248. #define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))
  249.  
  250. /**
  251.   * @brief  Generates a Software interrupt on selected EXTI line.
  252.   * @param  __EXTI_LINE__ specifies the EXTI line to check.
  253.   *          This parameter can be GPIO_PIN_x where x can be(0..15)
  254.   * @retval None
  255.   */
  256. #define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__))
  257.  
  258. /**
  259.   * @}
  260.   */
  261.  
  262. /* Include GPIO HAL Extension module */
  263. #include "stm32l1xx_hal_gpio_ex.h"
  264.  
  265. /* Exported functions --------------------------------------------------------*/
  266. /** @defgroup GPIO_Exported_Functions GPIO Exported Functions
  267.   *  @brief    GPIO Exported Functions
  268.   * @{
  269.   */
  270.  
  271. /** @defgroup GPIO_Exported_Functions_Group1 Initialization and Configuration functions
  272.  *  @brief    Initialization and Configuration functions
  273.  * @{
  274.  */
  275.  
  276. /* Initialization and de-initialization functions *****************************/
  277. void              HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);
  278. void              HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);
  279.  
  280. /**
  281.   * @}
  282.   */
  283.  
  284. /** @defgroup GPIO_Exported_Functions_Group2 IO operation functions
  285.   *  @brief    IO operation functions
  286.   * @{
  287.   */
  288.  
  289. /* IO operation functions *****************************************************/
  290. GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
  291. void              HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
  292. void              HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
  293. HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
  294. void              HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
  295. void              HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
  296.  
  297. /**
  298.   * @}
  299.   */
  300.  
  301. /**
  302.   * @}
  303.   */
  304.  
  305. /**
  306.   * @}
  307.   */
  308.  
  309. /**
  310.   * @}
  311.   */
  312.  
  313. #ifdef __cplusplus
  314. }
  315. #endif
  316.  
  317. #endif /* __STM32L1xx_HAL_GPIO_H */
  318.  
  319. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  320.  
  321.