GPIO外设

GPIO简介

GPIO外设简介

stm32f1xx_hal_gpio_ex.h的拓展API包含AFIO相关的操作

cubeMX配置

  • PIN配置
  1. GPIO_Input:输入(上拉/下拉/浮空)
  2. GPIO_Output:输出(推挽/开漏)
  3. GPIO_Analog:模拟输入
  4. GPIO_EXTIx:外部中断
  5. Reset_State:复位
  6. EVENTOUT:事件输出(通过AFIO重映射将输出一个脉冲)
  • GPIO模式
  1. GPIO output level
    HighGPIO输出初始化为高电平
    LowGPIO输出初始化为低电平

  2. GPIO mode
    Output Push Pull推挽输出,能输出高低电平,且高低电平都有驱动能力。
    Output Open Drain开漏输出,只能输出低电平。
    Analog mode模拟输入,ADC采样信号输入引脚的配置模式。
    Alternate Function Push Pull复用推挽输出。
    Input mode输入模式,配合No pull-up/pull-down。

  3. GPIO Pull-up/Pul-down
    No pull-up/pull-down无内部上拉或下拉
    Pull-up内部上拉
    Pull-down内部下拉

  4. Maximum output speed
    Low低速,GPIO_Speed_2MHz
    Medium中速,GPIO_Speed_10MHz
    High高速,GPIO_Speed_50MHz

  5. User Label:用户标签,可以按照需要给引脚命名
    user Label会在main.h中进行宏定义,将GPIO宏定义为 user label

HAL库

GPIO类型定义

  • 引脚状态
typedef enum
{
  GPIO_PIN_RESET = 0u,
  GPIO_PIN_SET
} GPIO_PinState;
  • 引脚选择
    GPIO_PIN_x/ALL:选择PIN
    GPIO_TypeDef:选择GPIOx

  • 引脚选择
    GPIO_MODE_INPUT:浮空输入
    GPIO_MODE_OUTPUT_PP:推挽输出
    GPIO_MODE_OUTPUT_OD:开漏输出
    GPIO_MODE_AF_PP:复用推挽输出
    GPIO_MODE_AF_OD:复用开漏输出
    GPIO_MODE_ANALOG:模拟输入
    GPIO_MODE_IT_RISING:外部中断(上升沿触发)
    GPIO_MODE_IT_FALLING:外部中断(下降沿触发)
    GPIO_MODE_IT_RISING_FALLING:外部中断(双边沿触发)
    GPIO_MODE_EVT_RISING:外部事件(上升沿触发)
    GPIO_MODE_EVT_FALLING:外部事件(下降沿触发)
    GPIO_MODE_EVT_RISING_FALLING:外部事件(双边沿触发)
    外部事件模式不会产生中断,只置中断标志位,用于检测

GPIO函数

初始化函数

// 初始化
void  HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);

// 复位
void  HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);

GPIO控制

// 读取引脚电平
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

// 输出控制
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

// 输出电平翻转
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

GPIO外部中断

// 外部中断
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

// 中断处理回调函数(可自定义)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

自锁操作

// GPIO的锁定机制
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);




Reference

                                     ------ BY Flier

2023.10.2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值