当前位置: 首页 > news >正文

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文件操作即可

相关文章:

STM32--综述

文章目录 前言STM32简介STM32F103C8T6系统结构Keil软件安装注意事项新建工程操作流程 前言 本专栏将学习B站江协科技的STM32入门教程,通过自身理解和对老师的总结所写的博客专栏。 STM32简介 STM32是意法半导体(STMicroelectronics)公司推…...

Linux学习之sed、awk和vim的差异

sed、awk和vim都是编辑器,区别如下: vim是交互式,需要跟用户进行互动,而sed和awk是非交互式,只需要写好命令,不用跟用户进行互动就可以完成任务。 vim是文本编辑器,操作的时候会对整个文件编辑&…...

MacOS上配置docker国内镜像仓库地址

背景 docker官方镜像仓库网速较差,我们需要设置国内镜像服务 我的MacOS docker版本如下 设置docker国内镜像仓库地址 点击Settings点击Docker Engine修改配置文件,添加registry-mirrors {"builder": {"gc": {"defaultKeepS…...

全志F1C200S嵌入式驱动开发(soc系统集成)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 任何一个嵌入式设备都是由很多的子系统组成的。这里面有硬件、有软件,还可能有机械,并不一定就是大家看到的消费电子那样,即一个soc构成了所有的系统。现实情况是,要构建一个系…...

React路由5版本

什么是路由? 一个路由就是一个映射关系(key:value). 以下代码用的都是router5 通过 npm install react-router-dom5 下载 所有路由用到的东西都需要从react-router-dom中引入 import {BrowserRouter,Link,Route,NavLink,Redirect,withRouter} from react-router-dom 1. 路…...

6.4.3 1x1卷积层

特点:1x1卷积层相当于全连接层 作用:1x1卷积用于调整网络层的通道数量和控制模型复杂度 输入形状:(通道,行,列) (3,3,3) 卷积核形状:(输出通道,输入通道,行,列) (2,3,…...

[CKA]考试之检查可用节点数量

由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 检查集群中有多少节点为Ready状态(不包括被打上 Taint&#xff1…...

备考错题知识点总结

错题知识点总结 强化一,错题,范围管理,128题目 1 强化练习题 1 不理解的题目 4 什么玩意? 读不懂 你正在与产品负责人一起确定可行的产品迭代计划。 当你讨论各种特性并确定它们的优先级时,你们都在努力理解哪些特…...

初识Flask:Python轻量级Web框架入门教程

Flask是一个用Python编写的轻量级Web应用框架。由于其“微”性质,Flask在提供核心服务的同时,仍然提供了许多扩展的可能性。在这篇文章中,我们将从最基础开始,学习如何使用Flask构建一个Web应用。 一、安装与初次启动 首先&…...

【BASH】回顾与知识点梳理(七)

【BASH】回顾与知识点梳理 七 七. 前六章知识点总结及练习7.1 总结7.2 练习 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 七. 前六章知识点总结及练习 7.1 总结 由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我…...

Python实现对IP网段的快速检测

前言 本文是该专栏的第33篇,后面会持续分享python的各种干货知识,值得关注。 在工作上可能会遇到这样的需求,需要你对某个IP地址的网段进行批量检测。将可用和不可用IP批量筛选出来,尤其是在爬虫项目中,对于IP可用性的检测需求较多。 那么在python中,有没有方法可以快速…...

伪操作、C和汇编、ATPCS协议

一、伪操作.global 全局.local 局部.equ 声明.macro 子函数.if .endif 条件编译.rept 重复操作.weak 弱化.word 申请一个字空间.byte 申请一个字节空间.align 地址对齐.arm ARM指令.thumb Thumb指令.text 代码段.data 数据段.space 申请N个字节空间 二、C和汇编的混合编程三、A…...

OPENCV C++(五)滤波函数+sobel边缘检测+人脸磨皮mask

滤波函数 中值滤波 medianBlur(frame, detectmat, 5); 平均滤波 blur(frame, detectmat, Size(5, 5)); 高斯滤波(最后一个是方差 越大越模糊) GaussianBlur(frame, detectmat, Size(5, 5),0); sobel的边缘检测函数 Sobel(gray, dx, CV_16S, 1, 0, 3…...

20天突破英语四级高频词汇——第②天

20天突破英语四级高频词汇~第2天加油(ง •_•)ง💪 🐳博主:命运之光 🌈专栏:英语四级高频词汇速记 🌌博主的其他文章:点击进入博主的主页 目录 20天突破英语四级高…...

【Python 学习】第一个python案例

Python的ATM机Demo 一、需要安装python环境(略) 二、ATM源码 # 初始化全局余额 money 5000# 定义初始化界面菜单函数def menu(name):"""主页面-主菜单 返回用户选择的菜单:param name: 用户名称:return: 返回菜单类型"""print(f"{name}…...

【C#学习笔记】值类型(2)

文章目录 Struct结构体类型为什么不推荐struct 元组类型可为空的值类型从可为空的值类型转换为基础类型提升的运算符如何确定可为空的值类型为什么建议少用T?装箱和取消装箱 Struct结构体类型 结构类型(“structure type”或“struct type”)是一种可封…...

【设计模式】-建造者模式

Java建造者模式:创建复杂对象的灵活构建者 在软件开发中,我们经常遇到需要创建一个复杂对象的情况。如果使用传统的构造函数进行对象创建,可能会导致构造函数参数过多,难以管理和维护。建造者模式(Builder Pattern&am…...

【N32L40X】学习笔记14-在RT-thread系统中读取eeprom数据

eeprom 说明 eeprom介绍 AT24C01A,1K串行EEPROM:内部组织16页8字节,1K需要一个7位数据字地址进行随机字寻址。AT24C02,2K串行EEPROM:内部组织32页8字节,2K需要一个8位数据字地址进行随机字寻址。AT24C04,4K串行EEPRO…...

Python OpenCV读取并显示USB UVC摄像头

1. 安装Python, 略。 2. 安装 OpenCV: pip install opencv-python 3. 预览摄像头画面脚本: import cv2cap cv2.VideoCapture(0, cv2.CAP_DSHOW)if not (cap.isOpened()):print("Could not open video device")cap.set(cv2.CAP_PR…...

针对高可靠性和高性能优化的1200V碳化硅沟道MOSFET

目录 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

Bean 作用域有哪些?如何答出技术深度?

导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答&#xff0c…...

软件工程 期末复习

瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

2.3 物理层设备

在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...