STM32--综述

文章目录

  • 前言
  • STM32简介
  • STM32F103C8T6
  • 系统结构
  • Keil软件安装注意事项
  • 新建工程操作流程

前言

本专栏将学习B站江协科技的STM32入门教程,通过自身理解和对老师的总结所写的博客专栏。

STM32简介

STM32是意法半导体(STMicroelectronics)公司推出的一系列微控制器(MCU)。作为嵌入式单片机,STM32旨在满足高性能、低成本和低功耗等嵌入式应用的需求。根据内核架构的不同,STM32被分为几个产品系列。

主要的产品系列包括:

  1. 主流产品:如STM32F0、STM32F1、STM32F3等,采用ARM Cortex-M0、M3和M4内核,适用于普通应用。
  2. 超低功耗产品:如STM32L0、STM32L1、STM32L4、STM32L4+等,以ARM Cortex-M0+和M4内核为基础,具有低功耗特性,适用于对功耗要求较高的应用。
  3. 高性能产品:如STM32F2、STM32F4、STM32F7、STM32H7等,采用ARM Cortex-M4和M7内核,提供更高的性能和处理能力。
    在这里插入图片描述

STM32具备丰富的外设和接口,包括通用输入输出端口(GPIO)、通用串行总线(USART、SPI和I2C)、模拟数字转换器(ADC)、定时器和计数器(TIM)、PWM输出、以太网接口等,以满足各种应用的需求。

此外,STM32还提供了丰富的开发工具和软件库,如STM32Cube软件平台和MDK-ARM开发环境等,方便开发人员进行嵌入式应用的开发和调试。

总之,STM32是一系列功能强大、灵活多样的微控制器,广泛应用于各种嵌入式系统,包括智能家居、工业自动化、汽车电子、医疗设备等领域。

STM32F103C8T6

在这里插入图片描述
这是我们所用的STM32系列中的一个型号芯片,特点是高性能、低功耗、有多种通信接口等。
在这里插入图片描述
这是它的片上资源。后续介绍将会用到这些资源。
在这里插入图片描述
这是它的命名规则。

系统结构

在这里插入图片描述
四个驱动单元
─ Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
─ 通用DMA1和通用DMA2

驱动单元是指在嵌入式系统中用于控制和驱动外部设备的部件和模块。它们通常包含了硬件接口电路和相关的软件代码,用于外部设备进行通信和控制

三个被动单元
─ 内部SRAM
─ 内部闪存存储器
─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备

被动单元是指在嵌入式系统中用于接收和传输数据的部件或模块。它们通常不具备主动控制外设能力。被动单元可以包括传感器、接收器和输入设备等。

存储器
包含闪存(Flash)和随机访问存储器(SRAM)。闪存用于存储程序代码和非易失性数据,而SRAM用于临时数据存储和堆栈操作。

ICode总线
该总线将Cortex™-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。

DCode总线
该总线将Cortex™-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。

系统总线
此总线连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。

DMA总线
此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。

总线矩阵
总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。产品中总线矩阵包含4个驱动部件(CPU的DCode、系统总线、 DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、 SRAM、 FSMC和AHB2APB桥)。

AHB/APB桥(APB)
两个AHB/APB桥在AHB和2个APB总线间提供同步连接。 APB1操作速度限于36MHz, APB2操作于全速(最高72MHz)。

在我们的操作中,一般只从AHB总线开始操作,桥接连接到我们的外设资源,通过编程代码程序来实现我们想要的结果

在这里插入图片描述
这是STM32上的引脚定义。

在这里插入图片描述
STM32的系统电路。

Keil软件安装注意事项

1.确保软件的安装路径不要出现中文!
很多人在安装软件习惯用中文的文件夹,但这是一款外国软件;倘若你安装路径出现中文字,那么将会在编写程序中所有代码都是黑色的,且不能自动补全。
在这里插入图片描述
不会出现图片中的情况。
那么解决方法是
首先把中文改为英文的,然后打开软件的文件夹,
在这里插入图片描述

打开这个文件
在这里插入图片描述
将里面所有路径出现中文改为你所改的路径即可。
没有这一步,后面的自动补全是没有办法操作的。

2.自动补全问题
在这里插入图片描述
点这个扳手,选择Text Compltion
在这里插入图片描述
在这里插入图片描述
都勾上并为3;

  1. 显示行数问题
    在这里插入图片描述
    将选项即可。

新建工程操作流程

在这里插入图片描述
首先我们需要将固件库中的库函数进行复制;

固件库可以自己官网搜索对应的型号进行下载或者直接下载江协老师的文件包

在自己的工程文件夹中建立这三个文件夹
在这里插入图片描述
在这里插入图片描述
按照这个路径,将inc和src中文件的内容全部复制进Library中;
在这里插入图片描述
按照这个路径,将所选文件全部放入Start中(arm中文件全选);
在这里插入图片描述
按照这个路径,将所选文件放入User中;

然后打开软件,在对应的工程文件夹中新建工程;
在这里插入图片描述
打开这个三色箱子
在这里插入图片描述
在Group中添加跟刚才创建文件夹一样的名字,然后在对应的文件夹中添加文件;
之后打开魔法棒,选择C/C++,在difine中包含这句命令;
在这里插入图片描述

包含路径中选择刚才创建的三个文件夹即可;

最后,
在这里插入图片描述
打开魔法棒,选择Dubug,选择ST-Link,最后选择设置
![在这里插入图片描述](https://img-blog.csdnimg.cn/42788d07b2b44035bd3d4586
在这里插入图片描述

如果Port没有选择SW记得选上,Pack把它勾上;
这样我们就设置好了工程;

而我们要做这么麻烦的设置,是因为ST公司已经为我们提供了库函数,在我们使用的时候,只需要调用对应的函数,就能执行对应的操作,方便我们不必要的程序编写

创建好后,我们把main函数中的内容删除,就可以编辑我们想要的内容了;然后在软件中跑起,如果程序没有报错,那么说明程序操作是没有问题的;
当我们想要重新创建另外的工程文件时,只需要复制这个模板文件夹,然后修改文件夹名称,打开执行文件,然后直接在main文件操作即可

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

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

相关文章

Clash 意外退出后 chrome / google 谷歌 浏览器无法连接互联网

解决方案: 以管理员模式打开命令行,输入:netsh winsock reset ,然后重启电脑 如果还不行的话, 在 chromevs中选中 设置>隐私和安全>安全>使用安全 dns> 使用您当前的服务提供商 即可

无涯教程-Perl - if...elsif...else语句函数

if 语句后可以跟可选的 elsif ... else 语句,这对于使用单个if ... elsif语句测试各种条件非常有用。 if...elsif...else - 语法 Perl编程语言中的 if ... elsif...else语句的语法是- if(boolean_expression 1) {# Executes when the boolean expression 1 is tr…

Docker 安装 Tomcat

目录 一、查看 tomcat 版本 二、拉取 Tomcat Docker 镜像 三、创建 Tomcat 容器 四、访问 Tomcat 五、停止和启动容器 一、查看 tomcat 版本 访问 tomcat 镜像库地址:https://hub.docker.com/_/tomcat,可以通过 Tags 查看其他版本的 tomcat; 二、拉…

el-select控制单选还是多选

<el-form :inline"true" :model"form" class"demo-form-inline"><el-form-item><el-select v-model"form.properties_id" placeholder"请选择样品性质" clearable :multiple"multiple_properties"…

[Linux]基础IO详解(系统文件I/O接口、文件描述符、理解重定向)

hello&#xff0c;大家好&#xff0c;这里是bang___bang_ &#xff0c;今天和大家谈谈Linux中的基础IO&#xff0c;包含内容有对应的系统文件I/O接口&#xff0c;文件描述符&#xff0c;理解重定向。 目录 1️⃣初识文件 2️⃣ 系统文件I/O接口 &#x1f359;open &#x1…

8.12常见的锁策略

1.悲观锁和乐观锁 悲观锁:预测场景中,非常容易出现锁冲突. 乐观锁:预测场景中,不太会出现锁冲突. 2.重量级锁和轻量级锁(和1有关联) 重量级锁:加锁开销比较大. 轻量级锁:加锁开销比较小. 开销:时间和占用系统资源. 3.自旋锁和挂起等待锁 自旋锁:轻量级锁的一种实现.在用…

SolidWorks 3D Interconnect介绍

目前市面上有的三维设计软件有很多&#xff0c;如UG、Pro/E、CATIA等&#xff0c;而且每个三维设计软件都会生成自己文件格式。由于产品设计的原因&#xff0c;我们避免不了的会需要去使用不同三维设计软件的文件&#xff0c;这对于工程师来说其实是一件比较麻烦的事。 为什么…

使用隧道HTTP时如何解决网站验证码的问题?

使用代理时&#xff0c;有时候会遇到网站验证码的问题。验证码是为了防止机器人访问或恶意行为而设置的一种验证机制。当使用代理时&#xff0c;由于请求的源IP地址被更改&#xff0c;可能会触发网站的验证码机制。以下是解决网站验证码问题的几种方法&#xff1a; 1. 使用高匿…

一篇文章教会你一个优秀的程序员如何维护好自己的电脑

程序员如何维护好自己的电脑 1. 程序员的电脑种类都有哪些2. 硬件如何维护2.1 开关机问题2.2 Windows更新问题2.3 笔记本充电和电池问题2.4 笔记本清灰问题 3. 系统及软件维护3.1 杀毒软件和垃圾清理问题3.2 磁盘分盘问题3.3 浏览器和搜索引擎的选择3.4 系统备份和PE盘的使用 总…

VUE框架:vue2转vue3全面细节总结(2)导航守卫

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人_python人工智能视觉&#xff08;opencv&#xff09;从入门到实战,前端,微信小程序-CSDN博客 最新的uniapp毕业设计专栏也放在下方了&#xff1a; https://blog.csdn.net/lbcy…

Dockerfile构建mysql

使用dockerfile构建mysql详细教学加案例 Dockerfile 文件 # 使用官方5.6版本&#xff0c;latest为默认版本 FROM mysql:5.6 #复制my.cof至容器内 ADD my.cnf /etc/mysql/my.cof #设置环境变量 密码 ENV MYSQL_ROOT_PASSWORD123456my.cof 文件 [mysqld] character-set-server…

捕捉时刻:将PDF文件中的图像提取为个性化的瑰宝(从pdf提取图像)

应用场景&#xff1a; 该功能的用途是从PDF文件中提取图像。这在以下情况下可能会很有用&#xff1a; 图片提取和转换&#xff1a;可能需要将PDF文件中的图像提取出来&#xff0c;并保存为单独的图像文件&#xff0c;以便在其他应用程序中使用或进行进一步处理。例如&#xff…