STM32 学习 —— 个人学习笔记1(STM32简介)

声明

文中内容为观看 BiliBili 视频【STM32入门教程-2023版 细致讲解 中文字幕】后学习并扩展总结。

本文章为个人学习使用,版面观感若有不适请谅解,文中知识仅代表个人观点,若出现错误,欢迎各位批评指正。

一、STM32 简介

STM32 是意法半导体公司(STMicroelectronics)推出的 32 位微控制器(MCU)与微处理器(MPU)系列,以 ARM Cortex-M 内核为基础,凭借其高性能、低功耗、丰富外设及完善生态,成为嵌入式领域的主流选择,是一款经典的嵌入式微控制器。STM32 拥有多种型号及封装,按定位分为五大类:

类别 代表系列 特点
超低功耗 MCU L0、L4、L5 等 极致功耗优化,长续航,适合穿戴设备、传感器节点
主流 MCU F0、F1、G0、G4 等 平衡性能与成本,外设丰富,适配工业控制、消费电子等
高性能 MCU F2、F4、F7、H7 等 高主频、大存储、强算力,支持复杂算法与高速接口
无线 MCU WB、WL 等 集成蓝牙、LoRa 等无线通信模块,适用于物联网终端
嵌入式 MPU MP1、MP2 系列 多核架构,支持 Linux/Android 系统,用于边缘计算、智能网关

二、ARM 介绍

ARM(Advanced RISC Machines)是全球主流的精简指令集(RISC)处理器架构与 IP 授权厂商,以低功耗、高能效、高可扩展性和 IP 授权商业模式为核心,支撑从嵌入式微控制器到超算 / 服务器的全场景计算,ARM 公司设计 ARM 内核,半导体厂商完善内核周边电路并生产芯片。

1984 年,发布第一款 ARM 架构处理器,并以 ARM+ 数字命名(ARM1 ~ ARM11),之后放弃数字命名改为 Cortex 命令 ARM 处理器产品,如 Cortex-A,Cortex-R,Cortex-M。

系列 特点 应用场景
Cortex-A 系列 高性能 手机、平板、智能电视等
Cortex-R 系列 实时性 汽车、工业控制、医疗设备等
Cortex-M 系列 嵌入式 传感器、智能家居等

三、本次学习使用硬件(STM32F103C8T6)

STM32F103C8T6 是 STM32F1 系列经典入门款 32 位 MCU,搭载 72MHz 的 ARM Cortex-M3 内核,拥有 64KB Flash、20KB SRAM,采用 48 引脚 LQFP 封装,含 37 个可用 GPIO;外设丰富,配备 2 个 12 位 ADC、多类型定时器、3 个 USART、2 个 SPI、2 个 I2C,还有 USB 2.0 全速、CAN 2.0B 接口及 7 通道 DMA,工作电压 2.0V-3.6V,支持睡眠、停止、待机低功耗模式,适配 ST-Link 调试及主流开发环境,以高性价比成为嵌入式入门、低成本工业控制、智能家居节点等场景的主流选择。

  • 片上资源 / 外设
英文缩写 名称 英文缩写 名称
NVIC 嵌套向量中断控制器 CAN CAN 通信
SysTick 系统滴答定时器 USB USB 通信
RCC 复位和时钟控制 RTC 实时时钟
GPIO 通用 IO 口 CRC CRC 校验
AFIO 复用 IO 口 PWR 电源控制
EXTI 外部中断 BKP 备份寄存器
TIM 定时器 IWDG 独立看门狗
ADC 模数转换器 WWDG 窗口看门狗
DMA 直接内存访问 DAC 数模转换器
USART 同步 / 异步串口通信 SDIO SD 卡接口
I2C I2C 通信 FSMC 可变静态存储控制器
SPI SPI 通信 USB OTG USB 主机接口
  • 芯片的命名规则
序号 编码位含义 规则 / 具体定义 示例
1 产品系列 基于 ARM 核心的 32 位微控制器 STM32
2 产品类型 通用类型 F
3 产品子系列 101 = 基本型 102 = USB 基本型,USB 2.0 全速设备 103 = 增强型 105 或 107 = 互联型 103
4 引脚数目 T = 36 脚 C = 48 脚 R = 64 脚 V = 100 脚 Z = 144 脚 C
5 闪存存储器容量 4 = 16K 字节的闪存存储器 6 = 32K 字节的闪存存储器 8 = 64K 字节的闪存存储器 B = 128K 字节的闪存存储器 C = 256K 字节的闪存存储器 D = 384K 字节的闪存存储器 E = 512K 字节的闪存存储器 8
6 封装 H = BGA T = LQFP U = VFQFPN Y = WLCSP64 T
7 温度范围 6 = 常规工业级温度范围,-40℃ ~ 85℃ 7 = 宽温工业级温度范围,-40℃~105℃ 6

四、引脚定义

STM32F103C8T6 采用 LQFP48 封装,共 48 个引脚,整体可按功能划分为电源 / 复位 / 时钟、调试接口、通用 GPIO 及外设复用引脚四大类,各类引脚分工明确且兼顾功能灵活性。其中电源类引脚包含多组数字供电、地、备份电源及 ADC 参考电压引脚,保障芯片供电稳定与模拟采集精度;复位和启动引脚用于芯片复位及启动模式配置,时钟引脚支持外接晶振与时钟输出,调试引脚为 SWD 调试接口,满足程序下载与调试需求;剩余大部分为 GPIO 引脚,均可灵活配置为输入、输出模式,同时支持复用为 UART、I2C、SPI、ADC、TIM、USB 等丰富外设接口,适配各类通信、采集、控制场景,引脚配置可通过寄存器或 HAL 库完成,实际应用中需遵循供电、接地的规范要求,确保芯片稳定工作。下图所示为 STM32F103C8T6 芯片的引脚序号和引脚名称示意图(使用商家配套提供图片)。

引脚号 引脚名称 类型 I / O 口电平 主功能 默认复用功能 重定义功能
1 VBAT S VBAT
2 PC13-TAMPER-RTC I/O PC13 TAMPER-RTC
3 PC14-OSC32_IN I/O PC14 OSC32_IN
4 PC15-OSC32_OUT I/O PC15 OSC32_OUT
5 OSC_IN I OSC_IN
6 OSC_OUT O OSC_OUT
7 NRST I/O NRST
8 VSSA S VSSA
9 VDDA S VDDA
10 PA0-WKUP I/O PA0 WKKUP / USART2_CTS / ADC12_IN0 / TIM2_CH1_ETR
11 PA1 I/O PA1 USART2_RTS / ADC12_IN1 / TIM2_CH2
12 PA2 I/O PA2 USART2_TX / ADC12_IN2 / TIM2_CH3
13 PA3 I/O PA3 USART2_RX / ADC12_IN3 / TIM2_CH4
14 PA4 I/O PA4 SPI1_NSS / USART2_CK / ADC12_IN4
15 PA5 I/O PA5 SPI1_SCK / ADC12_IN5
16 PA6 I/O PA6 SPI1_MISO / ADC12_IN6 / TIM3_CH1 TIM1_BKIN
17 PA7 I/O PA7 SPI1_MOSI / ADC12_IN7 / TIM3_CH2 TIM1_CH1N
18 PB0 I/O PB0 ADC12_IN8 / TIM3_CH3 TIM1_CH2N
19 PB1 I/O PB1 ADC12_IN9 / TIM3_CH4 TIM1_CH3N
20 PB2 I/O FT PB2 / BOOT1
21 PB10 I/O FT PB10 I2C2_SCL / USART3_TX TIM2_CH3
22 PB11 I/O FT PB11 I2C2_SDA / USART3_RX TIM2_CH4
23 VSS_1 S VSS_1
24 VDD_1 S VDD_1
25 PB12 I/O FT PB12 SPI2_NSS / I2C2_SMBAI / USART3_CK / TIM1_BKIN
26 PB13 I/O FT PB13 SPI2_SCK / USART3_CTS / TIM1_CH1N
27 PB14 I/O FT PB14 SPI2/_MISO / USART3_RTS / TIM1_CH2N
28 PB15 I/O FT PB15 SPI2_MOSI / TIM1_CH3N
29 PA8 I/O FT PA8 USART1_CK / TIM1_CH1 / MCO
30 PA9 I/O FT PA9 USART1_TX / TIM1_CH2
31 PA10 I/O FT PA10 USART1_RX / TIM1_CH3
32 PA11 I/O FT PA11 USART1_CTS / USBDM / CAN_RX / TIM1_CH4
33 PA12 I/O FT PA12 USART1_RTS / USBDP / CAN_TX / TIM1_ETR
34 PA13 I/O FT JTMS / SWDIO PA13
35 VSS_2 S VSS_2
36 VDD_2 S VDD_2
37 PA14 I/O FT JTCK / SWCLK PA14
38 PA15 I/O FT JTDI TIM2_CH1_ETR / PA15 / SPI1_NSS
39 PB3 I/O FT JTDO PB3 / TRACESWO / TIM2_CH2 / SPI1_SCK
40 PB4 I/O FT NJTRST PB4 / TIM3_CH1 / SPI1_MISO
41 PB5 I/O PB5 I2C1_SMBAI TIM3_CH2 / SPI1_MOSI
42 PB6 I/O FT PB6 I2C1_SCL / TIM4_CH1 USART1_TX
43 PB7 I/O FT PB7 I2C1_SDA / TIM4_CH2 USART1_RX
44 BOOT0 I BOOT0
45 PB8 I/O FT PB8 TIM4_CH3 I2C1_SCL / CAN_RX
46 PB9 I/O FT PB9 TIM4_CH4 I2C1_SDA / CAN_TX
47 VSS_3 S VSS_3
48 VDD_3 S

五、启动配置

STM32 的启动配置是芯片上电 / 复位后第一个执行的硬件级配置逻辑,核心作用是指定芯片从哪个存储介质(如片内 Flash、片外 SRAM、系统存储器)读取并执行程序代码,同时初始化堆栈、中断向量表等最基础的运行环境。

设置启动配置的核心必要性在于:

  • 适配不同开发场景:开发阶段可能需要从 SRAM 快速调试代码,量产阶段需从 Flash 运行固化程序,启动配置可灵活切换程序执行的存储源;
  • 保证程序正确运行:STM32 的中断向量表、堆栈指针等核心数据需与程序存储位置匹配,错误的启动配置会导致程序无法加载、中断异常甚至芯片 "卡死";
  • 支持固件升级:通过配置启动模式(如系统存储器模式),可调用芯片内置的 BootLoader 实现串口 / USB 烧录固件,是量产和维护的基础。

在 STM32F10xxx中,可以通过 BOOT[1:0]引脚选择三种不同启动模式:

BOOT1 BOOT0 启动模式 说明
X 0 主闪存存储器 主闪存存储器被选为启动区域
0 1 系统存储器 系统存储器被选为启动区域
1 0 内置 SRAM 内置 SRAM 被选为启动区域

在系统复位后,SYSCLK 的第 4 个上升沿,BOOT 引脚的值将被锁存。用户可以通过设置 BOOT1 和 BOOT0 引脚的状态,来选择在复位后的启动模式。


文中部分知识参考:B 站 ------ 江协科技;百度百科

相关推荐
Polanda。2 小时前
ADC-常规序列的单通道转换
stm32·单片机·嵌入式硬件
崇山峻岭之间2 小时前
Matlab学习记录40
开发语言·学习·matlab
LYS_06182 小时前
寒假学习(12)(HAL库3+模数电12)
学习
lxl13072 小时前
学习C++(7)初始化列表+隐式类型转换
学习
林深现海2 小时前
【刘二大人】PyTorch深度学习实践笔记 —— 第三集:梯度下降(凝练版)
pytorch·笔记·深度学习
悠哉悠哉愿意3 小时前
【物联网学习笔记】按键
笔记·单片机·嵌入式硬件·物联网·学习
我爱我家diyer3 小时前
pwm控制器的默认输出状态
stm32·硬件工程
愚者游世3 小时前
list Initialization各版本异同
开发语言·c++·学习·程序人生·算法
szcsun53 小时前
机器学习(四)--无监督学习
人工智能·学习·机器学习