STM32 HAL库GPIO API函数详解

给个三连,谢谢

一.stm32f1xx_hal_gpio.c

1.初始化GPIO口配置——HAL_GPIO_Init()

//初始化 GPIO口配置

void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); 

1.1输入参数(2个)

  • GPIO_InitTypeDef(GPIO配置结构体)
  • GPIOx(哪组IO端口):GPIOA 、GPIOB…
  • 1.2返回值:

  • 2.复位GPIO口配置到默认复位值——HAL_GPIO_DeInit()

    //复位-GPIO口配置到默认复位值
    
    void HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);
    
    

    2.1输入参数(2个)

  • GPIOx(哪组IO端口) :GPIOA 、GPIOB…
  • GPIO_Pin(具体哪个引脚): GPIO_PIN_0 ~ GPIO_PIN_15
  • 2.2返回值

  • 3.读取IO口电平状态——HAL_GPIO_ReadPin()

    //读取IO口电平状态
    
    GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    
    

    3.1输入参数(2个)

  • GPIOx(哪组IO端口) :GPIOA 、GPIOB…
  • GPIO_Pin(具体哪个引脚): GPIO_PIN_0 ~ GPIO_PIN_15
  • 3.2返回值

  • GPIO_PIN_SET :高电平,数值1
  • GPIO_PIN_RESET  :低电平,数值0
  • //返回值
    
    GPIO_PIN_SET        //高电平,数值1
    GPIO_PIN_RESET      //低电平,数值0
    
    

    3.3关联寄存器

            寄存器 GPIOx_IDR 位15:0 相应引脚的输入数据

    4.配置IO口电平状态——HAL_GPIO_WritePin()

    // 配置IO口电平状态
    
    void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
    
    

    4.1输入参数(3个)

  • GPIOx(哪组IO端口) :GPIOA 、GPIOB…
  • GPIO_Pin(具体哪个引脚): GPIO_PIN_0 ~ GPIO_PIN_15
  • PinState(设置什么电平状态):
  •         (1)GPIO_PIN_SET :高电平,数值1

            (2)GPIO_PIN_RESET :低电平,数值0

    //PinState(设置什么电平状态)
    
    GPIO_PIN_SET        //高电平,数值1
    GPIO_PIN_RESET      //低电平,数值0
    
    

    4.2返回值

  • 无  
  • 4.3关联寄存器

  • 寄存器 GPIOx_BSRR 位15:0 BSy :置位 则 相应IO输出高电平
  • 寄存器 GPIOx_BSRR 位位31:16 BRy :置位 则 相应IO输出低电平
  • 5.翻转 IO口电平状态——HAL_GPIO_TogglePin()

    // 翻转IO口电平状态,高到低,低到高
    
    void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    
    

    5.1输入参数(2个)

  • GPIOx(哪组IO端口) :GPIOA 、GPIOB…
  • GPIO_Pin(具体哪个引脚): GPIO_PIN_0 ~ GPIO_PIN_15
  • 5.2返回值

  • 无  
  • 5.3关联寄存器

  • 寄存器 GPIOx_BRR 位15:0 BRy :原来是高电平 就 置位 则 相应IO输出低电平 实现翻转
  • 寄存器 GPIOx_BSRR 位15:0 BSy :原来是低电平 就 置位 则 相应IO输出高电平 实现翻转
  • 6.锁定 IO口的配置,直至下次复位——HAL_GPIO_LockPin()

    //锁定IO口的配置,直至下次复位
    
     HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
    
    

    6.1输入参数(2个)

  • GPIOx(哪组IO端口) :GPIOA 、GPIOB…
  • GPIO_Pin(具体哪个引脚): GPIO_PIN_0 ~ GPIO_PIN_15
  • 6.2返回值

  • HAL_OK :正确
  • HAL_ERROR :错误
  • //返回值
    
    HAL_OK      //正确
    HAL_ERROR   //错误
    
    

    6.3关联寄存器

  • 关联寄存器:GPIOx_LCKR
  • 7.外部中断服务函数——HAL_GPIO_EXTI_IRQHandler()

    //外部中断服务函数
    
    void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
    
    

    7.1输入参数(1个)

  • GPIO_Pin(对应具体哪个中断线) :GPIO_PIN_0 ~ GPIO_PIN_15
  • 7.2返回值

  • 无  
  • 7.3回调函数被上方的 HAL_GPIO_EXTI_IRQHandler()函数回调

    //回调函数
    
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
    
    
  • 输入参数——GPIO_Pin(对应具体哪个中断线) :GPIO_PIN_0 ~ GPIO_PIN_15
  • 返回值:无
  • 二.stm32f1xx_hal_gpio_ex.c

    1.配置哪个IO用于事件输出——HAL_GPIOEx_ConfigEventout()

    //配置哪个IO用于事件输出
    
    void HAL_GPIOEx_ConfigEventout(uint32_t GPIO_PortSource, uint32_t GPIO_PinSource);
    
    

    1.1输入参数(2个)

  • GPIO_PortSource(使用哪组IO端口) :
  •         (1)AFIO_EVENTOUT_PORT_A

            (2)AFIO_EVENTOUT_PORT_B

            (3)AFIO_EVENTOUT_PORT_C

            (4)AFIO_EVENTOUT_PORT_D

    //GPIO_PortSource(使用哪组IO端口)
    
    AFIO_EVENTOUT_PORT_A
    
    AFIO_EVENTOUT_PORT_B
    
    AFIO_EVENTOUT_PORT_C
        
    AFIO_EVENTOUT_PORT_D
    
    
  • GPIO_PinSource :AFIO_EVENTOUT_PIN_0 ~ AFIO_EVENTOUT_PIN_15
  • 1.2返回值

  • 1.3关联寄存器

  • 寄存器 AFIO_EVCR 位6:4 PORT[2:0] 选择用于输出的端口
  • 寄存器 AFIO_EVCR 位位3:0 PIN[3:0] 选择用于输出的引脚
  • 2.使能 HAL_GPIOEx_ConfigEventout()配置好的事件输出

    //使能 HAL_GPIOEx_ConfigEventout 配置好的事件输出
    
    void HAL_GPIOEx_EnableEventout(void);
    
    

    2.1输入参数

  • 2.2返回值

  • 2.3关联寄存器

  • 寄存器 AFIO_EVCR 位7 EVOE :置位 允许事件输出
  • 3.关闭 HAL_GPIOEx_ConfigEventout()配置好的事件输出

    //关闭 HAL_GPIOEx_ConfigEventout 配置好的事件输出
    
    void HAL_GPIOEx_DisableEventout(void);
    
    

    3.1输入参数

  • 3.2返回值

  • 3.3关联寄存器

  • 寄存器 AFIO_EVCR 位7 EVOE :清除不允许事件输出
  • 结束语

            以上就是对STM32-HAL库-GPIO-API函数的一个总结

    作者:加油1234

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32 HAL库GPIO API函数详解

    发表回复