GPIO_InitTypeDef 结构体
-
typedef struct
-
{
-
uint16_t GPIO_Pin; //引脚号
-
GPIOSpeed_TypeDef GPIO_Speed; //配置速度
-
GPIOMode_TypeDef GPIO_Mode; //工作模式
- }GPIO_InitTypeDef;
引脚定义
- #define GPIO_Pin_0 ((uint16_t)0x0001) /* Pin 0 selected */
- #define GPIO_Pin_1 ((uint16_t)0x0002) /* Pin 1 selected */
- #define GPIO_Pin_2 ((uint16_t)0x0004) /* Pin 2 selected */
- #define GPIO_Pin_3 ((uint16_t)0x0008) /* Pin 3 selected */
- #define GPIO_Pin_4 ((uint16_t)0x0010) /* Pin 4 selected */
- #define GPIO_Pin_5 ((uint16_t)0x0020) /* Pin 5 selected */
- #define GPIO_Pin_6 ((uint16_t)0x0040) /* Pin 6 selected */
- #define GPIO_Pin_7 ((uint16_t)0x0080) /* Pin 7 selected */
- #define GPIO_Pin_8 ((uint16_t)0x0100) /* Pin 8 selected */
- #define GPIO_Pin_9 ((uint16_t)0x0200) /* Pin 9 selected */
- #define GPIO_Pin_10 ((uint16_t)0x0400) /* Pin 10 selected */
- #define GPIO_Pin_11 ((uint16_t)0x0800) /* Pin 11 selected */
- #define GPIO_Pin_12 ((uint16_t)0x1000) /* Pin 12 selected */
- #define GPIO_Pin_13 ((uint16_t)0x2000) /* Pin 13 selected */
- #define GPIO_Pin_14 ((uint16_t)0x4000) /* Pin 14 selected */
- #define GPIO_Pin_15 ((uint16_t)0x8000) /* Pin 15 selected */
- #define GPIO_Pin_All ((uint16_t)0xFFFF) /* All pins selected */
模式定义
- typedef enum
- { GPIO_Mode_AIN = 0x0, //模拟输入
- GPIO_Mode_IN_FLOATING = 0x04, //浮空输入模式, 默认
- GPIO_Mode_IPD = 0x28, //上拉/下拉输入模式
- GPIO_Mode_IPU = 0x48, //保留
- GPIO_Mode_Out_OD = 0x14, //通用开漏输出
- GPIO_Mode_Out_PP = 0x10, //通用推挽输出
- GPIO_Mode_AF_OD = 0x1C, //复用(开漏)输出
- GPIO_Mode_AF_PP = 0x18 //复用(推挽)输出
- }GPIOMode_TypeDef;
速度定义
- typedef enum
- {
- GPIO_Speed_10MHz = 1,
- GPIO_Speed_2MHz,
- GPIO_Speed_50MHz
- }GPIOSpeed_TypeDef;
操作函数
//直接初始化某排引脚的外围寄存器到复位的默认值,这个函数是用来默认设置GPIO的,只需要输入GPIO的端口号就可以了。
1.void GPIO_DeInit(GPIO_TypeDef* GPIOx);
//
2. void GPIO_AFIODeInit(void);
1.void GPIO_DeInit(GPIO_TypeDef* GPIOx);
//
2. void GPIO_AFIODeInit(void);
//用GPIO_InitTypeDef结构体配置端口
3. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
3. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
//重置GPIO结构参数
4. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
4. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
//读特定的输入端口的pin的值
5. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
5. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//读特定的输入端口的值
6. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
7. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
8. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
9. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
10. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
11. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
12. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
13. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
14. void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
15. void GPIO_EventOutputCmd(FunctionalState NewState);
16. void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
17. void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
18. void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
6. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
7. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
8. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
9. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
10. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
11. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
12. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
13. void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
14. void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
15. void GPIO_EventOutputCmd(FunctionalState NewState);
16. void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
17. void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
18. void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);