STM32学习笔记

· 学习笔记

STM32控制LED灯亮灭实验指南

一、硬件准备

硬件清单

电路连接

二、软件环境配置

工具安装

  1. STM32CubeMX:图形化配置工具(官网下载)
  2. Keil MDK/STM32CubeIDE:代码编写与调试工具
  3. 串口驱动:CH340驱动(确保电脑识别USB转TTL模块)

创建工程

  1. 打开STM32CubeMX,选择芯片型号(STM32F103C8)。
  2. 配置时钟源

    • RCC → High Speed Clock (HSE) 选择外部晶振(若开发板无外部晶振,使用内部时钟HSI)。
  3. 配置GPIO

    • 选择PA0引脚 → GPIO_Output。
    • 设置引脚模式:推挽输出(Push-Pull),无上拉下拉。
  4. 生成代码

    • Project → Generate Code → 选择IDE(Keil或CubeIDE)。

三、代码实现

主函数逻辑(main.c)

#include "main.h"

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

  while (1) {
    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);  // 翻转PA0电平
    HAL_Delay(500);             // 延时500ms
  }
}

GPIO初始化函数(自动生成)

void MX_GPIO_Init(void) {
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  __HAL_RCC_GPIOA_CLK_ENABLE();  // 使能GPIOA时钟

  // 配置PA0为输出模式
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  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);
}

四、代码烧录与验证

编译工程

烧录程序

现象观察

五、关键知识点解析

GPIO工作模式

HAL库函数

时钟配置

六、扩展实验

1. 按键控制LED

2. PWM调光

七、常见问题排查

LED不亮

程序无法烧录

延时不准

八、总结

通过点灯实验掌握STM32的GPIO配置与HAL库基础使用。后续可继续学习定时器、中断、串口通信等外设开发。