STM32学习之一:什么是STM32
目录
1.什么是STM32
2.STM32命名规则
3.STM32外设资源
4. STM32的系统架构
5. 从0到1搭建一个STM32工程
学习stm32已经很久了,因为种种原因,也有很久一段时间没接触过stm32了。等我捡起来的时候,发现很多都已经忘记了,重新捡起来吧。
每次谈到stm32如何如何,那么该如何解释什么是stm32呢?
1.什么是STM32
stm32 是ST公司基于ARM Cortex-M内核开发的32位微控制器,它是一个微控制器产品系列的总称。观看stm32的技术参考手册可以发现,stm32有很多子系列:stm32小容量产品,stm32中容量产品、stm32大容量产品和STM32互联型产品;按照功能上划分,又可分为STM32F101xxx,STM32F102xxx,STM32F103xxx系列。
注:
1. 技术参考手册对每种功能模块都分一个章节,详细描述了包含了各个功能模块的内部结构,所有可能的功能描述,以及各种工作模式的使用和寄存器配置等详细信息。因此不论使用何种STM32产品,在编程阶段,都需要参考技术参考手册来完成对STM32的驱动。
数据手册包含了产品的基本配置,如内置Falsh和RAM容量、外设模块的种类和数量等,管教的数量和分配,电气特性,封装信息等。在设计硬件电路时,是非常有帮助的。
技术参考手册(对应STM32微控制器产品)和数据手册(对应不通种类的STM32)涵盖了STM32的所有信息,因此学习STM32,这些手册是少不了的,不仅少不了,还应该多看看,多理解手册内容,这对我们理解STM32功能以及编写代码、或者调试相关项目的时候都是很有帮助的。
在此处附上STM32微控制器的技术参考手册:以及STM32F103xxx中容量产品的数据手册:cd00161566.pdf (st.com),其余产品数据手册可以st.com官网寻找。
2. ARM Cortex-M 是ARM公司设计的ARM内核架构之一,除此之外,还包含A核和R核。
ARM Cortex-A核专注于高效处理多线程和多任务,适用于智能手机、平板电脑等领域。
ARM Cortex-R核专注于实时性和可预测性,适用于汽车电子控制器等需要实时响应的领域。
ARM Cortex-M核专注于低功耗和实时控制,适用于小型嵌入式系统。
参考:https://zhuanlan.zhihu.com/p/665194718
2.STM32命名规则
上面说到STM32有很多种产品,例如STM32F103C8T6等等,他为什么叫这个名字,这个名字代表了什么?翻开技术参考手册第三页,详细解释了STM32系列产品命名规则。
由上图可见,STM32表示基于ARM核心的32位微控制器;
F表示通用类型,103表示增强型,C代表引脚数目,8表示闪存存储器容量,T表示LQFP封装,6表示芯片可以在-40℃~85℃温度范围下工作。
3.STM32外设资源
谈到STM32,离不开其丰富的外设资源,那么STM32都有那些外设,详看下图:
下图来自:哔哩哔哩--江协科技up的STM32课程资料,强推大家看,up讲的非常好
这些外设资源是学习STM32最基础的内容,以后学习过程中要了解到每个外设的功能、内部结构、如何使用等,只有了解这些,才能得心应手的驱动外设,编写代码,实现想要的功能。
注:并不是所有的STM32产品都有这些外设,STM32产品系列不同,片上外设资源也不尽相同,同样的,技术参考手册第4-5页详细说明了各个系列产品所包含的外设。
4. STM32的系统架构
ICode指令总线,DCode数据总线,System系统总线
其中ICode总线和DCode总线主要是用来连接Flash闪存的,(Flash里面存储于的就是我们编写的程序),ICode总线就是用来加载程序指令的。DCode数据总线是用来加载数据的,例如常量和调试数据等。
System系统总线连接到SRAM(存储程序运行时的变量数据)、FSMC
AHB系统总线就是用来挂载各种外设的,AHB表示先进高性能总线,挂载的一般是最基本的或者是性能比较高的外设,比如复位和时钟控制这些最基本的电路。
后面有两个桥接,桥接1和桥接2连接到了APB2和APB1两个外设总线上,APB总线的意思是先进外设总线,用于连接一般的外设。因为AHB和APB的总线协议、总线速度、还有数据传送格式的差异,所以中间需要两个桥接来完成数据的转换和缓存。
AHB的整体性能比APB高一些,其中APB2的性能又比APB1性能高些,了解外设挂载在那个总线上就可以。
DMA主要做数据搬运这种简单但需要反复使用的场景,DMA拥有和CPU一样的总线控制权,用于访问各种外设,当需要DMA进行数据搬运时,外设就会通过请求线发送DMA请求。然后DMA获得总线控制权,访问并转运数据,整个过程不需要CPU参与,使得CPU可以解放出来干其他事情。就相当于一个CPU的小秘书,用于直接读取外设的数据。比如遇到大量数据搬运这种情况,使用CPU来进行搬运太浪费时间了(费时费力,简单的数据搬运可以使用DMA)
5. 从0到1搭建一个STM32工程
本地新建一个Project文件用来存放STM32工程,STM32工程文件较多,可以分几个文件夹存储文件,例如Start文件夹用来存储STM32所需的启动文件,Library文件夹用来存放STM32的各种外设文件,User文件夹用来存放main等相关文件,之后如果我们自己写相关模块的驱动文件,也可以创建一个文件夹(例如BSP)来存放模块的驱动文件。
STM32工程所需库文件,可以在https://www.st.com/en/embedded-software/stsw-stm32054.html地址下载,下载下来后我们来填充这几个文件夹的内容。
首先是Start文件夹:
注意,start文件夹中start_up开头的几个汇编文件,不需要全部放到STM32工程中,需要找到自己芯片对应的容量,选择对应的容量进行添加,例如使用STM32F103C8T6,属于中容量,则选择md,使用STM32F103ZET6,属于大容量,则选择ld。
其次Library文件夹:
最后是User文件夹:
这样,文件夹内容就填充好了,下面我们将该文件拓扑在Keil5中复制一份。
但是此刻,keil工程并不知道我们头文件的路径,因此还需将各种包含的头文件在Keil中配置下。
上图还有一个框到的绿色部分,这个宏定义的来源可以查看stm32f10x.h文件。
之后编译一下,可以看到0error,至此,STM32工程搭建完毕!
相关文章:

STM32学习之一:什么是STM32
目录 1.什么是STM32 2.STM32命名规则 3.STM32外设资源 4. STM32的系统架构 5. 从0到1搭建一个STM32工程 学习stm32已经很久了,因为种种原因,也有很久一段时间没接触过stm32了。等我捡起来的时候,发现很多都已经忘记了,重新捡…...

AI绘画Stable Diffusion 超强一键去除图片中的物体,免费使用!
大家好,我是设计师阿威 在生成图像时总有一些不完美的小瑕疵,比如多余的物体或碍眼的水印,它们破坏了图片的美感。但别担心,今天我们将介绍一款神奇的工具——sd-webui-cleaner,它可以帮助我们使用Stable Diffusion轻…...

零基础STM32单片机编程入门(一)初识STM32单片机
文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据…...
Github上前十大开源Rust项目
在github上排名前十的Rust开源项目整理出来与大家共享,以当前的Star数为准。 Deno Deno 是 V8 上的安全 TypeScript 运行时。Deno 是一个建立在V8、Rust和Tokio之上的 JavaScript、TypeScript 和 WebAssembly 的运行时环境,具有自带安全的设置和出色的开…...

硬件开发笔记(二十):AD21导入外部下载的元器件原理图库、封装库和3D模型
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139707771 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...

竞赛选题 python opencv 深度学习 指纹识别算法实现
1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python opencv 深度学习 指纹识别算法实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:4分创新点:4分 该项目较为新颖…...

RK3568开发笔记(三):瑞芯微RK3588芯片介绍,入手开发板的核心板介绍
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139905873 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
EtherCAT主站IgH解析(二)-- 如何将Igh移植到Linux/Windows/RTOS等多操作系统
版权声明:本文为本文为博主原创文章,转载请注明出处 https://www.cnblogs.com/wsg1100 如有错误,欢迎指正。 本文简单介绍如何将 igh 移植到 zephyr、freertos、rtems、rtthread等RTOS ,甚至 windows 上。 ##前言 目前࿰…...
ansible copy模块参选选项
copy模块用于将文件从ansible控制节点(管理主机)或者远程主机复制到远程主机上。其操作类似于scp(secure copy protocol)。 关键参数标红。 参数: src:(source:源) 要复制到远程…...
展厅设计主要的六大要素
1、从创意开始 展示设计的开始必须创意在先。根据整体的风格思路进行创意,首先要考虑的是主体的造型、大小高度位置以及它和周围展厅的关系。另外其他道具设计制作与运作方式也必须在创意中有明确的体现。 2、平面感 平面感是指对展示艺术设计平面图纸审美和功能两个…...

【数据结构与算法】最小生成树,Prim算法,Kruskal算法 详解
最小生成树的实际应用背景。 最节省经费的前提下,在n个城市之间建立通信联络网。 Kruskal算法(基于并查集) void init() {for (int i 1; i < n; i) {pre[i] i;} }ll root(ll a) {ll i a;while (pre[i] ! i) {i pre[i];}return i p…...

【启明智显产品分享】Model3工业级HMI芯片详解系列专题(三):安全、稳定、高防护
芯片作为电子设备的核心部件,,根据不同的应用领域被分为不同等级。工业级芯片适用于工业自动化、控制系统和仪器仪表等领域,对芯片的安全、稳定、防护能力等等有着较高的要求。这些芯片往往需要具备更宽的工业温度范围,能够在更恶…...

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用
【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用 1、强引用(Strong Reference)2、软引用(Soft Reference)3、弱引用(Weak Reference)4、虚引用(Phantom Reference…...
对称/非对称加密
对称加密和非对称加密是两种主要的加密方式,用于保护数据的机密性和完整性。它们在密钥的使用和管理上有着显著的不同。 对称加密 原理 对称加密(Symmetric Encryption)使用相同的密钥进行加密和解密。这意味着发送方和接收方必须共享相同…...
DDei在线设计器-API-DDeiSheet
DDeiSheet DDeiSheet是代表一个页签,一个页签含有一个DDeiStage用于显示图形。 DDeiSheet实例包含了一个页签的所有数据,在获取后可以通过它访问其他内容。DDeiFile中的sheets属性记录了当前文件的页签列表。 一个DDeiFile实例至少包含一个DDeiSheet…...
随想录 Day 69 并查集 107. 寻找存在的路径
随想录 Day 69 并查集 107. 寻找存在的路径 理论基础 int n 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好 vector<int> father vector<int> (n, 0); // C里的一种数组结构// 并查集初始化 void init() {for (int i 0; i < n; i)…...

Hi3861 OpenHarmony嵌入式应用入门--LiteOS Mutex
CMSIS 2.0接口中的Mutex(互斥锁)是用于在多线程环境中保护共享资源的访问机制。Mutex(互斥锁)是一种特殊的信号量,用于确保同一时间只有一个线程可以访问特定的共享资源。 在嵌入式系统或多线程应用中,当多…...

使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集
文章目录 一、什么是“软件I2C”和“硬件I2C”1.1 什么是“软件I2C”1.2 什么是“硬件I2C” 二、软件I2C和硬件I2C2.1 软件模拟2.2硬件I2C 三、配置STM32CubeMX四、配置keil代码4.1 创建文件4.2 复制文件4.3 在keil中添加文件4.4 添加路径4.5 代码修改 五、硬件连接六、总结 一…...

Huffman树——AcWing 148. 合并果子
目录 Huffman树 定义 运用情况 注意事项 解题思路 AcWing 148. 合并果子 题目描述 运行代码 代码思路 其它代码 代码思路 Huffman树 定义 它是一种最优二叉树。通过构建带权路径长度最小的二叉树,经常用于数据压缩等领域。 运用情况 在数据压缩中&a…...

05 Pytorch 数据读取 + 二分类模型
05 Pytorch 数据读取 二分类模型05 Pytorch 数据读取 二分类模型05 Pytorch 数据读取 二分类模型 01 数据读取 DataLoader(set作为参数) 02 Dataset 从哪读,怎么读? 功能:数据从哪里读取? 如何读取…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...