STM32F103 系统定时器控制LED灯

STM32F103C8T6 最小系统开发板使用 HAL 库通过 SysTick 定时器控制 PC13 LED

1. 项目概述

在本项目中,我们将使用 STM32F103C8T6 最小系统开发板,通过 HAL(Hardware Abstraction Layer)库 实现 使用 SysTick 定时器控制 PC13 LED 闪烁

2. 硬件设计

1. 硬件需求

  • STM32F103C8T6 最小系统开发板
  • STLink-V2 下载器(用于烧录程序)
  • 杜邦线
  • LED(若开发板无板载 LED)
  • 220Ω 电阻(若使用外部 LED)

2. 硬件连接

  1. PC13 → LED 正极
  2. LED 负极 → 220Ω 电阻 → GND

3. 软件设计

1. STM32 HAL 库简介

HAL 库是 ST 官方提供的 硬件抽象库,封装了底层寄存器操作,使开发更加简单。

2. 工程创建步骤(基于 STM32CubeMX)

  1. 打开 STM32CubeMX,创建新工程,选择 STM32F103C8T6
  2. 配置 PC13 作为 GPIO 输出模式
    • 找到 "PC13",设置为 GPIO_Output
  3. 配置 SysTick 定时器
    • SysTick 默认以 1ms 为单位计时。
    • 在 HAL 库中,我们可以使用 HAL_Delay()HAL_GetTick() 进行时间管理。
  4. 配置时钟(默认 72MHz,无需修改)。
  5. 生成代码,选择 IDE 为 STM32CubeIDE 或 Keil

4. 代码实现

1. main.c 代码

#include "main.h"

void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{
    HAL_Init();             //1. 初始化 HAL 库
    SystemClock_Config();   //2. 配置系统时钟
    MX_GPIO_Init();         //3. 初始化 GPIO

    while (1)
    {
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);     // 切换 LED 状态
        HAL_Delay(500);                             // 延时 500ms
    }
}

/**
  * @brief GPIO 初始化
  */
static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOC_CLK_ENABLE();  // 使能 GPIOC 时钟
    
    // 配置 PC13 为推挽输出
    GPIO_InitStruct.Pin = GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);               // 初始化 PC13

    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);  // 默认关闭 LED
}

2. 代码解析

  • HAL_Delay(500):利用 SysTick 定时器 实现 500ms 延时,控制 LED 闪烁。
  • HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13):切换 PC13 LED 状态,实现闪烁效果。

5. 烧录与测试

stlink

  1. 连接 STLink-V2
    • STLink-V2 SWDIO → STM32 SWDIO
    • STLink-V2 SWCLK → STM32 SWCLK
    • STLink-V2 GND → STM32 GND
    • STLink-V2 3.3V → STM32 3.3V
  2. 使用 STM32CubeProgrammer 或 Keil 进行烧录
  3. 烧录完成后,按下 RESET 运行程序

6. 总结

本教程介绍了 STM32F103C8T6 最小系统开发板 使用 SysTick 定时器控制 PC13 LED 闪烁 的详细过程,包括 硬件设计、软件配置、代码编写、烧录步骤,适用于 STM32 HAL 库 开发。希望能帮助你快速入门 STM32 的定时器应用!

posted @ 2025-02-07 14:59  jeikerxiao  阅读(193)  评论(0)    收藏  举报