stm32入门常识
ARM公司:只做内核的“设计图纸”和授权。它不生产任何实体芯片,而是设计出高性能、低功耗的处理器架构(比如Cortex-M3的“蓝图”),然后授权给其他公司使用。类比:ARM就像一本著名建筑图纸的设计院,它画出了“别墅A型”的结构图,但自己不盖房子。ST公司(意法半导体):拿到ARM授权后,把ARM提供的处理器内核(作为“核心部件”)集成到自己的芯片中,再加上自家的存储器、外设接口、模数转换器等,
目录
什么是单片机
生活实例:
-
家用电器:微波炉、洗衣机、空调、电饭煲(通过单片机和按键、显示屏控制加热时间/温度)
-
汽车:发动机控制单元(ECU)、车窗一键升降、胎压监测、雨刮器自动感应
-
消费电子:遥控器、无线鼠标、智能手表、电动牙刷
-
工业:PLC(可编程逻辑控制器)、机器人手臂、传感器节点
基础知识
单片机(Microcontroller,常缩写为MCU)是一种将计算机的多个核心部件集成在一块芯片上的微型计算机。你可以把它看作一个麻雀虽小、五脏俱全的单芯片电脑系统。
本质:
是一种微型计算机,是一种集成电路芯片,把具有数据处理能力的 中央处理器 CPU、随机存储器 RAM、闪存 flash、多种I/O口和中断系统、定时器/计数器等功能(可能还包 括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而 完善的微型计算机系统,在工业控制领域广泛应用。
下面是单片机内部芯片的架构:学习必须要熟悉

关于内部的设备:
一台基本的计算机需要CPU(中央处理器)、内存(RAM/ROM)、输入输出接口(I/O)等。普通电脑(如台式机)的主板上,这些部件是分开的芯片,通过电路连接。
而单片机把这些部件全部集成在同一块芯片内部:
-
中央处理器 (CPU):运算和控制核心
-
存储器 (ROM/RAM):ROM用来存放程序(烧录后断电不丢失),RAM用来存放临时数据(断电丢失)
-
Flash (闪存):相当于电脑的硬盘。作用:存储程序代码和掉电不能丢的数据。特点:非易失性,断电后信息不丢失。可电擦写,方便反复烧录程序(但写入速度比RAM慢)。
-
各种外设接口 (I/O):如GPIO引脚、定时器、串口、模数转换器等
基本工作信息流
上电后
↓
CPU 从 【Flash (硬盘/ROM)】 读取你的程序代码
↓
将运行中需要动态修改的变量放到 【RAM (内存)】 里工作
↓
执行运算......
↓
断电后 RAM 清空,Flash 里的程序完好保存,下次开机继续运行
特点
体积小:<5mm*5mm
功耗低:mA级
集成度高:IO/TIM/AD/DA
使用方便:C/Debug
扩展灵活:IIC/SPI/FSMC
Cortex-M系列介绍
ARM公司与ST公司的关系
-
ARM公司:只做内核的“设计图纸”和授权。
它不生产任何实体芯片,而是设计出高性能、低功耗的处理器架构(比如Cortex-M3的“蓝图”),然后授权给其他公司使用。
类比:ARM就像一本著名建筑图纸的设计院,它画出了“别墅A型”的结构图,但自己不盖房子。 -
ST公司(意法半导体):拿到ARM授权后,把ARM提供的处理器内核(作为“核心部件”)集成到自己的芯片中,再加上自家的存储器、外设接口、模数转换器等,做成完整的单片机(MCU) 产品。
类比:ST就是一家建筑公司,它买来设计院的“别墅图纸”,自己采购砖块、水泥、门窗(外设),盖成一栋栋实实在在可住的房子(STM32芯片)。
说的明白一点:
ARM就是负责设计CPU的内核架构,但是不生产。ST公司根据架构负责设计其他外设+全部生产
ARM内核三大系列:A、R、M(简单了解)
Cortex-A 系列
-
A = Application(应用处理器)
-
特点:高性能、高主频(通常1GHz以上)、支持复杂操作系统(Linux、Android、Windows)、带MMU(内存管理单元)。
-
典型用途:智能手机、平板电脑、智能电视、路由器、服务器、树莓派(比如树莓派4用的就是Cortex-A72)。
-
功耗:相对较高(几瓦到十几瓦),需要散热。
-
类比:A系列就像一台强大的台式电脑,能跑大型软件和多任务,但比较耗电。
Cortex-R 系列
-
R = Real-time(实时)
-
特点:确定性响应,对中断反应极快(纳秒到微秒级),性能适中,主频几百兆赫兹。通常也带MMU,但更强调高可靠性和容错能力。
-
典型用途:汽车发动机控制(ECU)、刹车系统(ABS)、硬盘控制器、基站基带、军工设备、医疗仪器。
-
功耗:中等(几百毫瓦到几瓦)。
-
类比:R系列就像一名专业的赛车手,要求反应快、精准、不出错,但不需要拖着大屏幕跑游戏。
Cortex-M 系列
-
M = Microcontroller(微控制器)
-
特点:超低功耗(微安甚至纳安级)、主频较低(几十兆到几百兆)、芯片成本极低、不带MMU(一般不运行Linux等复杂系统),但中断响应也很不错。
-
典型用途:智能家电(空调、洗衣机)、电子玩具、无人机飞控、智能手表、传感器节点(如温湿度计)、医疗器械(血糖仪)、电机控制。
-
功耗:极低,很多型号可以用电池运行数年。
-
类比:M系列就像一支超省电的智能遥控器,专门干一件事,随时待机,按一下就立刻反应。
性能与时钟频率的总结(由高到低):
A系列 > R系列 > M系列
频率:A约1~3GHz,R约300~800MHz,M约几十MHz ~ 几百MHz。
一句话判断用途:要跑系统、看视频 → A;要实时控制汽车刹车 → R;要做低功耗传感器或小家电 → M。
STM32的命名规则
命名规则看起来复杂,其实拆开就很容易记。
ST -- 意法半导体
M -- Microelectronics微电子
32 -- 总线宽度
ST公司的STM32单片机型号通常采用 STM32 + 系列 + 子系列 + 引脚数 + 闪存容量 + 封装 + 温度范围 的格式。

以STM32F103C8T6为例子:
-
STM32 -> 品牌+32位
-
F -> 通用基础系列
-
1 -> 增强型(主频72MHz)
-
03 -> 具体外设组合(有2个12位ADC、3个定时器、USART等)
-
C -> 48引脚
-
8 -> 64KB Flash
-
T -> LQFP封装
-
6 -> 工业级温度(-40~85℃)
数据手册
获取数据手册
作为一名工程师,学会获取数据手册是很基本的能力。
下面介绍两个途径。
ST公司官网
链接:st.com/content/st_com/en.html
一下是步骤图片:



中文社区网
链接:https://www.stmcu.com.cn/Designresource/list/STM32F1/document/datasheet




阅读数据手册(只做整体介绍)
手册以STM32F103为例子
封面与第1页:
-
看什么:
-
内核:
ARM 32位的 Cortex-M3 CPU,最高72MHz。这决定了芯片的计算能力等级。 -
存储器:
64K或128K字节的闪存(程序空间),20K字节的SRAM(内存)。这决定了你能写多复杂的程序。 -
关键外设:
2个ADC(模数转换)、7个定时器、9个通信接口(USB、CAN、I2C、SPI等)。这部分告诉你芯片能连接什么设备,比如CAN就常用于汽车电子。
-
-
简单理解:就像看一个人的简历,先知道他学历多高(内核)、力气多大(存储)、会什么技能(外设)。
第2节 “规格说明” 中的概述
这是手册最精华的部分,用通俗语言介绍了各个功能模块是干什么的。
-
重点看:
-
2.3.12 低功耗模式:睡眠、停机、待机模式。做电池供电的产品(如智能手表、传感器)必须看。
-
2.3.15 定时器和看门狗:定时器用来做精准延时、输出PWM(控制电机转速、灯光亮度);看门狗是系统的“安保”,程序跑飞了能自动重启。
-
2.3.21 GPIO:通用输入输出引脚。就是芯片伸出来的那些腿,可以控制LED亮灭、读取按键状态。
-
-
怎么读:快速浏览小标题,看到感兴趣的功能(比如“我想用USB”),就停下来看它支持不支持。不需要记住细节,知道它“有”或“没有”就够了。
3. 第3节 “引脚定义”
-
重点看:表5 中等容量STM32F103xx引脚定义。
-
如何看懂这个复杂的表格:
-
引脚名称 (Pin Name):比如
PA0,PB1。这是它的名字。 -
主功能 (Main Function):复位后默认的功能,通常是普通IO口。
-
可选复用功能 (Alternate Functions):这才是关键!告诉你这个引脚除了当普通IO口,还能当什么专用接口。比如
PA9的复用功能是USART1_TX(串口发送脚)。
-
-
小技巧:你需要用到什么功能(比如串口),就去找哪个引脚能当
TX(发送)和RX(接收)。这就是“找引脚”的过程。
4. 第7节 “订货代码”
不同后缀代表不同配置,买错了可能焊不上板子。
-
看什么:表57 订货代码信息图示。
-
举例:
STM32F103C8T6-
C:48个引脚。 -
8:64K字节闪存。 -
T:LQFP封装(常见贴片封装)。 -
6:工业级温度范围(-40到85°C)。
-
-
作用:确定你要买的具体型号。
STM32F103C8T6是初学者最常用的型号之一(核心板常见)。
强烈建议:暂时跳过这些内容
下面这几部分充满复杂的图表和参数,初学者写代码时基本用不到,会严重打击信心,可以跳过。
-
第4节 存储器映像:这是给写底层链接脚本或调试器用的,暂时不需要。
-
第5节 电气特性:这是给硬件工程师设计电路板看的。内含最大电压、电流、功耗等参数。只要你不让芯片超负荷工作(比如给5V供电),就用不到。作为软件初学者,直接忽略。
-
第6节 封装特性:这是画PCB封装时看的。买现成的核心板或开发板,这部分与你无关。
-
所有带“图”的复杂时序图:比如SPI、I2C的时序图。初次接触直接跳过,等用到相应协议且通信不正常时,再回头对照逻辑分析仪看。
嵌入式基础(这部分有看不懂正常,有印象就行)
认识开发板
基于 STM32F103C8T6 核心芯片的学习开发板。它的主要资源如下:
| 项目 | 说明 |
|---|---|
| 主控芯片 | STM32F103C8T6(Cortex-M3内核,72MHz) |
| Flash | 64KB(存放程序) |
| SRAM | 20KB(运行内存) |
| 高速晶振 | 8MHz(HSE,用于产生系统主时钟) |
| 低速晶振 | 32.768kHz(LSE,用于RTC实时时钟) |
| LED | 5颗(通常用于指示状态或调试) |
| KEY | 3个(按键,用于输入) |
| GPIO | 37个(PA0~PA15, PB0~PB15, PC13~PC15, PD0~PD1) |
| ADC | 2个12位ADC,共12路外部通道 |
| 定时器 | 4个16位定时器(TIM1~TIM4) |
| 通信接口 | 2×I2C, 2×SPI, 3×USART, 1×CAN |
通俗理解: 这块开发板就是把STM32芯片“接出来”了——引出了电源、IO口、下载接口,也集成了常用外设(LED、按键),方便你直接插线、编程、验证。
STM32F103C8T6引脚分布
1. 电源引脚
-
VDD / VSS:数字部分电源正/负。通常VDD接3.3V,VSS接地。(突变)
-
VDDA / VSSA:模拟部分电源正/负。为ADC、RC振荡器等模拟电路供电。最好和VDD相同电压(3.3V),并且要加滤波电容。(连续)
-
VREF+ / VREF-:ADC/DAC的参考电压引脚。注意:只有100脚以上的封装才有这两个脚,我们的C8T6是48脚,没有这两个脚,内部直接连到VDDA/VSSA。
-
VBAT:RTC和后备寄存器的备用电源引脚。如果需要断电后RTC继续走时,可以接电池(1.8~3.6V);否则直接接VDD或悬空。
2. 晶振引脚
-
OSC_IN / OSC_OUT (PD0/PD1):外部高速晶振(HSE)的输入/输出。通常接8MHz晶振。如果不使用外部晶振,这两个脚可以作为普通IO(PD0/PD1)。
-
OSC32_IN / OSC32_OUT (PC14/PC15):外部低速晶振(LSE)的输入/输出。通常接32.768kHz晶振,用于RTC。也可以用作普通IO,但驱动能力很弱(只能输出2MHz,灌电流≤3mA)。
-
内部晶振:芯片内部自带HSI(8MHz RC振荡器)和LSI(约40kHz RC振荡器)。精度比外部晶振低,但省去了外部元件。
3. 复位引脚
-
NRST:低电平有效复位引脚。内部有上拉电阻,正常工作时为高电平。按下复位按键会拉低,芯片复位。
4. 下载引脚(调试/烧录接口)
讲义介绍了三种下载方式:
-
JTAG:需要5个脚(TMS、TCK、TDI、TDO、nTRST),占用引脚多,已较少用。
-
SWD(推荐):只需要2个脚(SWDIO = PA13, SWCLK = PA14),另外再加VDD和GND。同时支持调试和烧录,强烈建议使用。
-
串口下载(ISP):只能通过USART1(PA9=TX, PA10=RX),配合BOOT引脚设置(BOOT0=1, BOOT1=0),上电后进入系统存储器中的BootLoader,通过串口烧录程序。不能调试,只能烧录。
5. BOOT引脚
-
BOOT0 (PB2? 注意不是!实际是单独的BOOT0引脚,PB2复用为BOOT1)
在STM32F103中,BOOT0是独立引脚(通常标为BOOT0),BOOT1则是与PB2共用(需要看数据手册)。
通过配置它们,可以选择芯片启动位置:
| BOOT0 | BOOT1 | 启动区域 |
|---|---|---|
| 0 | X | 主闪存(正常运行用户程序) |
| 1 | 0 | 系统存储器(BootLoader,用于串口下载) |
| 1 | 1 | 内置SRAM(调试用) |
通常开发板上会有跳线帽或拨码开关来设置BOOT0/BOOT1。正常运行时,BOOT0接地(0)。
6. GPIO引脚
所有以 P 开头的引脚(如PA0、PB1等)都是通用输入输出引脚。它们可以配置为输入、输出、复用功能(如USART的TX/RX、SPI的SCK等)。注意PC13/PC14/PC15这三只脚的驱动能力很弱,不适合直接驱动LED等大电流负载。
STM32最小系统
单片机最小系统是指能够将单片机芯片运行所必需的最少的硬件电路集成在一起的系统。
它是一种基本的单片机应用系统,通常由主芯片,时钟电路,复位电路,电源电路,BOOT启动电路,程序下载电路,扩展接口组成,为单片机提供时钟信号、复位信号以及外设接口等必要功能。
-
电源电路
提供稳定的3.3V给VDD、VDDA。常用AMS1117-3.3等LDO稳压芯片。输入5V(USB或适配器),输出3.3V。并且要在靠近芯片的VDD引脚处放置0.1μF和10μF的滤波电容,保证电源干净。 -
时钟电路
-
HSE:8MHz晶振 + 两个20pF左右的负载电容(匹配晶振要求)。
-
LSE(可选):32.768kHz晶振 + 两个12.5pF左右电容。如果不使用RTC,可以不焊。
-
也可以不使用外部晶振,直接用内部HSI(8MHz),但精度稍差,且USB等功能需要外部精确时钟。
-
-
复位电路
一个10kΩ上拉电阻到3.3V,加上一个0.1μF电容到地,再接一个按键到地。按下按键时NRST被拉低,释放后恢复高电平,芯片复位。 -
BOOT启动电路
两个10kΩ下拉电阻到GND(BOOT0和BOOT1默认接地),再用跳线帽或开关可以选择接到3.3V。这样正常运行时BOOT0=0,需要串口下载时BOOT0=1。 -
程序下载电路
-
SWD方式:只需要引出SWDIO、SWCLK、VDD、GND四个接口,连接ST-Link调试器即可。
-
串口方式:需要引出USART1的TX/RX,以及BOOT0的控制。
-
-
扩展接口
将芯片的所有IO口通过排针引出,方便连接传感器、显示屏等外设。
电路基础知识
上拉电阻 / 下拉电阻
-
上拉:用一个电阻把不确定的信号脚连接到VDD,默认高电平。例如按键一端接地,另一端接IO口,同时加一个上拉电阻(10kΩ)到VDD,那么不按键时IO读为高电平,按键按下时为低电平。
-
下拉:反之,用电阻连接到GND,默认低电平。
-
作用:避免引脚悬空时电平不确定,导致误触发。
链接:(参考)
电容、电阻、电感()
-
电阻:阻碍电流,单位欧姆。用于分压、限流、上拉下拉等。
-
电容:储存电荷,通交流隔直流。用于电源滤波(滤除纹波)、耦合信号、定时等。
-
电感:储存磁场能量,通直流阻交流。常用于电源滤波(如LC滤波)或DC-DC转换。
以上不多赘述
三级管(晶体管)
-
现代芯片内部主要使用 MOS管(Metal-Oxide-Semiconductor),分为NMOS和PMOS。
-
CMOS:Complementary MOS,由NMOS和PMOS成对组成,功耗极低,是数字集成电路的基础。
-
三极管(BJT)在分立电路中仍有使用,但在芯片级已很少。
逻辑门(与门、或门、非门等)
-
数字电路的基础单元。
-
非门:输入0输出1,输入1输出0。
-
与门:两个输入都为1时输出1,否则0。
-
或门:任一输入为1则输出1。
-
-
在单片机内部,所有功能(加减法、判断、存储)都是由成千上万个逻辑门组合实现的。


原理图
原理图这个内容需要各位另需学习,一次难说明白这个东西,只需要知道每个模块大概的工作原理就可以了,至于说具体的信息流情况之后在深入了解。(建议学习一下PCB设计,会好懂很多),之后我也会发布相关的内容,希望大家多多支持。

一份完整的STM32开发板原理图通常包含以下几个模块,可以按顺序逐一查看:
1. 电源电路
-
找稳压芯片:常见AMS1117-3.3,输入5V(USB或DC座),输出3.3V。
-
滤波电容:输入输出各有一个10μF~100μF电解电容和一个0.1μF瓷片电容。
-
电源指示LED:常有一个LED串电阻接3.3V,亮则表示电源正常。
-
注意区分:3.3V、5V、GND、VDD、VDDA、VSS、VSSA等网络标号。
2. 主控芯片(STM32F103C8T6)
-
找到芯片符号,通常为LQFP48封装。
-
核对电源引脚(VDD、VDDA、VSS、VSSA)是否都已连接。
-
找到晶振引脚:OSC_IN (PD0) / OSC_OUT (PD1) 接8MHz晶振和电容;OSC32_IN (PC14) / OSC32_OUT (PC15) 接32.768kHz晶振(如果有RTC)。
-
找到复位引脚(NRST):应接上拉电阻(如10kΩ)和复位按键,并可能有一个0.1μF电容到地。
-
找到BOOT引脚:BOOT0(独立引脚)和BOOT1(常与PB2共用)通常通过10kΩ电阻下拉到地,可选跳线接高电平。
3. 下载调试接口
-
SWD接口:4针或5针排针,包含VDD、GND、SWDIO (PA13)、SWCLK (PA14)。有时会多一个复位脚(NRST)。
-
串口1接口:PA9 (TX)、PA10 (RX),加上GND,用于ISP下载或串口通信。
4. 外设模块
-
LED:通常为几个发光二极管,阳极接VCC(或直接接IO高电平驱动),阴极经过电阻接IO口。或者共阴接法。
-
按键:一端接IO口,另一端接GND,同时IO口需上拉电阻(内部上拉或外部上拉)。按下时IO读到低电平。
-
其他传感器/模块接插件:会标注引脚功能,如PA0接超声波Trig、PB6接I2C_SCL等。
5. 扩展IO口
-
所有未使用的IO口通过排针引出,标注网络名如PA0, PA1, PB0...,方便用户外接模块。
更多推荐



所有评论(0)