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.mzph.cn/news/29943.shtml

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

相关文章

intelJ IDEA\PHPStorm \WebStorm\PyCharm 通过ssh连接远程Mysql\Postgresql等数据库

最容易出错的地方是在general面板下的host,不应该填真实的host地址,而应该填localhost或者127.0.0.1 具体操作步骤见下图

Shopify平台Fulfillment业务模块升级

上图是销售订单、发货单与配送之间的关系图,销售订单可以创建多个发货单,多个发货单(不同销售订单)可以合并在一个配送订单进行发货 接口请求错误记录: 1. The api_client does not have the required permission(s). 2. Required parameter missing or…

特殊符号的制作 台风 示例 使用第三方工具 Photoshop 地理信息系统空间分析实验教程 第三版

特殊符号的制作 首先这是一个含有字符的,使用arcgis自带的符号编辑器制作比较困难。所以我们准备采用Adobe Photoshop 来进行制作符号,然后直接导入符号的图片文件作为符号 我们打开ps,根据上面的图片的像素长宽比,设定合适的高度…

FastAPI和Flask:构建RESTful API的比较分析

Python 是一种功能强大的编程语言,广泛应用于 Web 开发领域。FastAPI 和 Flask 是 Python Web 开发中最受欢迎的两个框架。本文将对 FastAPI 和 Flask 进行综合对比,探讨它们在语法和表达能力、生态系统和社区支持、性能和扩展性、开发工具和调试支持、安…

【springboot项目】在idea中启动报错合集

一、IDEA中报错 “Error running ‘Application‘: Command line is too long.“ 的解决办法 报错详情: Error running Application: Command line is too long.Shorten command line for Application or also for Spring Boot default configuration.报错原因&am…

Linux 目录结构

初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home --- 存储普通用户的个人文件 ftp --- 用户所有服务httpdsambauser1user2bin --- 系统启动时需要的执行文件(二进制&#x…

【TypeScript】中关于 { 声明合并 } 的使用及注意事项

概念: 在TS中,如果定义了多个相同命名的函数,接口或者class 类,那么它们会自动合并成一个类型 函数的合并: 前面章节讲解的函数重载就是使用了定义多个函数的类型进行合并: function reverse(x: number):…

在家构建您的迷你聊天Chat gpt

推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 什么是指令遵循模型? 语言模型是机器学习模型,可以根据句子的前一个单词预测单词概率。如果我们向模型请求下一个单词,并将其递减地反馈给模型以请求更多单词&#xff…

css3背景渐变

1.线性渐变 <style>.box {width: 200px;height: 200px;border: 1px solid black;float: left;margin-left: 50px;}.box1 {background-image: linear-gradient(green, yellow, red);}/* 右上 */.box2 {background-image: linear-gradient(to right top, green, yellow, re…

【前端 | CSS】aligin-items与aligin-content的区别

align-items 描述 CSS align-items 属性将所有直接子节点上的 align-self 值设置为一个组。align-self 属性设置项目在其包含块中在交叉轴方向上的对齐方式 align-items是针对每一个子项起作用&#xff0c;它的基本单位是每一个子项&#xff0c;在所有情况下都有效果&…

js案例:1.简单计算器

目录 一.效果图 二.实现思路 整体思路 ​ 1.关键是dom操作 ​ 2.设置点击事件 3.数据类型的隐式转换和赋值 三.完整代码 一.效果图 二.实现思路 整体思路 1.关键是dom操作 通过 document.getElementById(id) 获取html中的dom元素 每一个html标签都是一个对象&…

java【native关键字】

描述&#xff1a; native只能修饰方法&#xff0c;表示这个方法的方法体代码不是用java语言实现的&#xff0c;而是由c/c语言编写的。但是对于java程序员来说&#xff0c;可以当作java的方法一样正常去调用它&#xff0c;或者子类重写它 语法&#xff1a; 用在方法的返回值类…

【腾讯云 Cloud Studio 实战训练营】一个新的趋势已来

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

二分法的应用

文章目录 什么是二分法&#x1f3ae;二分查找的优先级二分查找的步骤&#x1f4a5;图解演示&#x1f9e9; 代码演示&#x1fad5;python程序实现&#x1f408;‍⬛C程序实现&#x1f415;‍&#x1f9ba;C程序实现&#x1f42f;Java程序实现&#x1f433; 非常规类二分查找&…

vue3 - 使用reactive定义响应式数据进行列表赋值时,视图没有更新的解决方案

文章目录 1&#xff0c;问题2&#xff0c;原因3&#xff0c;解决方案一、再封装一层数据&#xff0c;即定义属性名&#xff0c;在后期赋值的时候&#xff0c;对此属性进行直接赋值三、使用数组的splice来直接更改原数组三、使用 ref 来定义数据 1&#xff0c;问题 在Vue 3.0 中…

【VS Code插件开发】通用功能(二)

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;2022年度博客之星前端领域TOP 2&#xff0c;前端领域优质作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步…

word横向页面侧面页码设置及转pdf后横线变竖线的解决方案

在处理材料的时候&#xff0c;会遇到同一个文档里自某一页开始&#xff0c;页面布局是横向的&#xff0c;这时候页码要设置在侧面&#xff0c;方法是双击页脚&#xff0c;然后在word工具栏上选择“插入”——>“文本框”——>“绘制竖版文本框”&#xff0c;然后在页面左…

Python-OpenCV中的图像处理-几何变换

Python-OpenCV中的图像处理-几何变换 几何变换图像缩放图像平移图像旋转仿射变换透视变换 几何变换 对图像进行各种几个变换&#xff0c;例如移动&#xff0c;旋转&#xff0c;仿射变换等。 图像缩放 cv2.resize() cv2.INTER_AREAv2.INTER_CUBICv2.INTER_LINEAR res cv2.r…

岩土工程仪器多通道振弦传感器信号转换器应用于桥梁安全监测

岩土工程仪器多通道振弦传感器信号转换器应用于桥梁安全监测 桥梁作为交通运输的重要节点&#xff0c;其安全性一直备受关注。不同于其他建筑物&#xff0c;桥梁所处的环境复杂多变&#xff0c;同时&#xff0c;其所需承受的负荷也相对较大&#xff0c;这就需要对桥梁的安全进…

北京多铁克FPGA笔试题目

1、使用D触发器来实现二分频 2、序列检测器&#xff0c;检测101&#xff0c;输出1&#xff0c;其余情况输出0 module Detect_101(input clk,input rst_n,input data, //输入的序列output reg flag_101 //检测到101序列的输出标志 );parameter S0 2d0;S1 2d1;S2 2d2;S4 …