GPIO函数详解(二)

GPIO引脚操作函数

GPIO_ReadInputDataBit 

GPIO_ReadInputDataBit 是 STM32 标准库中用于读取指定 GPIO 引脚的电平状态(高电平或低电平)。该函数适用于配置为输入模式的 GPIO 引脚。

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

参数

  1. GPIOx

    • 类型:GPIO_TypeDef*

    • 说明:GPIO 端口(如 GPIOAGPIOBGPIOC 等)。

    • 示例:GPIOA 表示 GPIO 端口 A。

  2. GPIO_Pin

    • 类型:uint16_t

    • 说明:目标引脚编号(如 GPIO_Pin_0GPIO_Pin_1 等)。

    • 示例:GPIO_Pin_5 表示 GPIO 的第 5 个引脚。


返回值

  • 类型:uint8_t

  • 说明:返回引脚的电平状态,可能为以下值之一:

    • Bit_SET:引脚为高电平(1)。

    • Bit_RESET:引脚为低电平(0)。


示例

以下代码演示如何使用 GPIO_ReadInputDataBit 读取 GPIO 引脚的状态:

#include "stm32f10x.h"

int main(void) {
    // 1. 启用 GPIOB 时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    // 2. 配置 PB3 为浮空输入模式
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;  // 浮空输入
    GPIO_Init(GPIOB, &GPIO_InitStruct);

    while (1) {
        // 3. 读取 PB3 的电平状态
        uint8_t pinState = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3);

        if (pinState == Bit_SET) {
            // PB3 为高电平
        } else {
            // PB3 为低电平
        }
    }
}

注意事项

  1. 输入模式

    该函数仅适用于配置为输入模式的 GPIO 引脚(如浮空输入、上拉输入、下拉输入)。如果引脚配置为输出模式,读取的值可能无效。
  2. 时钟使能

    在使用 GPIO 之前,必须通过 RCC_APB2PeriphClockCmd() 使能对应 GPIO 端口的时钟。示例:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  3. 浮空输入

    如果引脚配置为浮空输入模式(GPIO_Mode_IN_FLOATING),且外部没有上拉或下拉电阻,引脚电平可能不稳定。
  4. 上拉/下拉输入

    如果需要稳定的电平状态,可以将引脚配置为上拉输入(GPIO_Mode_IPU)或下拉输入(GPIO_Mode_IPD)。
  5. 返回值类型

    返回值是 uint8_t 类型,但实际值只能是 Bit_SET 或 Bit_RESET,分别表示高电平和低电平。

GPIO_ReadInputData

GPIO_ReadInputData 用于读取指定 GPIO 端口的所有引脚的电平状态(16 位值,每位对应一个引脚)。该函数适用于配置为输入模式的 GPIO 引脚。

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

参数

  1. GPIOx

    • 类型:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值