stm32g431rbt6点亮一个LED灯
时间: 2025-06-02 16:51:11 浏览: 19
### STM32G431RBT6 点亮 LED 的实现
#### 1. 硬件连接说明
STM32G431 开发板上的 LD2 和 PA5 引脚相连。为了点亮 LED,需要设置 PA5 输出为高电平[^1]。
#### 2. 初始化 GPIO 配置
在使用 HAL 库的情况下,GPIO 的初始化可以通过 `MX_GPIO_Init()` 函数完成。以下是具体的配置过程:
- 将 PA5 设置为推挽输出模式。
- 启用相应的时钟外设(`__HAL_RCC_GPIOA_CLK_ENABLE()`)。
```c
// 初始化 GPIO
void MX_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_LOW; // 低速模式即可
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
```
#### 3. 控制 LED 状态
通过调用 `HAL_GPIO_WritePin()` 可以控制 PA5 的状态,从而点亮或熄灭 LED。
```c
// 点亮 LED (PA5 高电平)
void LED_ON(void)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); // 设置 PA5 为高电平
}
// 关闭 LED (PA5 低电平)
void LED_OFF(void)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 设置 PA5 为低电平
}
```
#### 4. 主函数逻辑
在主循环中可以交替调用 `LED_ON()` 和 `LED_OFF()` 来测试 LED 是否正常工作。
```c
int main(void)
{
HAL_Init(); // 初始化 HAL 库
MX_GPIO_Init(); // 初始化 GPIO
while (1)
{
LED_ON(); // 点亮 LED
HAL_Delay(500); // 延迟 500ms
LED_OFF(); // 熄灭 LED
HAL_Delay(500); // 延迟 500ms
}
}
```
---
### 补充说明
如果需要进一步扩展功能,比如检测用户按键的状态并控制 LED,则可以在中断服务程序或者轮询方式下读取 PC13 的输入状态,并据此调整 PA5 的输出[^1]。
```c
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_SET) // 如果按键被按下
{
LED_ON();
}
else
{
LED_OFF();
}
```
---
阅读全文
相关推荐


















