HAL库stm32f103c8t6点灯
时间: 2025-05-11 11:21:11 浏览: 19
### STM32F103C8T6 使用 HAL 库实现 LED 点亮功能
为了在 STM32F103C8T6 上使用 HAL 库实现 LED 的点亮功能,可以通过以下方式完成:
#### 配置环境
首先,在 STM32CubeMX 中创建一个新的工程,并选择目标芯片 STM32F103C8T6。配置 GPIO 引脚作为输出模式来驱动外部 LED[^2]。
#### 主要代码结构
以下是完整的 `main.c` 文件内容,用于实现 LED 的点亮功能:
```c
#include "stm32f1xx_hal.h"
// 定义GPIO端口和引脚
#define LED_GPIO_Port GPIOA
#define LED_Pin GPIO_PIN_5
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
// 初始化HAL库
HAL_Init();
// 配置系统时钟
SystemClock_Config();
// 初始化GPIO
MX_GPIO_Init();
while (1)
{
// 点亮LED
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
HAL_Delay(500); // 延时500毫秒
// 熄灭LED
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
HAL_Delay(500); // 延时500毫秒
}
}
/**
* @brief GPIO初始化函数
*/
static void MX_GPIO_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 配置GPIOA的第5号引脚为推挽输出模式
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_GPIO_Port, &GPIO_InitStruct);
}
```
上述代码中,`HAL_GPIO_WritePin()` 函数被用来控制指定 GPIO 引脚的状态,其中 `GPIO_PIN_SET` 表示高电平(点亮),而 `GPIO_PIN_RESET` 则表示低电平(熄灭)[^1]。
#### 关键点说明
- **延时函数**:`HAL_Delay()` 是 HAL 库自带的一个阻塞型延时函数,单位为毫秒。它依赖于系统的滴答定时器(SysTick Timer)来计数时间间隔[^4]。
- **GPIO 初始化**:通过调用 `__HAL_RCC_GPIOA_CLK_ENABLE()` 来使能对应外设的时钟;接着利用 `GPIO_InitTypeDef` 结构体定义所需的参数并传递给 `HAL_GPIO_Init()` 进行实际硬件初始化操作。
---
阅读全文
相关推荐


















