stm32f10x_gpio.h
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:14k
源码类别:

uCOS

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
  2. * File Name          : stm32f10x_gpio.h
  3. * Author             : MCD Application Team
  4. * Version            : V2.0.2
  5. * Date               : 07/11/2008
  6. * Description        : This file contains all the functions prototypes for the
  7. *                      GPIO firmware library.
  8. ********************************************************************************
  9. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  10. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  11. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  12. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  13. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  14. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  15. *******************************************************************************/
  16. /* Define to prevent recursive inclusion -------------------------------------*/
  17. #ifndef __STM32F10x_GPIO_H
  18. #define __STM32F10x_GPIO_H
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "stm32f10x_map.h"
  21. /* Exported types ------------------------------------------------------------*/
  22. #define IS_GPIO_ALL_PERIPH(PERIPH) (((*(u32*)&(PERIPH)) == GPIOA_BASE) || 
  23.                                     ((*(u32*)&(PERIPH)) == GPIOB_BASE) || 
  24.                                     ((*(u32*)&(PERIPH)) == GPIOC_BASE) || 
  25.                                     ((*(u32*)&(PERIPH)) == GPIOD_BASE) || 
  26.                                     ((*(u32*)&(PERIPH)) == GPIOE_BASE) || 
  27.                                     ((*(u32*)&(PERIPH)) == GPIOF_BASE) || 
  28.                                     ((*(u32*)&(PERIPH)) == GPIOG_BASE))
  29.                                      
  30. /* Output Maximum frequency selection ----------------------------------------*/
  31. typedef enum
  32.   GPIO_Speed_10MHz = 1,
  33.   GPIO_Speed_2MHz, 
  34.   GPIO_Speed_50MHz
  35. }GPIOSpeed_TypeDef;
  36. #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_10MHz) || ((SPEED) == GPIO_Speed_2MHz) || 
  37.                               ((SPEED) == GPIO_Speed_50MHz))
  38.                                          
  39. /* Configuration Mode enumeration --------------------------------------------*/
  40. typedef enum
  41. { GPIO_Mode_AIN = 0x0,
  42.   GPIO_Mode_IN_FLOATING = 0x04,
  43.   GPIO_Mode_IPD = 0x28,
  44.   GPIO_Mode_IPU = 0x48,
  45.   GPIO_Mode_Out_OD = 0x14,
  46.   GPIO_Mode_Out_PP = 0x10,
  47.   GPIO_Mode_AF_OD = 0x1C,
  48.   GPIO_Mode_AF_PP = 0x18
  49. }GPIOMode_TypeDef;
  50. #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || 
  51.                             ((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || 
  52.                             ((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || 
  53.                             ((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP))
  54.                               
  55. /* GPIO Init structure definition */
  56. typedef struct
  57. {
  58.   u16 GPIO_Pin;
  59.   GPIOSpeed_TypeDef GPIO_Speed;
  60.   GPIOMode_TypeDef GPIO_Mode;
  61. }GPIO_InitTypeDef;
  62. /* Bit_SET and Bit_RESET enumeration -----------------------------------------*/
  63. typedef enum
  64. { Bit_RESET = 0,
  65.   Bit_SET
  66. }BitAction;
  67. #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))
  68. /* Exported constants --------------------------------------------------------*/
  69. /* GPIO pins define ----------------------------------------------------------*/
  70. #define GPIO_Pin_0                 ((u16)0x0001)  /* Pin 0 selected */
  71. #define GPIO_Pin_1                 ((u16)0x0002)  /* Pin 1 selected */
  72. #define GPIO_Pin_2                 ((u16)0x0004)  /* Pin 2 selected */
  73. #define GPIO_Pin_3                 ((u16)0x0008)  /* Pin 3 selected */
  74. #define GPIO_Pin_4                 ((u16)0x0010)  /* Pin 4 selected */
  75. #define GPIO_Pin_5                 ((u16)0x0020)  /* Pin 5 selected */
  76. #define GPIO_Pin_6                 ((u16)0x0040)  /* Pin 6 selected */
  77. #define GPIO_Pin_7                 ((u16)0x0080)  /* Pin 7 selected */
  78. #define GPIO_Pin_8                 ((u16)0x0100)  /* Pin 8 selected */
  79. #define GPIO_Pin_9                 ((u16)0x0200)  /* Pin 9 selected */
  80. #define GPIO_Pin_10                ((u16)0x0400)  /* Pin 10 selected */
  81. #define GPIO_Pin_11                ((u16)0x0800)  /* Pin 11 selected */
  82. #define GPIO_Pin_12                ((u16)0x1000)  /* Pin 12 selected */
  83. #define GPIO_Pin_13                ((u16)0x2000)  /* Pin 13 selected */
  84. #define GPIO_Pin_14                ((u16)0x4000)  /* Pin 14 selected */
  85. #define GPIO_Pin_15                ((u16)0x8000)  /* Pin 15 selected */
  86. #define GPIO_Pin_All               ((u16)0xFFFF)  /* All pins selected */
  87. #define IS_GPIO_PIN(PIN) ((((PIN) & (u16)0x00) == 0x00) && ((PIN) != (u16)0x00))
  88. #define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || 
  89.                               ((PIN) == GPIO_Pin_1) || 
  90.                               ((PIN) == GPIO_Pin_2) || 
  91.                               ((PIN) == GPIO_Pin_3) || 
  92.                               ((PIN) == GPIO_Pin_4) || 
  93.                               ((PIN) == GPIO_Pin_5) || 
  94.                               ((PIN) == GPIO_Pin_6) || 
  95.                               ((PIN) == GPIO_Pin_7) || 
  96.                               ((PIN) == GPIO_Pin_8) || 
  97.                               ((PIN) == GPIO_Pin_9) || 
  98.                               ((PIN) == GPIO_Pin_10) || 
  99.                               ((PIN) == GPIO_Pin_11) || 
  100.                               ((PIN) == GPIO_Pin_12) || 
  101.                               ((PIN) == GPIO_Pin_13) || 
  102.                               ((PIN) == GPIO_Pin_14) || 
  103.                               ((PIN) == GPIO_Pin_15))
  104.                             
  105. /* GPIO Remap define ---------------------------------------------------------*/
  106. #define GPIO_Remap_SPI1            ((u32)0x00000001)  /* SPI1 Alternate Function mapping */
  107. #define GPIO_Remap_I2C1            ((u32)0x00000002)  /* I2C1 Alternate Function mapping */
  108. #define GPIO_Remap_USART1          ((u32)0x00000004)  /* USART1 Alternate Function mapping */
  109. #define GPIO_Remap_USART2          ((u32)0x00000008)  /* USART2 Alternate Function mapping */
  110. #define GPIO_PartialRemap_USART3   ((u32)0x00140010)  /* USART3 Partial Alternate Function mapping */
  111. #define GPIO_FullRemap_USART3      ((u32)0x00140030)  /* USART3 Full Alternate Function mapping */
  112. #define GPIO_PartialRemap_TIM1     ((u32)0x00160040)  /* TIM1 Partial Alternate Function mapping */
  113. #define GPIO_FullRemap_TIM1        ((u32)0x001600C0)  /* TIM1 Full Alternate Function mapping */
  114. #define GPIO_PartialRemap1_TIM2    ((u32)0x00180100)  /* TIM2 Partial1 Alternate Function mapping */
  115. #define GPIO_PartialRemap2_TIM2    ((u32)0x00180200)  /* TIM2 Partial2 Alternate Function mapping */
  116. #define GPIO_FullRemap_TIM2        ((u32)0x00180300)  /* TIM2 Full Alternate Function mapping */
  117. #define GPIO_PartialRemap_TIM3     ((u32)0x001A0800)  /* TIM3 Partial Alternate Function mapping */
  118. #define GPIO_FullRemap_TIM3        ((u32)0x001A0C00)  /* TIM3 Full Alternate Function mapping */
  119. #define GPIO_Remap_TIM4            ((u32)0x00001000)  /* TIM4 Alternate Function mapping */
  120. #define GPIO_Remap1_CAN            ((u32)0x001D4000)  /* CAN Alternate Function mapping */
  121. #define GPIO_Remap2_CAN            ((u32)0x001D6000)  /* CAN Alternate Function mapping */
  122. #define GPIO_Remap_PD01            ((u32)0x00008000)  /* PD01 Alternate Function mapping */
  123. #define GPIO_Remap_TIM5CH4_LSI     ((u32)0x00200001)  /* LSI connected to TIM5 Channel4 input capture for calibration */
  124. #define GPIO_Remap_ADC1_ETRGINJ    ((u32)0x00200002)  /* ADC1 External Trigger Injected Conversion remapping */
  125. #define GPIO_Remap_ADC1_ETRGREG    ((u32)0x00200004)  /* ADC1 External Trigger Regular Conversion remapping */
  126. #define GPIO_Remap_ADC2_ETRGINJ    ((u32)0x00200008)  /* ADC2 External Trigger Injected Conversion remapping */
  127. #define GPIO_Remap_ADC2_ETRGREG    ((u32)0x00200010)  /* ADC2 External Trigger Regular Conversion remapping */
  128. #define GPIO_Remap_SWJ_NoJTRST     ((u32)0x00300100)  /* Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
  129. #define GPIO_Remap_SWJ_JTAGDisable ((u32)0x00300200)  /* JTAG-DP Disabled and SW-DP Enabled */
  130. #define GPIO_Remap_SWJ_Disable     ((u32)0x00300400)  /* Full SWJ Disabled (JTAG-DP + SW-DP) */
  131. #define IS_GPIO_REMAP(REMAP) (((REMAP) == GPIO_Remap_SPI1) || ((REMAP) == GPIO_Remap_I2C1) || 
  132.                               ((REMAP) == GPIO_Remap_USART1) || ((REMAP) == GPIO_Remap_USART2) || 
  133.                               ((REMAP) == GPIO_PartialRemap_USART3) || ((REMAP) == GPIO_FullRemap_USART3) || 
  134.                               ((REMAP) == GPIO_PartialRemap_TIM1) || ((REMAP) == GPIO_FullRemap_TIM1) || 
  135.                               ((REMAP) == GPIO_PartialRemap1_TIM2) || ((REMAP) == GPIO_PartialRemap2_TIM2) || 
  136.                               ((REMAP) == GPIO_FullRemap_TIM2) || ((REMAP) == GPIO_PartialRemap_TIM3) || 
  137.                               ((REMAP) == GPIO_FullRemap_TIM3) || ((REMAP) == GPIO_Remap_TIM4) || 
  138.                               ((REMAP) == GPIO_Remap1_CAN) || ((REMAP) == GPIO_Remap2_CAN) || 
  139.                               ((REMAP) == GPIO_Remap_PD01) || ((REMAP) == GPIO_Remap_TIM5CH4_LSI) || 
  140.                               ((REMAP) == GPIO_Remap_ADC1_ETRGINJ) ||((REMAP) == GPIO_Remap_ADC1_ETRGREG) || 
  141.                               ((REMAP) == GPIO_Remap_ADC2_ETRGINJ) ||((REMAP) == GPIO_Remap_ADC2_ETRGREG) || 
  142.                               ((REMAP) == GPIO_Remap_SWJ_NoJTRST) || ((REMAP) == GPIO_Remap_SWJ_JTAGDisable)|| 
  143.                               ((REMAP) == GPIO_Remap_SWJ_Disable))
  144.                               
  145. /* GPIO Port Sources ---------------------------------------------------------*/
  146. #define GPIO_PortSourceGPIOA       ((u8)0x00)
  147. #define GPIO_PortSourceGPIOB       ((u8)0x01)
  148. #define GPIO_PortSourceGPIOC       ((u8)0x02)
  149. #define GPIO_PortSourceGPIOD       ((u8)0x03)
  150. #define GPIO_PortSourceGPIOE       ((u8)0x04)
  151. #define GPIO_PortSourceGPIOF       ((u8)0x05)
  152. #define GPIO_PortSourceGPIOG       ((u8)0x06)
  153. #define IS_GPIO_EVENTOUT_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == GPIO_PortSourceGPIOA) || 
  154.                                                   ((PORTSOURCE) == GPIO_PortSourceGPIOB) || 
  155.                                                   ((PORTSOURCE) == GPIO_PortSourceGPIOC) || 
  156.                                                   ((PORTSOURCE) == GPIO_PortSourceGPIOD) || 
  157.                                                   ((PORTSOURCE) == GPIO_PortSourceGPIOE))
  158.                                          
  159. #define IS_GPIO_EXTI_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == GPIO_PortSourceGPIOA) || 
  160.                                               ((PORTSOURCE) == GPIO_PortSourceGPIOB) || 
  161.                                               ((PORTSOURCE) == GPIO_PortSourceGPIOC) || 
  162.                                               ((PORTSOURCE) == GPIO_PortSourceGPIOD) || 
  163.                                               ((PORTSOURCE) == GPIO_PortSourceGPIOE) || 
  164.                                               ((PORTSOURCE) == GPIO_PortSourceGPIOF) || 
  165.                                               ((PORTSOURCE) == GPIO_PortSourceGPIOG))
  166.                                        
  167. /* GPIO Pin sources ----------------------------------------------------------*/
  168. #define GPIO_PinSource0            ((u8)0x00)
  169. #define GPIO_PinSource1            ((u8)0x01)
  170. #define GPIO_PinSource2            ((u8)0x02)
  171. #define GPIO_PinSource3            ((u8)0x03)
  172. #define GPIO_PinSource4            ((u8)0x04)
  173. #define GPIO_PinSource5            ((u8)0x05)
  174. #define GPIO_PinSource6            ((u8)0x06)
  175. #define GPIO_PinSource7            ((u8)0x07)
  176. #define GPIO_PinSource8            ((u8)0x08)
  177. #define GPIO_PinSource9            ((u8)0x09)
  178. #define GPIO_PinSource10           ((u8)0x0A)
  179. #define GPIO_PinSource11           ((u8)0x0B)
  180. #define GPIO_PinSource12           ((u8)0x0C)
  181. #define GPIO_PinSource13           ((u8)0x0D)
  182. #define GPIO_PinSource14           ((u8)0x0E)
  183. #define GPIO_PinSource15           ((u8)0x0F)
  184. #define IS_GPIO_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == GPIO_PinSource0) || 
  185.                                        ((PINSOURCE) == GPIO_PinSource1) || 
  186.                                        ((PINSOURCE) == GPIO_PinSource2) || 
  187.                                        ((PINSOURCE) == GPIO_PinSource3) || 
  188.                                        ((PINSOURCE) == GPIO_PinSource4) || 
  189.                                        ((PINSOURCE) == GPIO_PinSource5) || 
  190.                                        ((PINSOURCE) == GPIO_PinSource6) || 
  191.                                        ((PINSOURCE) == GPIO_PinSource7) || 
  192.                                        ((PINSOURCE) == GPIO_PinSource8) || 
  193.                                        ((PINSOURCE) == GPIO_PinSource9) || 
  194.                                        ((PINSOURCE) == GPIO_PinSource10) || 
  195.                                        ((PINSOURCE) == GPIO_PinSource11) || 
  196.                                        ((PINSOURCE) == GPIO_PinSource12) || 
  197.                                        ((PINSOURCE) == GPIO_PinSource13) || 
  198.                                        ((PINSOURCE) == GPIO_PinSource14) || 
  199.                                        ((PINSOURCE) == GPIO_PinSource15))
  200.                           
  201. /* Exported macro ------------------------------------------------------------*/
  202. /* Exported functions ------------------------------------------------------- */
  203. void GPIO_DeInit(GPIO_TypeDef* GPIOx);
  204. void GPIO_AFIODeInit(void);
  205. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
  206. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
  207. u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
  208. u16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
  209. u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
  210. u16 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
  211. void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
  212. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
  213. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal);
  214. void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal);
  215. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
  216. void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource);
  217. void GPIO_EventOutputCmd(FunctionalState NewState);
  218. void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState);
  219. void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource);
  220. #endif /* __STM32F10x_GPIO_H */
  221. /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/