STM32CubeMX应用笔记3 HAL库GPIO相关库函数

在使用中,除了在STM32CubeMX中配置之外,还需要自己在代码中做一些配置,学习并理解HAL库,也是必须掌握的。

本文介绍常用的和GPIO操作相关的库函数。

新建好项目,并在MDK中打开代码文件,找到stm32f1xx_hal_gpio.h,GPIO操作相关库函数在这个文件中可以看到。

打开stm32f1xx_hal_gpio.h 后, 发现一共定义有8个函数:

/* Initialization and de-initialization functions *****************************/
void  HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);
void  HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);

/* IO operation functions *****************************************************/
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);
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

分别说明如下:

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

功能: GPIO初始化

实例:HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

void  HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);

功能:使引脚恢复成默认的状态,即各个寄存器复位时的值

实例:HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9);

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

功能:读取引脚的电平状态、函数返回值为0或1

实例:HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9);

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

功能:对应引脚写0或1

实例:HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,0); 

void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

功能:对应引脚电平翻转

实例:HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_9);    

HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

功能:锁住引脚电平,比如说一个管脚的当前状态是1,当这个管脚电平变化时保持锁定时的值。

实例:HAL_GPIO_LockPin(GPIOA, GPIO_PIN_9); 

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

功能:  外部中断服务函数,清除中断标志位

实例:HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

功能:  中断回调函数,中断函数具体要响应的动作。

实例:HAL_GPIO_EXTI_Callback(GPIO_PIN_6); 

函数中用到的 GPIO_InitTypeDef 结构体定义说明:

typedef struct
{
  uint32_t Pin;      // 选择引脚
  uint32_t Mode;     // 设置引脚模式
  uint32_t Pull;     // 引脚是否上拉或下拉
  uint32_t Speed;    // 设置引脚速度
} GPIO_InitTypeDef;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值