void HAL_GPIO_WritePin (GPIO_TypeDef PIOx, uint16_t GPIO_ Pin, GPIO_PinState PinState)使用实例
时间: 2025-05-19 20:23:09 浏览: 24
### HAL_GPIO_WritePin 函数的使用示例
`HAL_GPIO_WritePin()` 是 STM32 HAL 库中的一个重要函数,用于设置指定 GPIO 引脚的状态为高电平或低电平。该函数通常配合 `GPIO_InitTypeDef` 结构体一起使用,在初始化完成后通过调用此函数实现对引脚状态的操作。
以下是关于如何使用 `HAL_GPIO_WritePin()` 的具体说明以及一个完整的代码示例:
#### 1. 参数介绍
`HAL_GPIO_WritePin()` 接收三个参数:
- **GPIOx**: 表示要操作的 GPIO 端口(例如 GPIOA, GPIOB 等)。
- **Pin**: 要操作的具体引脚号(例如 GPIO_PIN_5),可以通过位掩码组合多个引脚。
- **PinState**: 设置目标引脚的状态,可以是 `GPIO_PIN_RESET` 或 `GPIO_PIN_SET`,分别表示低电平和高电平[^1]。
#### 2. 初始化配置
在使用 `HAL_GPIO_WritePin()` 前,需先完成 GPIO 引脚的相关初始化工作。这一步骤涉及定义并填充 `GPIO_InitTypeDef` 结构体变量,并调用 `HAL_GPIO_Init()` 完成实际硬件资源分配[^2]。
#### 3. 示例代码
下面是一个简单的 LED 控制程序,展示了如何利用 `HAL_GPIO_WritePin()` 实现 LED 的亮灭切换效果。
```c
#include "stm32f4xx_hal.h"
// 配置 GPIO 引脚结构体
void GPIO_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE(); // 启用 GPIOA 时钟
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 配置 PA5 作为推挽输出模式
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不带上下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 输出速度为高速
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
int main(void)
{
HAL_Init(); // 初始化 HAL 库
GPIO_Init(); // 初始化 GPIO
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 将 PA5 设为高电平
HAL_Delay(500); // 延迟 500ms
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 将 PA5 设为低电平
HAL_Delay(500); // 延迟 500ms
}
}
```
上述代码实现了如下功能:
- 利用 `__HAL_RCC_GPIOA_CLK_ENABLE()` 开启 GPIOA 外设时钟。
- 使用 `GPIO_InitTypeDef` 配置 PA5 引脚为推挽输出模式、不带上下拉电阻且输出速度为高速。
- 在主循环中交替调用 `HAL_GPIO_WritePin()` 和 `HAL_Delay()` 来控制 LED 的亮灭间隔时间[^2]。
---
###
阅读全文
相关推荐



















