当前位置: 首页 > news >正文

STM32HAL 快速入门(一):点灯前的准备 —— 从软件安装到硬件原理

前言

大家好,这里是 Hello_Embed。嵌入式开发的 “Hello World” 是点灯 —— 通过控制单片机引脚的高低电平,让 LED 亮灭。要实现这个功能,前期准备必不可少:从软件安装到硬件原理理解,每一步都很关键。本文就来详细说说点灯前的准备工作,为后续实战打下基础。

一、准备工作:软件与资料

首先需要安装必要的开发工具,具体包括:

  • Keil5 ARM:用于编写和编译 STM32 程序的 IDE;
  • STM32CubeMX:图形化配置工具,可快速生成初始化代码;
  • ST-Link 驱动:用于将程序通过 ST-Link 下载到开发板。
    相关安装教程和资料,在 B 站的韦东山江协科技的视频中都有详细讲解。笔者使用的硬件是江协科技视频配套的开发板,虽然与韦东山 “HAL 快速入门与项目实战” 课程中使用的瑞士军刀开发板不同,但核心芯片(STM32F103C8T6)是一致的,不影响学习。
二、原理图:看懂 LED 与引脚的连接

要控制 LED,首先得通过原理图找到它与单片机引脚的连接关系。

完整原理图与 LED 部分解析

附开发板完整原理图如下:
请添加图片描述
我们重点看 LED 的连接:
请添加图片描述
从局部原理图可知:

  • LED 的左端接高电平(VCC),右端串联限流电阻后,标注为 “PC13”;
  • “PC13” 表示该端连接到 STM32 芯片的PC13 引脚(P 代表端口,C 是端口号,13 是引脚号)。
LED 亮灭的原理

根据连接关系,LED 的亮灭由 PC13 引脚的电平决定:

  • 当 PC13 输出高电平(3.3V) 时,LED 两端电压差为 0(VCC 与 PC13 都是高电平),LED 不亮;
  • 当 PC13 输出低电平(0V) 时,LED 两端产生电压差(VCC 到 0V),电流流过 LED,LED 点亮。
三、芯片引脚与命名:认识 STM32F103C8T6

要控制引脚,得先了解芯片的引脚分布和命名规则。

引脚与核心功能

STM32F103C8T6 芯片有 48 个引脚,引脚名如 “PB1、PB2” 等:
请添加图片描述
其中:

  • “P” 表示通用引脚,“B” 是端口组(类似 “端口 C”“端口 A”),“1”“2” 是组内引脚编号;
  • 不同引脚有不同功能,可通过芯片手册查询(如 “VDDA” 接高电平,“VSSA” 接地。
    请添加图片描述
    这款芯片有48个引脚,有了引脚编号与引脚名我们就能根据芯片手册查找其具体作用。
型号命名规则(C8T6)
  • C:表示 48 引脚(其他如 T-36 引脚、R-64 引脚、V-100 引脚);
  • 8:表示 Flash 存储空间为 64KB(B 代表 128KB);
  • T:表示封装类型为 LQFP;
  • 6:表示工作温度范围为 - 40~85℃。
四、单片机工作机理:控制引脚的底层逻辑

单片机要控制引脚(如 PC13),需要经过几个关键步骤,这与它的内部结构有关。

单片机的核心组成

STM32 集成了 CPU、RAM、Flash(存储程序)、GPIO(通用输入输出)、USB 控制器等模块,其中 GPIO 是控制引脚的核心。

控制引脚的步骤(以点灯为例)
  1. 使能 GPIO 模块:单片机默认关闭未使用的模块以节能,需先通过寄存器使能 GPIO 模块(如端口 C 的时钟);
  2. 引脚功能选择(多路选择):STM32 引脚可复用(如既接 GPIO,也可接 IIC、USB 等),需配置为 GPIO 功能;
  3. 配置 GPIO 方向:设置为输出模式(因为要控制 LED 亮灭,需要输出高低电平);
  4. 输出电平:通过寄存器设置 PC13 为低电平(点亮 LED)或高电平(熄灭 LED)。
/O 口电路图(辅助理解)

STM32 的 I/O 口内部电路体现了上述步骤:
请添加图片描述

  • 引脚信号可作为输入(连接模拟输入、TTL 模块等)或输出(GPIO 输出、其他功能输出);
  • 配置寄存器相当于控制电路中的开关,决定引脚的功能和方向。
结尾

本文梳理了点灯前的准备工作:安装必要软件(参考韦东山、江协科技的资料)、看懂 LED 与 PC13 引脚的连接、了解芯片命名和引脚功能,以及控制引脚的底层步骤。这些知识是后续编写代码的基础。
下一篇笔记,Hello_Embed 将带大家用 HAL 库实际编写点灯程序,记得提前安装好软件和驱动哦~

http://www.lryc.cn/news/612953.html

相关文章:

  • 云手机存在的意义是什么?
  • 数字取证:可以恢复手机上被覆盖的数据吗?
  • 【macOS操作系统部署开源DeepSeek大模型,搭建Agent平台,构建私有化RAG知识库完整流程】
  • 如何提高云手机中数据信息的安全性?
  • Git Status 命令深度指南:洞悉仓库状态的核心艺术
  • Flutter开发 Slider组件(如音量控制)
  • C语言strncmp函数详解:安全比较字符串的实用工具
  • 使用Cloud Document Converter将飞书文档导出为markdown
  • Android渲染/合成底层原理详解
  • MySQL GROUP BY 语句详细说明
  • 《算法导论》第 9 章 - 中位数和顺序统计量
  • NAS技术在县级融媒体中心的架构设计与安全运维浅析
  • 医疗AI中GPU部署的“非对等全节点架构“方案分析(下)
  • MHA架构实战
  • 【R语言】 高清美观的 MaxEnt 刀切图(Jackknife)绘制——提升论文质量
  • Docker离线安装MinIO及数据迁移
  • 【R语言】重新绘制高清MaxEnt的单因素响应曲线图像
  • 把 apipost 的 md 文档转化成 json数据
  • 【论文阅读】基于元模型的体系知识图谱构建
  • 遍历节点设备属性
  • mac中多版本JDK配置和切换
  • 机器学习算法篇(四)决策树算法
  • Qwen-Image开源模型实战
  • 使用萤石云播放视频及主题模版配置
  • VFTO与局部放电-高压设备绝缘系统的双重挑战与防护策略
  • Keil MDK-ARM V5.42a 完整安装教程
  • rk3588s vscode索引失败的问题
  • 12-netty基础-手写rpc-编解码-04
  • web前端结合Microsoft Office Online 在线预览,vue实现(PPT、Word、Excel、PDF等)
  • 表单元素与美化技巧:打造用户友好的交互体验