嵌入式学习只炼气期第三层——STM32单片机入门常识
STM32学习笔记
STM32 单片机
STM32 是由 ST 公司生产的基于 ARM Cortex-M/A 内核的32位系列的微控制器
ST:意法半导体(STmicroelctronis,简称 ST)集团,是由意大利的SGS 微电子公司和法 Thomson半导体公司合并而成,ST 公司生产的 MCU 系列有 STM8 和 STM32
ARM 内核
ARM 公司提供 ARM 处理器架构(采用 RISC-精简指令集)但不设计和生产芯片,主要用于移动端和嵌入式领域(比如手机、平板,穿戴设备)的芯片;而桌面端和服务器芯片主要使用 X86 架构(采用 CISC -复杂指令集),比如 AMD 和 Intel 的芯片都是 X86 架构
ARM 处理器内核命名史:
从 ARM1 到 ARM11,之后放弃数字命名,使用 Corex 来命令处理器产品
Cortex-A (Application)系列内核:主打高性能手机,平板,智能电视等
Cortex-R (Real-Time)系列内核:主打实时汽车,工业控制,医疗设备
Cortex-M (Microcontroller)系列内核:主打嵌入式 传感器,智能家居等
每一代产品都会有对应的系列内核,每一个系列内核都有很多版本,比如 Cortex-M3、Cortex-M4 等

STM32 单片机系列命名规则


51 单片机和 32 位单片机的区别

最小系统
最小系统板实物图

最小系统板原理图
立创·地阔星STM32F103C8T6开发板 - 立创开源硬件平台


引脚定义

芯片系统架构

开发方式
- 基于寄存器开发
优点:
代码执行效率高、对硬件理解深入、更换其他芯片上手快
缺点:
开发效率低、代码移植不方便 - 基于标准库函数开发
优点:
相比寄存器开发效率提高、相比寄存器开发难度降低、相比寄存器开发移植容易
缺点:
屏蔽一些硬件信息,不利于新手学习知识
官方己经停止对标准库的更新,新的芯片己经不提供标准库 - 基于 HAL 库函数开发
优点:
ST 主推,支持力度大
开发难度相比前面两种大大降低移植极其容易
缺点:
屏蔽几乎所有硬件信息,不利于新手学习知识
只学习 HAL,学完之后基础知识不够牢固
当迁移到其他 MCU 设备时,一切都要重新学习
开发工具和调试接口
Keil MDK-ARM 或者 IAR(老牌开发工具,应用也最广泛)
Keil 是 ARM 的子公司对 ARM 内核的芯片适配力度是最好的
STM32CubeIDE 和 STM32CubeMX
STM32CubeIDE 集成了代码调试和 STM32CubeMX 的功能
STM32CubeMX 采用图形化配置和 HAL 库开发
常用调试下载仿真器

主流调试接口协议
- JTAG(Joint Test Action Group)
概述:IEEE 1149.1 标准定义的调试接口,最初用于芯片测试,后扩展为调试功能。
物理接口:通常包含 TMS(测试模式选择)、TCK(测试时钟)、TDI(测试数据输入)、TDO(测试数据输出)和 TRST(测试复位)5 根信号线。
特点:
支持多芯片级联(通过 TAP 控制器)。
调试速度较慢(通常为 1-5MHz)。
占用引脚较多,适合早期 MCU(如 ARM7/ARM9)。
应用场景:早期 ARM 架构 MCU、FPGA 测试和调试。 - SWD(Serial Wire Debug)
概述:ARM 公司推出的串行调试接口,作为 JTAG 的替代方案。
物理接口:仅需 SWDIO(双向数据)和 SWCLK(时钟)两根信号线,可选 RESET 引脚。
特点:
引脚占用少,适合小型封装 MCU(如 QFN、WLCSP)。
调试速度快(最高可达 20MHz 以上)。
与 JTAG 兼容(可通过 SWDIO 复用 JTAG 信号)。
应用场景:Cortex-M 系列 MCU(如 STM32、Nordic nRF)、低功耗设备。
使用寄存器和标准库开发的前期配置
- 下载 keil-MDK,并安装对应芯片软件支持包,在 Keil 软件中下载或者在 ARM keil官网Arm Keil搜索对应芯片的通用微控制器软件接口标准 (CMSIS) 包(比如 STM32F1xx_DFP),STM32F1xx_DFP 软件包是 Keil MDK-ARM 开发工具链中用于 STM32F1 系列微控制器的设备族包(Device Family Pack),主要用于支持在 Keil MDK-ARM 开发环境中进行 STM32F1 系列芯片的开发。

创建项目之前选择芯片对应支持包

- 驱动安装
安装 ST-Link驱动,在 Keil 中配置 ST-Link 调试器,并在 settings 中进行必要设置
(在 Keil 的安装目录下也可以找到 ST-Link 的安装包)




调试器(如ST-Link/J-Link)完成代码烧录后,默认会将内核置于 暂停状态(Halt),而非自动运行。目的是让开发者检查寄存器初值或设置断点。所以勾选 Reset and Run,不需要每次在烧录代码以后再按下复位键让程序运行


- 安装CH340 串口驱动
- keil 编译器配置
Arm Compiler V6 不支持老版本的芯片内核文件(core_cm.h 和 core_cm.c),需要将编译器版本更改为Arm Compiler V5
将 AC5 文件包放到 ARM 文件夹后,在 KEIL 中如下图配置


- ST 官方烧录工具:
STM32CubeProgrammer(新款)——支持多种接口,功能强大逐步代替ST-LINK Utility
ST-LINK Utility (老款)——只支持 STLink,功能简单便捷

- STM32 标准外设库下载路径,并在 Keil 中配置标准外设库


- STM32 开发工具集合

项目配置
在 Keil 中可以配置项目逻辑组织,但这并非实际文件夹逻辑

寄存器开发方式工程架构文件介绍

每次创建项目都要在 include 中包含项目的路径

更多推荐



所有评论(0)