STM32--综述

news/2024/5/11 16:27:39/文章来源:https://blog.csdn.net/m0_74068921/article/details/132130548

文章目录

  • 前言
  • 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.luyixian.cn/news_show_152428.aspx

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

相关文章

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 4 日论文合集)

文章目录 一、分割|语义相关(6篇)1.1 Point2Mask: Point-supervised Panoptic Segmentation via Optimal Transport1.2 Weakly Supervised 3D Instance Segmentation without Instance-level Annotations1.3 LiDAR-Camera Panoptic Segmentation via Geometry-Consistent and S…

ACL访问控制列表

ACL介绍 acl: 访问控制列表 步骤: 创建一个访问控制规则调用这个规则 ACL的分类和标识 ACL的匹配顺序以及匹配结果 拓扑图 配置 # 首先通过三层交换的实验做一次 ....## 检测ip地址 display ip interface brief## 在交换机2上做配置 [S2]acl name test ?IN…

【神经网络手写数字识别-最全源码(pytorch)】

Torch安装的方法 学习方法 1.边用边学,torch只是一个工具,真正用,查的过程才是学习的过程2.直接就上案例就行,先来跑,遇到什么来解决什么 Mnist分类任务: 网络基本构建与训练方法,常用函数解析…

【Linux命令详解 | cd命令】Linux系统中用于更改当前工作目录的命令

文章标题 简介一,参数列表二,使用介绍1. 使用cd命令切换到特定目录2. 使用cd命令与路径相关的特殊字符3. 使用cd命令切换到包含空格的目录4. 使用cd命令切换到前一个和后一个目录5. 使用cd命令切换到用户的主目录6. 使用cd命令与绝对路径和相对路径 总结…

【项目流程】前端项目的开发流程

1. 项目中涉及的所有角色及其职责 - PM 产品经理 产品经理(Product Manager,简称PM)负责明确和定义产品的愿景和战略,与客户、用户、业务部门和其他利益相关者进行沟通,收集并分析他们的需求和期望。负责制定产品的详…

TCP三次握手,四次挥手理解

1. 三次握手 *三次握手(Three-way Handshake)*其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实…

前端学习---vue2--选项/数据--data-computed-watch-methods-props

写在前面: vue提供了很多数据相关的。 文章目录 data 动态绑定介绍使用使用数据 computed 计算属性介绍基础使用计算属性缓存 vs 方法完整使用 watch 监听属性介绍使用 methodspropspropsData data 动态绑定 介绍 简单的说就是进行双向绑定的区域。 vue实例的数…

MPU6050

偏航角(Yaw) 横滚角(ROll) 俯仰角(Pit) 误差 mpu6050里面有一个受力的东西 受重力影响的电容 某个导体就往下一点 根据fma就可以算出当前的加速度值 加速度传感器只输出加速度 知道重力加速度和重力的角度可…

C++入门之stl六大组件--List源码深度剖析及模拟实现

文章目录 前言 一、List源码阅读 二、List常用接口模拟实现 1.定义一个list节点 2.实现一个迭代器 2.2const迭代器 3.定义一个链表,以及实现链表的常用接口 三、List和Vector 总结 前言 本文中出现的模拟实现经过本地vs测试无误,文件已上传gite…

java: 非法字符: ‘\ufeff‘

遇到这种情况是编码转换问题 解决办法: 单个文件:可以先将格式转换为utf-16,然后在转换回utf-8 多个文件:在setting-file encodings将乱码的这个文件夹里的所有Java文件都设置utf-8格式就可以了

小成本大幅度增幅CNN鲁棒性,完美的结合GLCM+CNN

本文以实验为导向,使用vgg16GLCM实现一场精彩的新冠肺炎的分类识别,并且对比不加GLCM后的效果。在这之前,我们需要弄明白一些前缀知识和概念问题: GLCM(Gray-Level Co-occurrence Matrix),中文称…

比特鹏哥-数据类型和变量【自用笔记】

这里写目录标题 1.数据类型介绍字符,整型,浮点型,布尔类型 2.signed 和unsigned3.数据类型的取值范围sizeof 展示字节大小--- 计算机中单位:字节 4.变量 常量4.1 变量创建变量(数据类型 变量名)创建变量的时…

基于react-native的简单消息确认框showModel

基于react-native的简单消息确认框showModel 效果示例图组件代码ShowModel/index.jsx使用案例device.js安装线性渐变色 效果示例图 组件代码ShowModel/index.jsx import React, {forwardRef, useImperativeHandle, useState} from react; import {View,Text,Modal,TouchableOp…

2023,哪些大厂不再值钱?

2023年,摘下口罩的第一年,虽然经济复苏没那么强劲,但对于在资本寒冬中熬了许久的互联网科技股来说,春天的步伐好像越来越近了。今年以来,主要互联网科技公司的股价基本都涨了不少,尤其美国那边,…

ROS添加发布者和订阅者机制实现

一. ROS的节点和包 ✨Node: ROS的基本单位,实现某个功能的节点。比如实现超声波传感器就是一个节点,雷达传感器就可以是一个节点 ✨Package: 多个有联系的节点组成的单位,比如你要控制无人机姿态,可能需要…

【Linux命令详解 | pwd命令】Linux系统中用于显示当前工作目录的命令

文章标题 简介一,参数列表二,使用介绍1. pwd命令的基本使用2. pwd命令中的参数3. pwd命令的工作机制4. pwd命令的实际应用 总结 简介 pwd命令是Linux中的基础命令之一,使用该命令可以快速查看当前工作目录。在掌握Linux命令时,pw…

在Raspberry Pi 4上安装Ubuntu 20.04 + ROS noetic(不带显示器)

在Raspberry Pi 4上安装Ubuntu 20.04 ROS noetic(不带显示器) 1. 所需设备 所需设备: 树莓派 4 B 型 wifi microSD 卡:最小 32GB MicroSD 转 SD 适配器 (可选)显示器,鼠标等 2. 树莓派…

CDN安全面临的问题及防御架构

CDN安全 SQL注入攻击(各开发小组针对密码和权限的管理,和云安全部门的漏洞扫描和渗透测试) Web Server的安全(运营商和云安全部门或者漏洞纰漏第三方定期发布漏洞报告修复,例如:nginx版本号和nginx resol…

Spring5.2.x 源码使用Gradle成功构建

一 前置准备 1 Spring5.2.x下载 1.1 Spring5.2.x Git下载地址 https://gitcode.net/mirrors/spring-projects/spring-framework.git 1.2 Spring5.2.x zip源码包下载,解压后倒入idea https://gitcode.net/mirrors/spring-projects/spring-framework/-/…

《数据同步-NIFI系列》Nifi配置UpdateAttribute实现字符串时间戳转日期

Nifi配置UpdateAttribute实现字符串时间戳转日期 数据处理流程如下:查询源数据库,将Avro转为Json格式,然后使用EvaluateJsonPath修改字段名,最后使用replaceText将参数组成SQL,最后PutSQL。 一、字段串时间戳导致无法插…