网站首页 网站地图
网站首页 > 电商创业 > gpio_setbits

gpio_setbits

时间:2026-03-20 18:12:49

`GPIO_SetBits`函数用于将指定的GPIO引脚设置为高电平。以下是该函数的基本用法和原理:

基本用法

```c

void GPIO_SetBits(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)

```

`GPIOx` 是一个指向 `GPIO_TypeDef` 结构体的指针,代表要操作的GPIO端口。

`GPIO_Pin` 是一个 `uint16_t` 类型的值,表示要设置的GPIO引脚编号。

参数检查

函数内部使用 `assert_param` 宏进行参数有效性检查,确保 `GPIOx` 是有效的端口,并且 `GPIO_Pin` 不是0。

操作原理

`GPIO_SetBits` 函数通过将 `GPIOx` 的 `BSRR`(Bit Set Register)寄存器的相应位设置为1,来将选定的GPIO引脚置为高电平。`BSRR` 寄存器用于控制GPIO端口位。

示例代码

```c

/* 定义GPIO初始化结构体变量

GPIO_InitTypeDef GPIO_InitStruct;

/* GPIO初始化操作

GPIO_InitStruct.Pin = GPIO_PIN_0;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

/* 初始化GPIO引脚

GPIO_Init(GPIOA, &GPIO_InitStruct);

/* 将GPIOA的引脚0和引脚1设置为高电平

GPIO_SetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);

```

注意事项

在使用 `GPIO_SetBits` 函数之前,需要先通过 `GPIO_Init` 函数对GPIO引脚进行初始化,设置引脚的模式、速度和上下拉电阻等参数。

可以同时对多个引脚进行设置,只需在 `GPIO_Pin` 参数中使用位或操作(例如 `GPIO_Pin_0 | GPIO_Pin_1`)即可。

如果需要读取或设置其他GPIO端口位,可以使用 `GPIO_ResetBits`、`GPIO_WriteBit` 和 `GPIO_Write` 等函数。