GPIO引脚操作函数
GPIO_ReadInputDataBit
GPIO_ReadInputDataBit 是 STM32 标准库中用于读取指定 GPIO 引脚的电平状态(高电平或低电平)。该函数适用于配置为输入模式的 GPIO 引脚。
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
参数
-
GPIOx
-
类型:
GPIO_TypeDef* -
说明:GPIO 端口(如
GPIOA,GPIOB,GPIOC等)。 -
示例:
GPIOA表示 GPIO 端口 A。
-
-
GPIO_Pin
-
类型:
uint16_t -
说明:目标引脚编号(如
GPIO_Pin_0,GPIO_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 为低电平
}
}
}
注意事项
-
输入模式
该函数仅适用于配置为输入模式的 GPIO 引脚(如浮空输入、上拉输入、下拉输入)。如果引脚配置为输出模式,读取的值可能无效。 -
时钟使能
在使用 GPIO 之前,必须通过RCC_APB2PeriphClockCmd()使能对应 GPIO 端口的时钟。示例:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); -
浮空输入
如果引脚配置为浮空输入模式(GPIO_Mode_IN_FLOATING),且外部没有上拉或下拉电阻,引脚电平可能不稳定。 -
上拉/下拉输入
如果需要稳定的电平状态,可以将引脚配置为上拉输入(GPIO_Mode_IPU)或下拉输入(GPIO_Mode_IPD)。 -
返回值类型
返回值是uint8_t类型,但实际值只能是Bit_SET或Bit_RESET,分别表示高电平和低电平。
GPIO_ReadInputData
GPIO_ReadInputData 用于读取指定 GPIO 端口的所有引脚的电平状态(16 位值,每位对应一个引脚)。该函数适用于配置为输入模式的 GPIO 引脚。
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
参数
-
GPIOx
-
类型:
-

最低0.47元/天 解锁文章
2647

被折叠的 条评论
为什么被折叠?



