STM32, ST 是意法半导体, M 是 Microelectronics 的缩写, 32 表示32 位, STM32 就是指 ST 公司开发的 32 位微控制器。
ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 Cortex-M3微控制器内核。紧随其后, ST(意法半导体)公司就推出了基于 Cortex-M3 内核的 MCU—STM32。
STM32 有很多系列,可以满足市场的各种需求,从内核上分有 Cortex-M0、 M3、 M4和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。
单纯从学习的角度出发,可以选择 F1和 F4, F1代表了基础型,基于 Cortex-M3内核,主频为 72MHZ, F4 代表了高性能,基于 Cortex-M4 内核,主频 180M。
之于 F1, F4(429 系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了 LCD 控制器和摄像头接口,支持 SDRAM,
STM32F103 采用的是 Cortex-M3 内核,内核即 CPU,
TM8 和 STM32 分类
CPU 位数 | 内核 | 系列 | 描述 |
32 | Cortex-M0 | STM32-F0 | 入门级 |
STM32-L0 | 低功耗 | ||
Cortex-M3 | STM32-F1 | 基础型,主频 72M | |
STM32-F2 | 高性能 | ||
STM32-L1 | 低功耗 | ||
Cortex-M4 | STM32-F3 | 混和信号 | |
STM32-F4 | 高性能,主频 180M | ||
STM32-L4 | 低功耗 | ||
Cortex-M7 | STM32-F7 | 高性能 | |
8 | 超级版 6502 | STM8S | 标准系列 |
STM8AF | 标准系列的汽车应用 | ||
STM8AL | 低功耗的汽车应用 | ||
STM8L | 低功耗 |
— | ST M32STM32 | FF | 103 | Z | E | T | 6 |
家族 | STM32 表示 32bit 的 MCU | ||||||
产品类型 | F 表示基础型 | ||||||
具体特性 | 基础型 | ||||||
引脚数目 | Z 表示 144pin,其他常用的为 C 表示 48, R 表示 64, V 表示 100, Z 表示 144, B 表示 208, N 表示 216 | ||||||
FLASH 大小 | E 表示 512KB,其他常用的为 C 表示 256, E 表示 512, I 表示 2048 | ||||||
封装 | T 表示 QFP 封装,这个是最常用的封装 | ||||||
温度 | 6 表示温度等级为 A : -40~85° |
STM32 芯片架构简图
启动文件
启动文件在这里只是简要的介绍下,关于这个文件的详解请参考后面的《启动文件详解》章节。
名为“startup_stm32f10x_hd.s”的文件,它里边使用汇编语言写好了基本程序,当STM32 芯片上电启动的时候,首先会执行这里的汇编程序,从而建立起 C 语言的运行环境,所以我们把这个文件称为启动文件。该文件使用的汇编指令是 Cortex-M3 内核支持的指令,可参考《Cortex-M3 权威指南》 中指令集章节。
startup_stm32f10x_hd.s 文件由官方提供,一般有需要也是在官方的基础上修改,不会自己完全重写。该文件从 ST 固件库里面找到,找到该文件后把启动文件添加到工程里面即可。不同型号的芯片以及不同编译环境下使用的汇编文件是不一样的,但功能相同。
对于启动文件这部分我们主要总结它的功能,不详解讲解里面的代码,其功能如下:
初始化堆栈指针 SP;
初始化程序计数器指针 PC;
设置堆、栈的大小;
初始化中断向量表;
配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没有外部
SRAM) ;
调用 SystemIni() 函数配置 STM32 的系统时钟。
设置 C 库的分支入口“__main”(最终用来调用 main 函数) ;