HAL_GPIO_WritePin(_pin, _value == 0? GPIO_PIN_RESET:GPIO_PIN_SET
时间: 2025-01-20 09:07:55 浏览: 27
如何使用 HAL_GPIO_WritePin
函数设置或复位引脚
函数原型
函数 HAL_GPIO_WritePin
的声明如下:
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
此函数用于写入指定的 GPIO 引脚状态,可以将其设为高电平 (SET) 或低电平 (RESET)[^1]。
参数说明
- GPIOx: 表示要操作的端口,例如 GPIOA、GPIOB 等。
- GPIO_Pin: 要控制的具体引脚编号,比如 GPIO_PIN_0 到 GPIO_PIN_15。
- PinState: 设定目标引脚的状态,取值为
GPIO_PIN_SET
或者GPIO_PIN_RESET
。前者表示将引脚置为逻辑高电平;后者则代表使引脚处于逻辑低电平[^2]。
实际应用案例
下面给出一段简单的代码片段来展示如何利用该函数实现 LED 控制功能:
假设有一个连接到 PC4 上的LED灯,在程序里可以通过调用 HAL_GPIO_WritePin()
来点亮/熄灭它:
// 定义使用的 IO 口
#define LED_PORT GPIOC
#define LED_PIN GPIO_PIN_4
int main(void){
/* 初始化系统 */
HAL_Init();
// 配置并初始化PC4作为输出模式
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOC_CLK_ENABLE(); // 开启时钟
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_PORT,&GPIO_InitStruct);
while(1){
// 将PC4拉高,即点亮LED
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
// 延迟一段时间...
// 关闭LED
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
// 继续延迟...
}
}
这段代码展示了完整的流程:先配置好相应的外设资源,再通过循环不断改变引脚电平从而达到闪烁效果.
相关推荐



















