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工程搭建完毕!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/364408.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析报告制作的结构和思路整理

先画重点:一份分析报告的制作,目前的市场的分析步骤是优先找一些别人的研究报告,现成的东西,重点是要好好总结业务逻辑和潜在运营可能,这也是一位优秀数据分析师的价值体现。 举个例子,以目前小说短剧赛道的…

SQL33 找出每个学校GPA最低的同学 解法详解

题目截图: 建表代码: drop table if exists user_profile; CREATE TABLE user_profile ( id int NOT NULL, device_id int NOT NULL, gender varchar(14) NOT NULL, age int , university varchar(32) NOT NULL, gpa float, active_days_within_30 int…

虚拟服务器ESXI上Win11虚拟机安装EnspPro(Window系统安装EnspPro方法)

华为于2023年6月30日发布EnspPro,因其对部署环境使用较高(常见8核16GB电脑支持模拟3~6个设备,如果要模拟多台设备大规模组网,则建议使用高性能服务器部署安装),本次将其部署再虚拟服务器中。 环境&#xf…

MySQL高级-MVCC-基本概念(当前读、快照读)

文章目录 1、MVCC基本概念1.1、当前读1.1.1、创建表 stu1.1.2、测试 1.2、快照读 1、MVCC基本概念 全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个…

【motan rpc 懒加载】异常

文章目录 升级版本解决问题我使用的有问题的版本配置懒加载错误的版本配置了懒加载 但是不生效 lazyInit"true" 启动不是懒加载 会报错一次官方回复 升级版本解决问题 <version.motan>1.2.1</version.motan><dependency><groupId>com.weibo…

mysql中in参数过多优化

优化方式概述 未优化前 SELECT * FROM rb_product rb where sku in(1022044,1009786)方案2示例 public static void main(String[] args) {//往list里面设置3000个值List<String> list new ArrayList<>();for (int i 0; i < 3000; i) {list.add(""…

人生最有力,最棒的十句话!

人生最有力&#xff0c;最棒的十句话 1、允许一切事发生&#xff0c;所有一切发生的事不是你能阻挡了的&#xff0c;你接受&#xff0c;他也发生&#xff0c;你不接受&#xff0c;他也发生&#xff0c;你还不如坦然面对接受现实。 2、你焦虑的时候千万不要躺着啥也不干&#xf…

【多维动态规划】Leetcode 97. 交错字符串【中等】

交错字符串 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 子字符串 是字符串中连续的 非空 字符序列。 s s1 s2 … snt…

什么是产线工控安全,如何保障产线设备的安全

什么是产线工控安全&#xff1f; 工控&#xff0c;指的是工业自动化控制&#xff0c;主要利用电子电气、机械、软件组合实现。即是工业控制系统&#xff0c;或者是工厂自动化控制。产线工控安全指的是工业控制系统的数据、网络和系统安全。随着工业信息化的迅猛发展&#xff0…

开源项目-商城管理系统

哈喽,大家好,今天主要给大家带来一个开源项目-商城管理系统 商城管理系统分前后端两部分。前端主要有商品展示,我的订单,个人中心等内容;后端的主要功能包括产品管理,门店管理,会员管理,订单管理等模块 移动端页面

J018_冒泡排序

一、排序过程 如果要对一个数组进行升序排序&#xff1a; 每个轮次两两数字进行比较&#xff0c;如果前面的数字大于后面的数字&#xff0c;则交换两个数字的位置&#xff1b;如果前面的数字小于或等于后面的数字&#xff0c;则这两个数字位置不变。直到把数组中所有数字比较…

核方法总结(四)——高斯过程回归学习笔记

一、定义 基于核方法的线性回归模型和传统线性回归一样&#xff0c;可以用未知数据进行预测&#xff0c;但不能确定 预测的可信度。在参考书第二章中可知&#xff0c;基于贝叶斯方法可以实现对未知数据依概率预测&#xff0c;进而可得到预测的可信度。这一方法中&#xff0c;通…

深度解析:机器学习如何助力GPT-5实现语言理解的飞跃

文章目录 文章前言机器学习在GPT-5中的具体应用模型训练与优化机器翻译与跨语言交流&#xff1a;情感分析与问答系统&#xff1a;集成机器学习功能&#xff1a;文本生成语言理解任务适应 机器学习对GPT-5性能的影响存在的挑战及解决方案技术细节与示例 文章前言 GPT-5是OpenAI公…

Kotlin中对空的很多处理

代码图片直观效果 逐行解释Kotlin中对空的各种情况的使用 private fun testNull() {val flag 1var name: String? nullvar user: User? // 有警告, 因为下面的赋值可以和这一行定义合并var zhangUser: User? User()var wangUser: User User() // 提示Explicitly given t…

【Linux】使用ntp同步时间

ntp介绍 NTP&#xff08;Network Time Protocol&#xff0c;网络时间协议&#xff09;是一种用于同步计算机时间的协议&#xff0c;工作在UDP的123端口上。它是一种客户端-服务器协议&#xff0c;用于同步计算机的时钟。通过连接到网络上的时间服务器&#xff0c;计算机可以获…

在开发板上抓包的方法

1.tcpdump tcpdump -i lo -s0 -w /user/lo.pcap tcpdump: 启动 tcpdump 工具&#xff0c;用于捕获网络数据包。-i lo: 指定监听的网络接口为 lo&#xff0c;这里的 lo 是本地回环接口&#xff08;loopback interface&#xff09;&#xff0c;用于本机内部通信。-s0: 设置抓取…

SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)

在你的项目中&#xff0c;有没有遇到用户重复提交的场景&#xff0c;即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价&#xff0c;本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交&#xff0c;并通过我们的自定义注解来进行封装功能。 首先&a…

[数据集][目标检测]电力场景下电柜箱门把手检测数据集VOC+YOLO格式1167张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1167 标注数量(xml文件个数)&#xff1a;1167 标注数量(txt文件个数)&#xff1a;1167 标注…

操作系统(OS)

1.1.1操作系统的概念&#xff08;定义&#xff09; 操作系统&#xff08;Operation System&#xff0c;OS&#xff09;是指控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配&#xff1b;&#xff08;操作系统是系统资源的管理者…

苹果电脑插上移动硬盘没反应怎么回事 苹果笔记本移动硬盘无法写入 苹果电脑读取不到移动硬盘数据怎么办 移动硬盘连接苹果电脑无法读取的解决方案

通常情况下&#xff0c;当我们把硬盘接到苹果电脑上&#xff0c;我们是可以读取它的。但也有用户遇到过这种情况&#xff0c;就是苹果电脑无法正常读取硬盘&#xff0c;这是怎么造成的呢&#xff1f; 一、硬盘在苹果电脑上读取不出来的原因是什么&#xff1f; 硬盘在苹果电脑上…