Cortex-M3 采用目前主流 ARM V7-M 架构,性能更加强劲,代码密度更高,性价比更高的。
Cortex-M3 处理器结合多种突破性技术,在高性能、低功耗、低成本三方面具有突破性的创新。
ST 推出了一整套 固件库
,将 底层寄存器
开发全部封装成 库函数
,这样使得开发人员摆脱 直接操作寄存器
的烦恼,直接操作库函数
开发自己的程序,项目开发更加快速,但是 内存利用率
稍低。
库函数开发
用牺牲程序效率换取 开发速度
,而 寄存器开发
牺牲开发速度换取程序 运行效率
。
STM32是一个微控制器产品系列的总称,这个系列专为 高性能
、低功耗
、低成本
的嵌入式应用设计的 ARM Cortex-M0
,M0+
,M3
,M4
和 M7内核
。
按 内核架构
分为不同产品:
序号 | 分类 | 系列 | 描述 |
---|---|---|---|
1 | 主流产品(Mainstream) | STM32F0(M0 Entry-level:入门级) STM32F1(M3 Foundation:基础) STM32F3( M4 Mixed-signal:混合信号) | - |
2 | 高性能产品(High-performance) | STM32F2(M3 High-performance) STM32F4(M4 High-performance) STM32F7(M7 High-performance) STM32H7 | - |
3 | 超低功耗产品(Ultra-low-power) | STM32L0(M0+ Ultra-low-power) STM32L1(M3 Ultra-low-power) STM32L4(M4 Ultra-low-power) STM32L4+ | - |
4 | 无线产品 | STM32WB | - |
1、启动方式(Start up)
BOOT0,BOOT1 用于设置 STM32 的启动方式,其对应启动模式如下表:
序号 | BOOT0 | BOOT1 | 启动模式 | 说明 |
---|---|---|---|---|
1 | 0 | X | 用户 闪存存储器 | 用户闪存存储器,也就是 FLASH启动 |
2 | 1 | 0 | 系统存储器 | 系统存储器 启动,用于 串口下载 |
3 | 1 | 1 | SRAM启动 | SRAM 启动,用于在 SRAM中调试代码 |
一般情况下(即标准的 ISP 下载步骤)如果我们想用用串口下载代码,则必须先配置 BOOT0 为 1,BOOT1 为 0,然后按复位键,最后再通过程序下载代码。下载完以后又需要将 BOOT0 设置为 0,以便每次复位后都可以运行用户代码。
2、开发参考资料
序号 | 资料 | 内容 |
---|---|---|
1 | STM32中文参考手册_V10 | STM32 的详细介绍,包含 各个功能模块的内部结构 、所有可能的功能描述 、各种工作模式 的使用 和寄存器配置 等详细信息 |
2 | STM32固件库使用书册 | 函数库 是一个固件函数包 ,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。函数库还包括每一个外设的 驱动描述 和应用实例 。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。 每个器件的开发都由一个通用 API 驱动,API 对该驱动程序的结构,函数和参数名称都进行了标准化。 所有的驱动源代码都符合 Strict ANSI-C 标准,手册已经把驱动源代码文档化 |
3 | STM32F103x数据手册 | 产品的基本配置(如内置Flash和RAM的容量、外设模块的种类和数量等),管脚的数量和分配,电气特性,封装信息,和定购代码等 |
4 | Cortex-M3 权威指南 | 《Cortex-M3 权威指南》是对《STM32 参考手册》的补充,对 Cortex-M3 有非常详细的说明 |
2.1 STM32 中文参考手册
STM32微控制器产品中大多数功能模块都是在多个产品(或所有产品)中共有的 并且是相同的,因此只有一份STM32微控制器产品的 技术参考手册
对应所有这些产品。
3、通常的芯片选型步骤
步骤 | 内容 |
---|---|
1 | 首先要看数据手册 ,以评估该产品是否能够满足设计上的功能需求 |
2 | 在基本选定所需产品后,需要查看技术参考手册 ,以确定各功能模块 的工作模式 是否符合要求 |
3 | 在确定选型进入编程设计阶段时,需要详细阅读技术参考手册 ,获知各项功能的具体实现方式 和寄存器的配置使用 |
4 | 在设计硬件时还需参考数据手册 ,以获得电压、电流、管脚分配、驱动能力等信息 |
4、存储器和总线构架
4.1 系统构架
在小容量、中容量和 大容量产品中,主系统由以下部分构成:
● 四个驱动单元:
(1)Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
(2)通用DMA1和通用DMA2
● 四个被动单元
(1)内部SRAM
(2)内部闪存存储器
(3)FSMC
(4)AHB到APB的桥(AHB2APBx),它连接所有的APB设备
这些都是通过一个多级的AHB总线构架 相互连接的,如下图图1所示:
4.1.1 ICode 总线
该总线将Cortex™-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。
4.1.2 DCode 总线
该总线将Cortex™-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。
4.1.3 系统总线
此总线连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。
4.1.4 DMA 总线
此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。
4.1.5 总线矩阵
总线矩阵 协调 内核系统总线和DMA主控总线 之间的访问仲裁,仲裁利用轮换算法。
在互联型产品中,总线矩阵包含5个驱动部件(CPU的DCode、系统总线、以太网DMA、DMA1总线和DMA2总线)和3个从部件(闪存存储器接口(FLITF)、SRAM和AHB2APB桥)。
在其它产品中总线矩阵包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、SRAM、FSMC和AHB2APB桥)。
AHB外设通过总线矩阵与系统总线相连,允许DMA访问。
4.1.6 AHB/APB 桥(APB)
两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。
表1 有关连接到每个桥的不同外设的地址映射请参考 。在每一次复位以后,所有除SRAM和FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟。
注意: 当对 APB 寄存器进行 8 位或者 16 位访问时,该访问会被自动转换成 32 位的访问:桥会自动将 8 位或者 32 位的数据扩展以配合 32 位的向量。
4.2 存储器组织(Memory organization)
程序存储器(Code)、数据存储器(SRAM)、寄存器和输入输出端口(Peripherals) 被组织在同一个4GB的线性地址空间内。
数据字节以小端格式存放在存储器中。一个字里的最低地址 字节被认为是该字的 最低有效字节,而最高地址字节是 最高有效字节。.
外设寄存器的映像 请参考相关章节。
可访问的存储器空间被分成8个主要块(block),每个块为512MB。
其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间,请参考相应器件的数据手册中的存储器映像图。
4.3 存储器映像(Memory map)
请参考相应器件的数据手册中的存储器映像图。 列出了所用STM32F10xxx中内置外设的起始地址。
1.只在小容量、中容量和大容量的产品中才有这个共享的SRAM区域,互联型产品中没有这个区域。
4.3.1 嵌入式SRAM(Embedded SRAM)
STM32F10xxx内置64K字节的静态SRAM。它可以以字节、半字(16位)或全字(32位)访问。
SRAM的起始地址是0x2000 0000。
4.3.2 位段(Bit banding)
4.3.3 嵌入式闪存(Embedded Flash memory)
高性能的闪存模块有以下的主要特性:
(1)高达512K字节闪存存储器结构:闪存存储器有主存储块和信息块组成:
- 主存储块容量:
小容量产品主存储块最大为4K×64位,每个存储块划分为32个1K字节的页(见表2)。
中容量产品主存储块最大为16K×64位,每个存储块划分为128个1K字节的页(见表3)。
大容量产品主存储块最大为64K×64位,每个存储块划分为256个2K字节的页(见表4)。
互联型产品主存储块最大为32K×64位,每个存储块划分为128个2K字节的页(见表5)。 - 信息块容量:
互联型产品有2360×64位(见表5)。
其它产品有258×64位(见表2、表3 表4)。
闪存存储器接口的特性为:
(1)带预取缓冲器的读接口(每字为2×64位)
(2)选择字节加载器
(3)闪存编程/擦除操作
(4)访问/写保护