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开发板 - 立创开源硬件平台

引脚定义

芯片系统架构

开发方式

  1. 基于寄存器开发
    优点:
    代码执行效率高、对硬件理解深入、更换其他芯片上手快
    缺点:
    开发效率低、代码移植不方便
  2. 基于标准库函数开发
    优点:
    相比寄存器开发效率提高、相比寄存器开发难度降低、相比寄存器开发移植容易
    缺点:
    屏蔽一些硬件信息,不利于新手学习知识
    官方己经停止对标准库的更新,新的芯片己经不提供标准库
  3. 基于 HAL 库函数开发

优点:
ST 主推,支持力度大
开发难度相比前面两种大大降低移植极其容易

缺点:
屏蔽几乎所有硬件信息,不利于新手学习知识
只学习 HAL,学完之后基础知识不够牢固
当迁移到其他 MCU 设备时,一切都要重新学习

开发工具和调试接口

Keil MDK-ARM 或者 IAR(老牌开发工具,应用也最广泛)

Keil 是 ARM 的子公司对 ARM 内核的芯片适配力度是最好的

STM32CubeIDE 和 STM32CubeMX

STM32CubeIDE 集成了代码调试和 STM32CubeMX 的功能

STM32CubeMX 采用图形化配置和 HAL 库开发

常用调试下载仿真器

主流调试接口协议

  1. JTAG(Joint Test Action Group)
    概述:IEEE 1149.1 标准定义的调试接口,最初用于芯片测试,后扩展为调试功能。
    物理接口:通常包含 TMS(测试模式选择)、TCK(测试时钟)、TDI(测试数据输入)、TDO(测试数据输出)和 TRST(测试复位)5 根信号线。
    特点:
    支持多芯片级联(通过 TAP 控制器)。
    调试速度较慢(通常为 1-5MHz)。
    占用引脚较多,适合早期 MCU(如 ARM7/ARM9)。
    应用场景:早期 ARM 架构 MCU、FPGA 测试和调试。
  2. SWD(Serial Wire Debug)
    概述:ARM 公司推出的串行调试接口,作为 JTAG 的替代方案。
    物理接口:仅需 SWDIO(双向数据)和 SWCLK(时钟)两根信号线,可选 RESET 引脚。
    特点:
    引脚占用少,适合小型封装 MCU(如 QFN、WLCSP)。
    调试速度快(最高可达 20MHz 以上)。
    与 JTAG 兼容(可通过 SWDIO 复用 JTAG 信号)。
    应用场景:Cortex-M 系列 MCU(如 STM32、Nordic nRF)、低功耗设备。

使用寄存器和标准库开发的前期配置

三、创建工程模板 | 立创开发板技术文档中心

  1. 下载 keil-MDK,并安装对应芯片软件支持包,在 Keil 软件中下载或者在 ARM keil官网Arm Keil搜索对应芯片的通用微控制器软件接口标准 (CMSIS) 包(比如 STM32F1xx_DFP),STM32F1xx_DFP 软件包是 Keil MDK-ARM 开发工具链中用于 STM32F1 系列微控制器的设备族包(Device Family Pack),主要用于支持在 Keil MDK-ARM 开发环境中进行 STM32F1 系列芯片的开发。

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

  1. 驱动安装

安装 ST-Link驱动,在 Keil 中配置 ST-Link 调试器,并在 settings 中进行必要设置

(在 Keil 的安装目录下也可以找到 ST-Link 的安装包)

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

  1. 安装CH340 串口驱动
  2. keil 编译器配置

Arm Compiler V6 不支持老版本的芯片内核文件(core_cm.h 和 core_cm.c),需要将编译器版本更改为Arm Compiler V5

将 AC5 文件包放到 ARM 文件夹后,在 KEIL 中如下图配置

  1. ST 官方烧录工具:

STM32CubeProgrammer(新款)——支持多种接口,功能强大逐步代替ST-LINK Utility

ST-LINK Utility (老款)——只支持 STLink,功能简单便捷

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

  1. STM32 开发工具集合

项目配置

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

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

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

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐