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 引脚 备注
JTMS PA13(105 脚) 对应 SWDIO 信号,用于数据传输
JTCK PA14(109 脚) 对应 SWCLK 信号,用于时钟同步
GND GND 接地,确保信号参考电平一致
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,编译效率高、代码优化效果好,调试功能强大;需付费,学习版有代码大小限制 对代码效率要求高的工业项目、军工项目
STM32CUBEIDE ST 官方免费 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)”,表示驱动安装成功。
Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐