STM32超详细HAL库常用的GPIO函数讲解

1.HAL_GPIO_Init

这个函数主要用来初始化我们需要用到的引脚,设置其工作频率、工作模式、上下拉等参数。如果使用CubeMX配置工程,所有参数在Cube中调配,函数自动在工程中生成,无需要手动初始化。

void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)
例: HAL_GPIO_Init(GPIOB,&GPIO_InitStruct)

类似于标准库,如下自设参数

GPIO_InitTypeDef  GPIO_InitStruct;            //结构体命名为GPIO_InitStruct
	
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);  //红色灯使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);  //绿色灯使能

//初始化设置参数	
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;                  
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	
GPIO_Init(GPIOE,&GPIO_InitStruct);   

2.HAL_GPIO_DeInit

HAL_GPIO_Init能够实现对GPIO的初始化,那么HAL_GPIO_DeInit就是与其相反的操作,能够将GPIO口恢复至默认状态,即各个寄存器复位时的值

void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
例:HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9);

3.HAL_GPIO_ReadPin

读取我们想要知道的引脚的电平状态、函数返回值类型为GPIO_PinState  =  0或1。

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
例:pin_State = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9);

 4.HAL_GPIO_WritePin

给某个引脚写0或1,GPIO_PIN_RESET 也可写成0;GPIO_PIN_RSET 也可写成1

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
例:HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9,GPIO_PIN_RESET)

5.HAL_GPIO_TogglePin

翻转某个引脚的电平状态

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
例:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9);

6.HAL_GPIO_EXTI_IRQHandler

这个函数是外部中断服务函数,用来响应外部中断的触发,函数实体里面有两个功能,1是清除中断标记位,2是调用下面要介绍的回调函数。如果使用CUbeMX生产,无需自己手写,直需要在main.c中重新定义相应的回调函数即可

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
例:HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);//配置好CubeMX后,自动生产

7.HAL_GPIO_EXTI_Callback

中断回调函数,可以理解为中断函数具体要响应的动作。

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

如按键中断控制LED灯

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值