STM32芯片的内部架构介绍

STM32芯片由内核和片上外设两部分组成。STM32F103采用Cortex-M3内核,该内核由ARM公司设计。芯片生产厂商ST则负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设或片上外设,如GPIO、USART(串口)、I2C、SPI等。

芯片内部架构示意图

​芯片内核与外设之间通过各种总线连接,其中驱动单元有四个,被动单元也有四个。可以将驱动单元理解成内核部分,被动单元理解成外设。

ICode总线

ICode总线是专门用于取指令的总线,其中的“I”代表“Instruction”(指令)。在编写程序后,经过编译,程序将转化为一条条指令并存储在FLASH中。内核通过ICode总线读取这些指令,进而执行程序。

DCode总线

DCode总线用于取数,其中的“D”代表“Data”(数据)。在编写程序时,数据分为常量和变量两种。常量是不变的,使用C语言中的const关键字进行修饰,并存储在内部FLASH中。变量是可变的,无论是全局变量还是局部变量,都存储在内部的SRAM中。

System总线

我们通常所说的寄存器编程,即读写寄存器的操作,都是通过System总线来完成的。System总线主要用于访问外设的寄存器。

DMA总线

DMA总线也主要用于传输数据,这些数据可以来自某个外设的数据寄存器,也可以来自SRAM或内部FLASH。

由于数据既可以被DCode总线访问,也可以被DMA总线访问,因此为了避免访问冲突,取数时需要经过一个总线矩阵进行仲裁,以决定由哪个总线进行取数。

内部的闪存存储器Flash

内部的闪存存储器即为FLASH,它用于存储编写好的程序。内核通过ICode总线来获取存储器中的指令。

内部的SRAM

内部的SRAM,也被称为内存,是程序中变量、堆栈等开销的存储基础。内核通过DCode总线来访问SRAM。

FSMC

FSMC的英文全称是Flexible static memory controller(灵活的静态的存储器控制器)。通过FSMC,可以扩展内部存储器,如外部的SRAM、NAND-FLASH和NORFLASH。但是,FSMC只能扩展静态的内存,而不能扩展动态的内存,因此不能用于扩展SDRAM。

AHB

从AHB总线延伸出的两条APB2和APB1总线是常见的总线,它们连接了GPIO、串口、I2C、SPI等外设。学习STM32的重点在于学会对这些外设进行编程,以便驱动外部的各种设备。

 

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

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

相关文章

数据安全是企业发展之基,WorkPlus纯内网私有化部署保护隐私更安全

数字化时代,数据是企业生产、经营、战略等几乎所有经营活动所依赖、不可或缺的信息。企业通过数据资产管理,对外可以为客户提供更好的产品和服务,在组织内部又可以降低成本、提高效率、控制风险。所以,数据的价值和重要性不言而喻…

什么是智慧工地和智慧工地源码?

智慧工地将更多人工智能、传感技术、虚拟现实等高科技技术植入到建筑、机械、人员穿戴设施、场地进出关口等各类物体中,并且被普遍互联,形成“物联网”,再与“互联网”整合在一起,实现工程管理干系人与工程施工现场的整合。智慧工…

【uniapp】滚动相关

1、滚动到一定区域,顶部内容置换并置顶 功能: 当我向下滚动时,当关注那一行快到顶部的时候,把左侧区域的内容切换成右侧区域的内容,并置顶 原先我使用v-if来显示隐藏,发现会出现闪屏的现象,后来…

修改el-select和el-input样式;修改element-plus的下拉框el-select样式

修改el-select样式 .select_box{// 默认placeholder:deep .el-input__inner::placeholder {font-size: 14px;font-weight: 500;color: #3E534F;}// 默认框状态样式更改:deep .el-input__wrapper {height: 42px;background-color: rgba(0,0,0,0)!important;box-shadow: 0 0 0 …

栈和队列经典面试题

目录 一、括号匹配问题 20. 有效的括号 - 力扣(LeetCode) 题目 思路 完整代码 二、用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode) 题目 思路 代码实现 构造一个栈 用队列实现栈的接口 第一个接口:创建…

小白到运维工程师自学之路 第七十二集 (半自动yum安装k8s集群)

一、准备环境 修改主机名 hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 hostnamectl set-hostname k8s-node2 bashvim /etc/hosts 192.168.77.14 k8s-master 192.168.77.15 k8s-node1 192.168.77.16 k8s-node2 下载阿里源 wget -O /etc/yum…

华为路由器:IPSec加密GRE通道(GRE over IPsec)

IPSec加密GRE通道 由于GRE隧道不提供安全性保障,使用ipsec加密gre隧道是现网中比较常用的VPN部署,它的加密方式分为两种: 可以使用IPsec来加密隧道进行传输,叫做IPsec over GRE; 加密数据流后从隧道传输,…

湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序

一、链接 1097 排序 二、题目 Description N个整数&#xff0c;将其排序输出。 输入 第一行是一个整数K&#xff08;1<K<20&#xff09;&#xff0c;表示有多少个样例&#xff0c;每个样例的第一行是一个整数N&#xff08;1<N<1,000&#xff09;和一个字符X&…

探索规律:Python地图数据可视化艺术

文章目录 一 基础地图使用二 国内疫情可视化图表2.1 实现步骤2.2 完整代码2.3 运行结果 一 基础地图使用 使用 Pyecharts 构建地图可视化也是很简单的。Pyecharts 支持多种地图类型&#xff0c;包括普通地图、热力图、散点地图等。以下是一个构建简单地图的示例&#xff0c;以…

1、Spark SQL 概述

1、Spark SQL 概述 Spark SQL概念 Spark SQL is Apache Spark’s module for working with structured data. 它是spark中用于处理结构化数据的一个模块 Spark SQL历史 Hive是目前大数据领域&#xff0c;事实上的数据仓库标准。 Shark&#xff1a;shark底层使用spark的基于…

竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

【立创EDA】【0】基本概念

原理图库设计 符号设计 当在元件库中没有找到需要的元件原理图符号时&#xff0c;需要自己手动绘制点击文件-新建-符号进行新建符号 封装库设计 原理图符号对应焊盘 绘制封装时&#xff0c;可以在立创商城寻找元器件对应的数据手册进行参考 PCB绘制 晶振需要包地&#xf…

ip地址修改器软件哪个好 ip地址切换器有哪些

IP地址修改器是一种常用的网络工具&#xff0c;用于修改计算机或网络设备的IP地址。在网络连接中&#xff0c;IP地址被用于标识每个设备的唯一地址&#xff0c;通过它来实现设备之间的通信和数据传输。然而&#xff0c;有时候我们需要修改IP地址以解决一些网络问题或实现特定的…

如何让你的视频在 TikTok上变得火爆?

TikTok凭借巨大的用户量和商业价值&#xff0c;它从来不缺优质内容。如何在众多内容中脱颖而出获得关注&#xff0c;这并不简单。和泛流量账号不同&#xff0c;商业账号的目的更加明确&#xff0c;也就是说&#xff0c;商业账号并不一定要以高流量最为唯一的追求目标&#xff0…

41.利用matlab 平衡方程用于图像(matlab程序)

1.简述 白平衡 白平衡的英文为White Balance&#xff0c;其基本概念是“不管在任何光源下&#xff0c;都能将白色物体还原为白色”&#xff0c;对在特定光源下拍摄时出现的偏色现象&#xff0c;通过加强对应的补色来进行补偿。 所谓的白平衡是通过对白色被摄物的颜色还原&…

【12】Git工具 协同工作平台使用教程 Gitee使用指南 腾讯工蜂使用指南【Gitee】【腾讯工蜂】【Git】

tips&#xff1a;少量的git安装和使用教程&#xff0c;更多讲快速使用上手Gitee和工蜂平台 一、准备工作 1、下载git Git - Downloads (git-scm.com) 找到对应操作系统&#xff0c;对应版本&#xff0c;对应的位数 下载后根据需求自己安装&#xff0c;然后用git --version验…

代码质量检查工具SonarQube

Devops流水线之SonarQube 文章目录 Devops流水线之SonarQube1. 软件功能介绍及用途2. 软件环境搭建与使用2.1 使用方法2.2 SonarQube相关属性说明2.3 Sonar配置文件内容说明 3. 使用环节4. 检查方法 1. 软件功能介绍及用途 SonarQube是一个用于代码质量管理的开源平台&#xf…

蓝牙运动耳机哪个好、最好的运动蓝牙耳机品牌排行

在忙碌的都市生活中&#xff0c;人们往往容易迷失方向。音乐是一种良药&#xff0c;能够使心灵平静下来&#xff0c;找到正确的方向。生命需要运动&#xff0c;而有趣的运动更能让人们自由自在&#xff0c;释放身心。因此&#xff0c;运动和音乐天然地相辅相成。当我们佩戴一款…

Redis的RDB持久化

Redis是一个键值对数据库服务器&#xff0c;服务器中通常包含着任意个非空数据库&#xff0c;而每个非空数据库中又可以包含任意个键值对&#xff0c;为了方便起见&#xff0c;我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 举个例子&#xff0c;下图展示了一…

观察者模式

观察者模式 需求1. 定义2. 组成3. 观察者模式原型图4. 实现4.1 抽象观察者4.2 抽象主题4.3 实现观察者4.4 实现主题4.5 测试 需求 实现一种天气实时更新的程序&#xff08;天气推送&#xff09;&#xff0c;当气象站数据更新后&#xff0c;天气接口程序去获取最新天气数据&…