STM32 HAL库 读取输入引脚电平
时间: 2025-03-21 09:10:02 浏览: 67
### STM32 HAL库读取输入引脚电平的方法
通过STM32 HAL库,可以方便地实现对GPIO引脚状态的读取操作。具体来说,`HAL_GPIO_ReadPin()` 函数用于获取指定GPIO引脚的状态[^4]。
以下是完整的代码示例:
```c
#include "stm32f4xx_hal.h"
// 定义使用的 GPIO 和 Pin
#define INPUT_PORT GPIOA
#define INPUT_PIN GPIO_PIN_0
uint8_t pinState;
int main(void)
{
// 初始化HAL库
HAL_Init();
// 配置系统时钟 (根据实际项目需求调整)
SystemClock_Config();
// 配置GPIO端口为输入模式
__HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 设置GPIOA的PIN0为输入模式
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不带上下拉电阻
HAL_GPIO_Init(INPUT_PORT, &GPIO_InitStruct);
while (1)
{
// 读取GPIOA PIN0的电平状态
pinState = HAL_GPIO_ReadPin(INPUT_PORT, INPUT_PIN);
if(pinState == GPIO_PIN_SET){
// 如果引脚为高电平
// 执行某些逻辑...
}
else{
// 如果引脚为低电平
// 执行其他逻辑...
}
// 延迟一段时间再检测
HAL_Delay(100);
}
}
```
上述代码实现了以下功能:
- 使用 `__HAL_RCC_GPIOA_CLK_ENABLE()` 启用了GPIOA外设时钟。
- 调用 `HAL_GPIO_Init()` 将GPIOA的第0号引脚配置为输入模式,并设置无上拉/下拉电阻。
- 利用 `HAL_GPIO_ReadPin()` 实现了对GPIOA-PIN0电平的实时监测并存储至变量 `pinState` 中。
#### 关键函数说明
- **`HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)`**:
此函数返回值为 `GPIO_PIN_RESET` 或 `GPIO_PIN_SET`,分别代表引脚处于低电平或高电平状态。
---
###
阅读全文
相关推荐




















