STM32 快速入门(内核架构,启动方式,开发参考资料,芯片选型)

article/2025/8/28 0:48:13

文章目录

    • 1、启动方式(Start up)
    • 2、开发参考资料
      • 2.1 STM32 中文参考手册
    • 3、通常的芯片选型步骤
    • 4、存储器和总线构架
      • 4.1 系统构架
        • 4.1.1 ICode 总线
        • 4.1.2 DCode 总线
        • 4.1.3 系统总线
        • 4.1.4 DMA 总线
        • 4.1.5 总线矩阵
        • 4.1.6 AHB/APB 桥(APB)
      • 4.2 存储器组织(Memory organization)
      • 4.3 存储器映像(Memory map)
        • 4.3.1 嵌入式SRAM(Embedded SRAM)
        • 4.3.2 位段(Bit banding)
        • 4.3.3 嵌入式闪存(Embedded Flash memory)
    • 5、STM32 系列产品命名规则


Cortex-M3 采用目前主流 ARM V7-M 架构,性能更加强劲,代码密度更高,性价比更高的。
Cortex-M3 处理器结合多种突破性技术,在高性能、低功耗、低成本三方面具有突破性的创新。

ST 推出了一整套 固件库,将 底层寄存器 开发全部封装成 库函数,这样使得开发人员摆脱 直接操作寄存器 的烦恼,直接操作库函数 开发自己的程序,项目开发更加快速,但是 内存利用率 稍低。
库函数开发 用牺牲程序效率换取 开发速度,而 寄存器开发 牺牲开发速度换取程序 运行效率

STM32是一个微控制器产品系列的总称,这个系列专为 高性能低功耗低成本 的嵌入式应用设计的 ARM Cortex-M0M0+M3M4M7内核

内核架构 分为不同产品:

序号分类系列描述
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 的启动方式,其对应启动模式如下表:

序号BOOT0BOOT1启动模式说明
10X用户 闪存存储器用户闪存存储器,也就是 FLASH启动
210系统存储器系统存储器 启动,用于 串口下载
311SRAM启动SRAM 启动,用于在 SRAM中调试代码

一般情况下(即标准的 ISP 下载步骤)如果我们想用用串口下载代码,则必须先配置 BOOT0 为 1,BOOT1 为 0,然后按复位键,最后再通过程序下载代码。下载完以后又需要将 BOOT0 设置为 0,以便每次复位后都可以运行用户代码。

2、开发参考资料

序号资料内容
1STM32中文参考手册_V10STM32 的详细介绍,包含 各个功能模块的内部结构、所有可能的功能描述、各种工作模式的使用 和寄存器配置等详细信息
2STM32固件库使用书册函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
函数库还包括每一个外设的驱动描述应用实例
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。
每个器件的开发都由一个通用 API 驱动,API 对该驱动程序的结构,函数和参数名称都进行了标准化。
所有的驱动源代码都符合Strict ANSI-C标准,手册已经把驱动源代码文档化
3STM32F103x数据手册产品的基本配置(如内置Flash和RAM的容量、外设模块的种类和数量等),管脚的数量和分配,电气特性,封装信息,和定购代码等
4Cortex-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字节闪存存储器结构:闪存存储器有主存储块和信息块组成:

  1. 主存储块容量:
    小容量产品主存储块最大为4K×64位,每个存储块划分为32个1K字节的页(见表2)。
    中容量产品主存储块最大为16K×64位,每个存储块划分为128个1K字节的页(见表3)。
    大容量产品主存储块最大为64K×64位,每个存储块划分为256个2K字节的页(见表4)。
    互联型产品主存储块最大为32K×64位,每个存储块划分为128个2K字节的页(见表5)。
  2. 信息块容量:
    互联型产品有2360×64位(见表5)。
    其它产品有258×64位(见表2、表3 表4)。

闪存存储器接口的特性为:
(1)带预取缓冲器的读接口(每字为2×64位)
(2)选择字节加载器
(3)闪存编程/擦除操作
(4)访问/写保护
在这里插入图片描述

5、STM32 系列产品命名规则

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Sj5ph0gO.shtml

相关文章

STM32—串口使用及配置(入门详解)

目录 一、常用函数 二、状态标记变量 三、串口接收中断流程 四、串口工具 五、配置1(非中断) 六、main.c代码(非中断) 七、配置2(中断) 八、main.c代码(中断) 一、常用函数 …

stm32学习(入门2)

stm32学习心得 提示:写博客纯属第一次练手,不足之处希望多提建议 文章目录 stm32学习心得前言一、什么是串口二、观察现象在我们波特率不同的情况下我们会发现乱码ch340短接波特率不同情况下波特率相同情况下 stm32代码总结 前言 我们前面写了stm32对le…

【STM32Cube】学习笔记(六):DHT11温湿度传感器

文章目录 摘要一、简介1.DHT11数字温湿度传感器2.DHT11性能参数2.DHT11数据结构2.DHT11传输时序 二、硬件电路设计1.模块内部电路2.与单片机相连接电路 三、软件设计1.CubeMX配置2.CubeIDE代码 四、结果显示五、总结附录 摘要 本篇文章用STM32CubeMX和STM32CubeIDE软件编程&am…

STM32入门篇之DHT11温湿度传感器

目录 前言一、项目介绍1.1 项目名称1.2 项目设计思路二、硬件准备2.1 STM32F407ZGT6三、软件准备3.1 Keil53.2 STM32f407固件库3.3 STM32CudeMx3.4 STM32CudeMx的f407软件包四、项目实施4.1 硬件平台开发4.1.1 keil5安装4.1.2 STM32CudeMx安装4.1.3 BSP工程项目创建4.1.4 BSP工…

STM32单片机入门教程---STM32简介

文章目录 一.简介二.片上资源(外设)三.命名规则四.系统结构五.引脚定义六.启动配置七.最小系统电路 一.简介 STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器STM32家族系列 本次教程使用的是STM32F1系列(主流系列)ARM ARM…

关于新手学习STM32开发应该如何入门?

对于新手来说,学习STM32开发可能会感到困惑,尤其是在拿到开发板后该如何入门。在这里有嵌入式学习路线,毕设,各种项目,需要留个6。以下是部分内容概述:硬件介绍:了解STM32开发板的基本硬件组成和…

STM32_基础入门(九)_串口通讯详解

持续关注阿杰在线更新保姆式笔记~~坚持日更 参考资料: 《STM32F1开发指南-库函数版本》- 5.3 usart串口文件夹介绍 -第9章 串口实验 《STM32中文参考手册V10》-第25章通用同步异步收发器(USART) 片上外设GPIO配置 --《STM32中文参考手册V10》-8.1.11 外…

STM32cubemx教程及STM32入门(四)串口通信

STM32cubemx教程及STM32入门(四)串口通信 2022.8.24 前言 本章主要介绍串口通信的概念以及在STM32单片机上通过STM32CubeMX和HAL库进行串口通信,同时重定义了printf函数。 简介 在串行通信中,一个字符一个字符地传输&#xff…

STM32系列--从入门到精通

使用STM32也有好几个年头,起初用的开发板已经积灰了,刷干净开发板上的灰,我觉得,应该写点什么东西了,把这些年来调试走过的路,一些心得,一些体会,记录下来,希望对大家有所…

STM32 从入门到精通系列讲解 - 总目录

👦 作者介绍:Bazinga bingo,专注C语言应用硬核干货分享,潜心修炼,虚心学习,立志做嵌入式相关赛道的Top。 📕 本文收录于《STM32开发》专栏,包含STM32内部模块介绍、片内资源开发、不…

STM32入门教程第二讲

系列文章目录 STM32入门教程第二讲------介绍GPIO 目录 系列文章目录 前言 一、GPIO是什么? 1.简要介绍GPIO 2.GPIO基本结构 二.GPIO的模式介绍 (四种输入四种输出) 1.浮空输入_IN_FLOATING: ​编辑 2. 模拟输入_AIN ​编辑 3带上拉输入_IPU 4 .带下拉输…

【STM32】串口通信基本原理(超基础、详细版)

STM32F1xx官方资料: 《STM32中文参考手册V10》-第25章通用同步异步收发器(USART) 通信接口背景知识 设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。它们的区别是: 并、串行通信的区别 并行…

【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解

前言: 今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,UART中断接收,本系列教程将HAL库与STM32CubeMX结合在…

横屏切换视频(iOS基于ZFPlayer 做的横屏上下滑动切换视频的需求)

思路:全屏到某一个视频时把这个视频的上一个和下一个视频一起传到全屏播放页,滑动时通过改变播放器的位置,切换视频(说得不清楚,不多说上代码,不理解或者需要详细思路下方留言) 1,手…

网络视频播放ZFPlayer

根据项目需要,公司app需要用到视频播放功能,推荐ZFPlayer,视频播放几乎有你想要的任何样式,该博客只是为了给自己留一个以后查找的资料, 改代码可以使用ZFPlayer github地址 https://github.com/renzifeng/ZFPlayer 转…

关于ZFplayer升级3.0以后

之前2.0 版本倍速会有画面缺失的效果,升级了3.0 产品加了个新需求,滑动的时候判断是否之前学过,学过就允许拖拽,没学过就不允许拖拽 最开始我的思路是在这里添加进度条是否允许点击,比如后来发现自己太天真,这样的后果是每次到了这个对应的进度都重新开始,于是路走死了,又想着…

ZFPlayer视频播放PC 安卓都可以正常 播放,iOS端只有声音没有画面(2)

排查方式: 原生的有些视频播放不了,ijk就可以了,我就遇到过[表情][表情]。。如果你是有的能播放,有的不能播放的话,搜用到这个zfplayer的地方,把原生换成ijk 针对本例子就是注释红线地方,打开后面的第3行 2 把有问题的链接下载下来上传到优酷…

iOS--视频播放器之ZFPlayer

2019独角兽企业重金招聘Python工程师标准>>> 还是直接上代码,详情如下: 一.ZFPlayer的导入。pod ZFPlayer,头文件 #import "ZFPlayer.h" 二.在cell中使用图片看得更清晰,代码可以直接复制 图片: .h文件 .m文件 代码: // // CellShowController.h // Te…

ios 按位运算---分解ZFPlayer

按位与&(位运算时,相同为1,不同为0) 按位或 |(位运算时,有1为1,全0为0) 按位异或 ^(位运算时,相同为0,不同为1) 按位取反~&#x…

ios 视频列表处理---分解ZFPlayer

1.视频播放器添加到containerView的机制与一个普通播放器页面的不同 普通视频播放页面可以直接添加一个播放器,按照正常逻辑播放、暂停、切换等操作,而视频列表的做法是 用户触发播放动作 当点击一个cell上的播放按钮时,首先判断当前是否有其…