STM32:GPIO


GPIO_InitTypeDef 结构体
  1. typedef struct
  2. {
  3.   uint16_t GPIO_Pin; //引脚号
  4.   GPIOSpeed_TypeDef GPIO_Speed; //配置速度
  5.   GPIOMode_TypeDef GPIO_Mode; //工作模式
  6. }GPIO_InitTypeDef;

引脚定义
  1. #define GPIO_Pin_0 ((uint16_t)0x0001) /* Pin 0 selected */
  2. #define GPIO_Pin_1 ((uint16_t)0x0002) /* Pin 1 selected */
  3. #define GPIO_Pin_2 ((uint16_t)0x0004) /* Pin 2 selected */
  4. #define GPIO_Pin_3 ((uint16_t)0x0008) /* Pin 3 selected */
  5. #define GPIO_Pin_4 ((uint16_t)0x0010) /* Pin 4 selected */
  6. #define GPIO_Pin_5 ((uint16_t)0x0020) /* Pin 5 selected */
  7. #define GPIO_Pin_6 ((uint16_t)0x0040) /* Pin 6 selected */
  8. #define GPIO_Pin_7 ((uint16_t)0x0080) /* Pin 7 selected */
  9. #define GPIO_Pin_8 ((uint16_t)0x0100) /* Pin 8 selected */
  10. #define GPIO_Pin_9 ((uint16_t)0x0200) /* Pin 9 selected */
  11. #define GPIO_Pin_10 ((uint16_t)0x0400) /* Pin 10 selected */
  12. #define GPIO_Pin_11 ((uint16_t)0x0800) /* Pin 11 selected */
  13. #define GPIO_Pin_12 ((uint16_t)0x1000) /* Pin 12 selected */
  14. #define GPIO_Pin_13 ((uint16_t)0x2000) /* Pin 13 selected */
  15. #define GPIO_Pin_14 ((uint16_t)0x4000) /* Pin 14 selected */
  16. #define GPIO_Pin_15 ((uint16_t)0x8000) /* Pin 15 selected */
  17. #define GPIO_Pin_All ((uint16_t)0xFFFF) /* All pins selected */

模式定义

  1. typedef enum
  2. { GPIO_Mode_AIN = 0x0, //模拟输入
  3. GPIO_Mode_IN_FLOATING = 0x04, //浮空输入模式, 默认
  4. GPIO_Mode_IPD = 0x28, //上拉/下拉输入模式
  5. GPIO_Mode_IPU = 0x48, //保留
  6. GPIO_Mode_Out_OD = 0x14, //通用开漏输出
  7. GPIO_Mode_Out_PP = 0x10, //通用推挽输出
  8. GPIO_Mode_AF_OD = 0x1C, //复用(开漏)输出
  9. GPIO_Mode_AF_PP = 0x18 //复用(推挽)输出
  10. }GPIOMode_TypeDef;

速度定义

  1. typedef enum
  2. {
  3. GPIO_Speed_10MHz = 1,
  4. GPIO_Speed_2MHz,
  5. GPIO_Speed_50MHz
  6. }GPIOSpeed_TypeDef;

操作函数

// 直接初始化某排引脚的外围寄存器到复位的默认值,这个函数是用来默认设置GPIO的,只需要输入GPIO的端口号就可以了。
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);
//重置GPIO结构参数
4. void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
//读特定的输入端口的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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值