【CUBEide】01 GPIO输入/输出

一、GPIO功能概述

1、八种工作模式

(1)输入浮空:作为GPIO输入引脚,不使用上拉或下拉电阻;

(2)输入上拉:作为输入引脚,使用内部上拉电阻,引脚外部无输入时读取的电平为高电平;

(3)输入下拉:输入引脚,使用内部下拉电阻,引脚外部无输入时读取的引脚输入电平为低电平

(4)模拟:作为GPIO模拟引脚,用于ADC输入引脚或DAC输出引脚;

(5)具有上拉或下拉的开漏输出:如果不使用上拉或下拉电阻,开漏输出1时引脚是高阻态,输出0时引脚是低电平,这种模式可以用于公用总线的信号。

(6)具有上拉或下拉的推挽输出:如果不使用上拉或下拉电阻,推挽输出1时引脚是高电平,输出0时引脚是低电平。若需要增强引脚输出驱动能力,就可以使用上拉,例如,需要GPIO输出高电平点亮LED;

(7)具有上拉或下拉的开复用推挽输出;

(8)具有上拉或下拉的开复用开漏输出

2、GPIO的HAL驱动程序

1、初始化函数HAL_GPIO_Init()

函数HAL_GPIO_Init()用于对一个端口的一个或多个相同功能的引脚进行初始化设置,包括输入/输出模式、上拉或下拉等。

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

2、设置引脚输出的函数HAL_GPIO_WritePin()

使用此函数向一个或多个引脚输出高电平或低电平。

例如:要使PF9和PF10输出低电平
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9|GPIO_PIN_10,GPIO_PIN_RESET);
若要输出高电平
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9|GPIO_PIN_10,GPIO_PIN_SET);

3、读取引脚输入的函数HAL_GPIO_ReadPin();

用于读取GPIO引脚电平状态的函数。

HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)

函数的返回值是枚举类型GPIO_PinState,GPIO_PIN_RESET表示输入为0(低电平),GPIO_PIN_SET表示输入为1(高电平)
 

/* 读取GPIOA的第0个引脚状态 */
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET)
        {
            /* 如果引脚为高电平,则点亮LED灯 */
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
        }
        else
        {
            /* 如果引脚为低电平,则熄灭LED灯 */
            HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
        }


4、翻转引脚输出的函数HAL_GPIO_TogglePin()

函数用于翻转引脚的输出状态,例如当前引脚输出为高电平,执行后引脚输出变为低电平。

HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_6);

3、GPIO使用示例

1、CubeMX配置

LED电路是由外接3.3V电源驱动的,当GPIO引脚输出为0时,LED点亮;输出为1时,LED熄灭;配置为推挽输出。

对于按键电路,外端接地,按键按下时,输入低电平,所以使用输入上拉。

RCC

SYS

时钟树

最后生成代码。

2、代码分享

通过百度网盘分享的文件:00.zip
链接:https://pan.baidu.com/s/1lNWt3g8CxxxR6kCn8aC9Cg
提取码:eeju

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值