HAL库开发——GPIO输入输出

一、预备知识

上拉/下拉输入:如果你希望你的引脚平时处于高电平用于检测低电平,你就使用 Pull-up。如果你希望你的引脚平时处于低电平用于检测高电平,你就使用 Pull-down。

推挽输出:P-MOS和N-MOS均导通,1为高电平,0为低电平,为强驱动输出模式

开漏输出,P-MOS关闭,N-MOS导通,1为高阻态(相当于断开),0为低电平,只有低电平有驱动能力,可以作为通信协议的驱动方式,也可配合上拉模式输出电平。开漏可以用来连接不同电平的器件,匹配电平(VDD)用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平。用在电平不匹配的场合,如需要输出5V 的高电平,就需要在外部一个上拉电阻,电源为 5V,GPIO 设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出 5V 电平

注:相对于开漏,推挽更加常用。

复用输出直接由片上外设控制输出而不由寄存器控制,如PWM输出

二、CubeMX参数配置

GPIO output level(输出模式时初始化后的电平)

只有当引脚设置为“GPIO output”时才需要设置

High:GPIO输出初始化为高电平  Low:GPIO输出初始化为低电平

GPIO MODE

Output Push Pull:推挽输出,能输出高低电平,且高低电平都有驱动能力。

Output Open Drain:开漏输出,只能输出低电平,需要借助外部上拉电阻才能输出高电平。

Open Drain模式下逻辑0输出低电平(GND),逻辑1输出为悬空或所外接的电源电压值。

Alternate Function Push Pull:复用推挽输出。

Analog mode:模拟输入,ADC采样信号输入引脚的配置模式。

Input mode:输入模式,配合No pull-up/pull-down可形成GPIO_Mpde_IN_FLOATING、GPIO_Mode_IPD、GPIO_Mode_IPU等不同工作模式

GPIO Pull-up/Pul-down(当无外部输入输出时默认的电平)

No pull-up/pull-down:无内部上拉或下拉

Pull-up:内部上拉

Pull-down:内部下拉

Maximum output speed

Low:低速,对应标准库函数中的“GPIO_Speed_2MHz”

Medium:中速,对应标准库函数中的“GPIO_Speed_10MHz”

High:高速,对应标准库函数中的“GPIO_Speed_50MHz”
 

三、关于GPIO的函数

1、HAL_GPIO_Init

void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)

这个函数主要用来初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。

2、HAL_GPIO_DeInit

void HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin)

这个函数的主要功能是将我们在HAL_GPIO_Init函数初始化之后的引脚恢复成默认的状态,即各个寄存器复位时的值。

3、HAL_GPIO_ReadPin

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

这个函数主要功能是读取我们想要知道的引脚的电平状态、函数返回值为0或1。

4、HAL_GPIO_WritePin

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

这个函数主要功能是给某个GPIO0或1。

5、HAL_GPIO_TogglePin

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

这个函数用来翻转某个引脚的电平状态。

6、HAL_GPIO_LockPin

HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

这个函数的功能是锁住用户设置的引脚所对应的寄存器某些位,一旦锁住后,就不能再修改,只有复位后才可以重新配置。

7、HAL_GPIO_EXTI_IRQHandler

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)

这个函数是中断处理函数,可以理解为中断函数具体要响应的动作。

参数说明:GPIOx:GPIO端口号,例如 GPIOA、GPIOB、GPIOC 等

GPIO_Pin:GPIO引脚号,可以是单独的引脚号,例如 GPIO_PIN_0,也可以是多个引脚的按位或组合,例如 GPIO_PIN_0 | GPIO_PIN_1

PinState:引脚状态,如GPIO_PIN_RESET、GPIO_PIN_SET。GPIO_PIN_RESET:引脚为低电平,GPIO_PIN_SET:引脚为高电平。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值