嵌入式MCU——STM32的介绍和环境搭建

1. MCU 在行业中的位置

1.1 MCU 定义

MCU(Microcontroller Unit)又称单片微型计算机,是将 CPU(中央处理器)频率 / 规格缩减后,整合内存(memory)、计数器(Timer)、USB、A/D 转换、UART、PLC、DMA 等外围接口(部分型号甚至集成 LCD 驱动电路)的芯片级计算机,广泛应用于手机、PC 外围、遥控器、汽车电子、工业步进马达控制等场景。

1.2 MCU 能做什么?

MCU是一种集成了处理器、存储器、输入输出接口等多种功能于一体的芯片,在嵌入式系统中犹如“大脑”,负责整个系统的控制和数据处理。例如,在智能手环这个嵌入式系统中,MCU会接收加速度计、心率传感器等的数据,并进行分析处理,然后控制显示屏显示相应的信息。

接下来会以stm32芯片展开讲解。
STM32 终端产品覆盖多领域,包括工业控制类、医疗器械、智能家居、消费电子、军工、汽车电子、农林植保等,可满足不同场景下的智能控制需求。

1.2.2 Cortex-M3芯片结构

在这里插入图片描述

1.2.3 ARM 内核介绍

  • 核心能力:按处理数据能力分为 8 位、16 位、32 位、64 位,位数越高,数据处理效率和精度通常越强;

在这里插入图片描述

  • 架构演进:经历 V5/V5E → V7 → V8 阶段架构升级伴随性能与功能优化;

  • 内核分类:

    • A (Application,应用处理器)系列:主打消费电子领域,多为 64 位,支持复杂操作系统(如IOS、安卓、Linux);
    • R (RealTime,实时处理器)系列:适用于对可靠性、可用性和实时性要求较高的领域,如汽车电子、工业自动化、航空航天、硬盘、4G通信模块、相机等;
    • M (Microcontroller,微控制器)系列:专为低功耗嵌入式系统设计,旨在提供高效的能耗管理和丰富的外设支持,适用于物联网(IoT)设备、传感器、医疗设备等资源受限的领域。如 M0、M0+、M3、M4、M7,兼顾性能与功耗,适合嵌入式控制;
  • 常见芯片厂商:海思(中国、型号HiXXX)、乐鑫(中国、型号ESP32)、兆易(中国、型号GD)、三星、高通、ST(意法半导体)、NXP (恩智浦)等等

  • 示例型号:STM32F103ZET6、STM32F103RCT6 均属于 V7 架构 M3 系列,是嵌入式开发中常用的型号。

1.3 常见的 MCU

1.3.1 按功能分类

  • 控制为主:NXP(恩智浦)、ST(意法半导体)、兆易创新等,擅长工业控制、家电控制等场景;

  • 无线通信为主:TI(德州仪器)、乐鑫(ESP8266、ESP32 系列)等,集成 Wi-Fi、蓝牙等无线模块,适合物联网设备;

  • 低功耗为主:STM32L 系列,功耗低至微安级,适用于电池供电的便携式设备(如智能手环、传感器节点)。
    更多国产MCU品牌:感兴趣可以参考国内MCU品牌国内MCU信息汇总

1.3.2 国产 MCU 应用领域及厂商

应用领域主要厂商
家电和消费电子中微、中颖、宏晶、雅特力、芯圣、汇春、灵动、晟矽
物联网芯海、乐鑫、贝特莱、兆易、云间、健天、炬芯
智能表计、IC 卡及安全国民、复旦、贝岭、钜泉
计算机和网络通信国芯、东软、沁恒、华芯、希格玛
工业控制华大、万高、时代、航顺、赛元、峰昭、极海
汽车电子赛腾、杰发、芯旺、比亚迪半导体、琪浦维半导体

1.3.3 国产 GD32 与 STM32 的区别

参考资料:https://jishu.proginn.com/doc/29506477906be233d

核心差异点:

  • 兼容性:GD32 引脚、内核架构与 STM32 高度兼容,可实现大部分场景下的直接替换,但部分外设寄存器细节存在差异;

  • 性能:GD32 部分型号主频更高(如 GD32F4 系列最高主频 200MHz,STM32F4 系列最高 168MHz),性价比更优;

  • 供应链:GD32 作为国产芯片,供应链稳定性受国际环境影响较小,适合对供应链安全有要求的项目;

  • 生态:STM32 生态更成熟,开发资料、例程、第三方工具更丰富,GD32 近年生态建设加速,差距逐步缩小。

2. STM32 的介绍

2.1 STM32 简介

2.1.1 基本定义

STM32 是 ST(意法半导体,由意大利 SGS 微电子与法国 Thomson 半导体合并而成)采用 ARM 内核设计的 32 位单片机系列,凭借高性能、低功耗、丰富外设等特点,成为嵌入式开发领域的主流选择。

2.1.2 官方资源链接

2.1.3 手册类型及用途

手册名称用途下载说明
参考手册(Reference Manual)软件工程师开发核心手册,详细描述芯片各模块功能、寄存器配置、工作原理(内容最全面,厚度最大)中文手册需在 ST 中文社区文档页搜索 “参考手册”;英文手册需在官网选择对应芯片型号 +“Reference Manual”,输入 “STM32F103” 即可筛选
数据手册(Data Sheet)硬件工程师必备,包含引脚定义、电气特性(如电压 / 电流参数)、机械封装、晶振 / 复位 / 电源电路设计规范输入芯片型号 “STM32F103” 可在官网或中文社区切换中英文版本下载
勘误手册(Errata Sheet)说明芯片量产过程中发现的功能局限性、异常场景及官方解决方案,避免开发踩坑下载路径与数据手册一致,建议开发前查阅最新版本
编程手册(Programming Manual)涵盖内核系统控制块寄存器描述、闪存(Flash)读写操作指南、读写保护设置方法同数据手册下载路径,适合需要底层操作闪存或内核寄存器的开发场景
应用笔记(Application Note)针对特定应用场景(如低功耗设计、通信协议实现)的技术文档,常搭配固件例程,降低开发难度可按应用主题(如 “低功耗”“SPI 通信”)在官网搜索,部分笔记附带代码示例
用户手册(User Manual)主要介绍 STM32 相关软件库(如 HAL 库、标准库)的使用方法、API 说明通常随软件库一同下载,或在官网 “软件与工具” 栏目查找

2.1.4 命名规范(以 STM32F103ZET6 为例)

在这里插入图片描述

参考 STM32 参考手册(中文)P3 页,这个手册放在下载资料的压缩包中了,各字符含义如下:

  • STM32:系列名称,代表 ST 32 位单片机;

  • F:产品类型,“F” 表示基础型(Foundation),此外还有 “L”(低功耗型)、“H”(高性能型)、“G”(通用型)等;

  • 103:子系列,代表芯片的功能等级和外设配置,不同子系列支持的外设数量、性能存在差异;

  • Z:引脚数,“Z” 对应 144 脚,其他常见代号:“R”(64 脚)、“C”(48 脚)、“T”(36 脚)等;

  • E:Flash 容量,“E” 对应 512KB,其他常见代号:“C”(256KB)、“B”(128KB)、“A”(64KB)等;

  • T:封装类型,“T” 表示 LQFP(薄型四方扁平封装),适合 PCB 板焊接;

  • 6:温度范围,“6” 代表工业级(-40℃~85℃),“7” 代表车规级(-40℃~105℃),“5” 代表商业级(0℃~70℃)。

2.1.5 芯片核心资源(以 STM32F103xC/D/E 为例)

中文数据手册P1页,放压缩包了
在这里插入图片描述

  • 内核:32 位 Cortex-M3 CPU,支持 Thumb-2 指令集,兼顾代码密度与执行效率;

  • 最大工作频率:72MHz,可满足多数嵌入式控制场景的实时性需求;

  • 存储:

    • SRAM(随机存取存储器):48~64KB(如 STM32F103RCT6 为 48KB,STM32F103ZET6 为 64KB),用于临时存储程序运行数据;
    • Flash(闪存 / 只读存储器):256~512KB(如 STM32F103RCT6 为 256KB,STM32F103ZET6 为 512KB),用于存储程序代码和固化数据;
  • 低功耗模式:支持睡眠模式(Sleep)、停机模式(Stop)、待机模式(Standby),可根据设备功耗需求选择,待机模式功耗最低(仅数微安);

  • Debug 模式:支持 SWD(串行调试)和 JTAG(联合测试行动小组)接口,SWD 仅需 2 根线,适合 PCB 板空间有限的场景;

  • 模拟功能:3 个 12 位 ADC(模数转换器,采样率最高 1MHz)、2 个 12 位 DAC(数模转换器),可实现模拟信号采集与输出;

  • I/O 接口:高达 112 个快速 IO 通道,支持推挽输出、开漏输出、上拉输入、下拉输入等多种工作模式,部分 IO 支持 5V 容忍;

  • 定时器:11 个定时器,包含 2 个高级定时器(支持 PWM 互补输出、死区控制)、4 个通用定时器、2 个基本定时器、2 个看门狗定时器、1 个 SysTick 定时器(系统滴答定时器,用于延时或操作系统时钟);

  • 通信接口:13 个通信接口,包括 2 个 I2C(集成电路总线)、5 个 USART(通用同步异步收发器)、3 个 SPI(串行外设接口)、1 个 CAN(控制器局域网)、1 个 USB(通用串行总线)、1 个 I2S(音频串行接口);

  • 其他:内置 CRC(循环冗余校验)计算单元(用于数据校验)、芯片唯一 ID(可用于设备身份识别)。

2.1.6 总线框图(数据手册P13 页)

总线框图(数据手册P13 页):

在这里插入图片描述

    • 核心结构:左上角为 Cortex-M3 内核及 JTAG/SWD 下载接口,是芯片的 “大脑” 和调试入口;
    • 数据总线:通过双向箭头连接的 AHB(先进高性能总线)、APB1(先进外设总线 1)、APB2 总线,CPU 需通过总线与外设通信;

关键注意点:使用任何外设前,必须先开启该外设对应的总线时钟(如 GPIO 挂载在 APB2 总线,需先使能 APB2 时钟),否则外设无法工作。

2.1.7时钟树(数据手册P14 页):

在这里插入图片描述

    • 作用:为芯片内核、外设提供同步时钟信号,时钟周期决定指令执行速度和外设工作频率,主频越高,芯片性能越强;
    • 时钟源分类:
      • 外部时钟源(HSE、LSE):精度高、稳定性好,HSE 为高速外部时钟(4~16MHz,常用 8MHz),LSE 为低速外部时钟(32.768KHz,专为 RTC 实时时钟供电);
      • 内部时钟源(HSI、LSI):无需外部晶振,成本低但精度稍差,HSI 为高速内部时钟(8MHz),LSI 为低速内部时钟(40KHz,供看门狗定时器使用);

2.1.8系统时钟来源:

可选择 HSI、HSE 或 PLLCLK(锁相环时钟),常用配置为 HSE(8MHz)→ 经过 PLL 9 倍频 → 72MHz 系统时钟;HSI 需先除以 2 再经过 PLL 16 倍频,最大可得到 64MHz 系统时钟。如下图所示(选择第一种):
在这里插入图片描述
在这里插入图片描述

2.1.9内存映射(数据手册P28 页):

在这里插入图片描述

    • 地址空间:STM32 将程序存储器(ROM/Flash)、数据存储器(RAM)、寄存器、I/O 端口统一组织在 4GB 线性地址空间中,分为 8 个 512MB 块,每个区域对应固定地址范围;
    • 数据存储格式:采用小端模式(高位字节存于高地址,低位字节存于低地址),每个内存地址对应 1 字节数据,32 位数据需占用 4 个连续地址;

开发意义:了解内存映射可快速定位寄存器地址,实现底层硬件操作(如直接通过地址访问 GPIO 寄存器)。

2.2 STM32 开发硬件环境

2.2.1 MCU 最小系统电路(核心组成)

STM32 最小系统是确保芯片正常工作的基础电路,包含以下 4 部分,设计需严格参考数据手册参数:

  1. 供电电路(参考数据手册 P5.1.6):
    在这里插入图片描述
    在这里插入图片描述
    • 核心电源:VCC 引脚接入 3.3V 直流电压,为 MCU 内核和数字外设供电;
    • 滤波电容:在 VCC 与 GND 之间并联多个 104(0.1μF)陶瓷电容(如 C29、C30),用于滤除电源噪声,稳定电压;
    • 模拟电源:Vref+ 引脚接 3.3V、Vref- 引脚接 GND,VDDA 引脚接 3.3V、VSSA 引脚接 GND,为 ADC、DAC 等模拟外设提供独立电源,减少数字电路对模拟信号的干扰。
  1. 复位电路(参考数据手册 P5.3.14 NRST 引脚特性):
    在这里插入图片描述
    在这里插入图片描述
    • 工作原理:采用上电复位 + 按键复位设计,复位键未按下时,NRST 引脚通过上拉电阻保持高电平(芯片正常工作);按下复位键时,NRST 引脚接地变为低电平,触发芯片复位(程序从头开始执行);
    • 电阻电容选型:通常搭配 10KΩ 上拉电阻和 10μF 电容,确保复位信号稳定。
  1. 时钟电路(参考数据手册 P5.3.6):
    在这里插入图片描述
    • 高速晶振电路(HSE):在 OSC_IN 和 OSC_OUT 引脚之间接入 8MHz 石英晶振,两端各串联 1 个 22pF 匹配电容(如 C23、C25)并接地,为芯片提供高速时钟源;
      在这里插入图片描述
    • 低速晶振电路(LSE,可选):在 OSC32_IN 和 OSC32_OUT 引脚之间接入 32.768KHz 晶振,搭配 12.5pF 匹配电容,仅用于需要 RTC 实时时钟的场景。
  1. 下载电路(SWD 接口,常用):
    在这里插入图片描述

SWD 接口是目前主流的调试下载接口,仅需 4 个引脚(2 个核心信号 + 电源 + 地),接线如下:

SWD 引脚对应 STM32 引脚备注
JTMSPA13(105 脚)对应 SWDIO 信号,用于数据传输
JTCKPA14(109 脚)对应 SWCLK 信号,用于时钟同步
GNDGND接地,确保信号参考电平一致
VCC(可选)VCC3.3V为下载器供电,部分下载器(如 ST-LINK V2)可独立供电,此脚可悬空

2.2.2 最小系统开发板说明

  • 定义:仅包含上述供电、复位、时钟、下载电路的开发板,不含额外外设(如 LCD、传感器),是学习 STM32 底层驱动的基础硬件;

  • 设计依据:需严格遵循 STM32 数据手册中的电气参数和推荐电路,或参考 ST 官方 Demo 板(如 STM32F103VET6 评估板)的设计方案,避免因电路设计错误导致芯片损坏;

  • 用途:用于验证芯片基本功能(如 GPIO 输出、定时器中断)、调试底层驱动程序,也可作为自定义项目的核心控制板,外接所需外设。

2.3 STM32 开发软件环境

2.3.1 常用 IDE(集成开发环境)

IDE 是 STM32 程序开发、编译、调试的核心工具,不同 IDE 适用场景不同,选择需结合项目需求和个人习惯:

IDE 名称特点适用场景
KEIL(MDK-ARM)行业主流,支持绝大多数 STM32 型号,集成编译器、调试器、仿真器,插件丰富;需付费(有学习版)中小型项目开发、教学场景,兼容性强
IAR专业级 IDE,编译效率高、代码优化效果好,调试功能强大;需付费,学习版有代码大小限制对代码效率要求高的工业项目、军工项目
STM32CUBEIDEST 官方免费 IDE,基于 Eclipse 开发,集成 STM32CubeMX(可视化配置工具),支持图形化外设配置官方方案开发、新手入门,减少手动写配置代码
VSCODE + 插件轻量级编辑器,通过安装 C/C++、STM32 插件(如 Cortex-Debug)实现开发;免费、可自定义程度高习惯 VSCODE 操作的开发者,适合配合 Makefile 或 CMake 构建项目

2.3.2 Keil 软件安装步骤(详细流程)

Keil(MDK-ARM)是教学和开发中最常用的 IDE,以下为完整安装与配置步骤

需注意路径无中文

1. 安装前准备
  • 必备文件:放压缩包了,分开压缩了,只需要破解的或者芯片支持包的选择自己需要的下载

那个破解的软件可能会被360等杀毒软件或者系统隔离,可以提前退出杀毒或者被隔离了自己找找看怎么恢复到原文件夹

在这里插入图片描述

    • mdk527.exe:Keil MDK-ARM 主程序安装包(版本可更新,流程一致);
    • Keil.STM32F1xx_DFP.1.0.5.pack:STM32F1 系列芯片支持包(使 Keil 识别 STM32F103 等型号);需要先安装keil
    • Keil.STM32F4xx_DFP.2.14.0.pack:STM32F4 系列芯片支持包(可选,如需开发 F4 系列芯片);需要先安装keil
    • 注册软件:注册软件-仅限个人学习使用文件夹中的激活工具(注意:仅用于个人学习,商业使用需购买正版)。
2.3.2.1需要其他版本的也可在官网下载:KEIL 官网下载 https://www.keil.com/download/product/

在这里插入图片描述
在这里插入图片描述

2.3.2.2需要其他芯片支持包下载地址:器件支持包 xx.pack–KEIL 官网下载

官网地址https://www.keil.arm.com/
不会查找在哪可以看这个视频
保安老王头的视频b

2. 安装 Keil 主程序

安装 KEIL 软件,注意不要使用中文路径;

在这里插入图片描述

  1. 双击 mdk527.exe,弹出安装向导,点击 “Next”;

  2. 勾选 “我接受许可协议”,点击 “Next”;

  3. 填写用户信息(姓名、公司可自定义),点击 “Next”;

  4. 选择安装路径(必须为英文路径,如 D:\Keil5),避免中文或特殊字符,点击 “Next”;

  5. 等待安装进度条完成(约 2~5 分钟),弹出 “安装完成” 提示,点击 “Finish”,暂不打开软件。

2.1zhuce

在这里插入图片描述
注册:仅限个人学习使用
选中 Keil 图标,右键以管理员运行,找到菜单栏“license Management”
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
找到 CID,复制,打开注册软件
在这里插入图片描述
在这里插入图片描述
成功之后到2032年
在这里插入图片描述

3. 安装芯片支持包(Pack 包)
  • 作用:Keil 默认不支持 STM32 芯片,需安装对应 Pack 包,才能在新建项目时选择 STM32 型号并编译程序;

  • 下载路径:除本地文件外,可在 Keil 官网(https://www.keil.arm.com/)搜索 “STM32F1xx DFP” 获取最新版本;

  • 安装方式(推荐第三种,离线安装,稳定高效):

    1. 在线安装:打开 Keil → 点击工具栏 “Pack Installer” → 点击 “Refresh” 刷新包列表 → 找到 “STM32F1xx DFP” → 点击 “Install”,等待下载安装(需联网,速度依赖网络);
    1. 离线安装 1:打开 Pack Installer → 点击 “File → Import” → 选择本地 Keil.STM32F1xx_DFP.1.0.5.pack 文件 → 点击 “Open”,完成安装;
    1. 离线安装 2:直接双击本地 Keil.STM32F1xx_DFP.1.0.5.pack 文件,弹出安装向导,点击 “Next” 直至进度条到 100%,提示 “Install Successful” 即完成。

安装好keil双击安装就行

在这里插入图片描述

2.3.3 其他驱动安装

放压缩包了

  1. ST-LINK 驱动(用于下载调试):
    • 用途:ST-LINK 是 ST 官方下载器,需安装驱动才能与电脑正常通信,实现程序下载和在线调试;
    • 安装步骤:双击 ST-LINK_V2_USB_Driver.exe → 按向导点击 “Next” → 完成安装后,将 ST-LINK 连接电脑,打开 “设备管理器”,在 “通用串行总线设备” 中可看到 “ST-LINK/V2”,表示驱动安装成功。
  1. USB 转串口驱动(用于串口通信):
    • 用途:若项目需通过串口与电脑通信(如打印调试信息、接收上位机指令),需安装 USB 转串口模块(如 CH340、CP2102)的驱动,USB转TTL电平;
    • 安装步骤:根据模块型号选择对应驱动(如 CH340 选择 CH341SER.EXE),双击安装 → 连接模块到电脑,在 “设备管理器”“端口(COM 和 LPT)” 中可看到 “USB-SERIAL CH340(COMx)”,表示驱动安装成功。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值