当前位置:网站首页>STM32入门介绍
STM32入门介绍
2022-06-27 01:49:00 【小侯同学_2022】
入门介绍
1.芯片里面有什么
我们看到的STM32 芯片是已经封装好的成品,主要由内核和片上外设组成。
如图为STM32 芯片架构简图

芯片(这里指内核,或者叫CPU)和外设之间通过各种总线连接,其中驱动单元有4个,被动单元也有4个,具体见图STM32F1Oxx系统框图。为了方便理解,我们都可以把驱动单元理解成是CPU部分,被动单元都理解成外设。下面我们简单介绍下驱动单元和被动单元的各个部件。
1.1 ICode 总线
ICode中的I表示Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在FLASH中,内核要读取这些指令来执行程序就必须通过ICode总线,它几乎每时每刻都需要被使用,它是专门用来取指的。
1.2 驱动单元
1.2.1 DCode 总线
DCode 中的D 表示Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用C 语言中的const 关键字修饰,是放到内部的FLASH当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。因为数据可以被Dcode 总线和DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。
1.2.2 系统总线(system)
系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通过这根系统总线来完成的。
1.2.3DMA 总线
DMA 总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部的 FLASH。因为数据可以被Dcode 总线和DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

1.3 被动单元
1.3.1 内部的闪存存储器(FLASH)
内部的闪存存储器即FLASH,我们编写好的程序就放在这个地方。内核通过ICode 总线来取里面的指令。
1.3.2 内部的SRAM
内部的SRAM,即我们通常说的RAM,程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过DCode 总线来访问它。
1.3.3 FSMC
FSMC的英文全称是Flexible static memory controller,叫灵活的静态的存储器控制器,是STM32F1Oxx中一个很有特色的外设,通过FSMC,我们可以扩展内存,如外部的SRAM,NAND-FLASH和NORFLASH。但有一点我们要注意的是,FSMC只能扩展静态的内存,即名称里面的S:static,不能是动态的内存,比如SDRAM就不能扩展。
1.3.4 AHB 到APB 的桥
从AHB总线延伸出来的两条APB2和APB1总线,上面挂载着STM32各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI这些外设就挂载在这两条总线上,这个是我们学习STM32的重点,就是要学会编程这些外设去驱动外部的各种设备。
2.存储器映射
在图STM32 F10xx系统框图中,*被控单元的FLASH,RAM,FSMC和AHB到APB的桥(即片上外设),这些功能部件共同排列在一个4GB的地址空间内。*我们在编程的时候,可以通过他们的地址找到他们,然后来操作他们(通过C语言对它们进行数据的读和写)。
**存储器本身不具有地址信息,**它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射,具体见图存储器映射。如果给存储器再分配一个地址就叫存储器重映射。

2.1存储器区域功能划分
在这4GB的地址空间中,**ARM已经粗线条的平均分成了8个块,每块512MB,**每个块也都规定了用途,具体分类见表格存储器功能分类。每个块的大小都有512MB,显然这是非常大的,芯片厂商在每个块的范围内设计各具特色的外设时并不一定都用得完,都是只用了其中的一部分而已。

2.2 STM32 的外设地址映射
片上外设区分为三条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB1 挂载低速外设,APB2 和AHB 挂载高速外设。相应总线的最低地址我们称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址。其中APB1 总线的地址最低,片上外设从这里开始,也叫外设基地址。
边栏推荐
- Simply learn the entry-level concepts of googlecolab
- 学习DiscoDiffusion的最基础操作
- UVM in UVM_ config_ Setting and obtaining DB non-linear
- Oracle/PLSQL: To_Clob Function
- Memcached basics 14
- 每日刷题记录 (五)
- George Washington University: Hanhan Zhou | PAC: auxiliary value factor decomposition with counterfactual prediction in Multi-Agent Reinforcement Learning
- Oracle/PLSQL: Lpad Function
- Oracle/PLSQL: Rtrim Function
- 1.44寸TFT-LCD显示屏取模教程
猜你喜欢

Parameter estimation -- Chapter 7 study report of probability theory and mathematical statistics (point estimation)

Look! In June, 2022, the programming language ranking list was released! The first place is awesome

CVPR2022 | PointDistiller:面向高效紧凑3D检测的结构化知识蒸馏

Binary tree OJ problem

简单学习GoogleColab的入门级概念

Bs-gx-016 implementation of textbook management system based on SSM

Did your case really pass?

ThreadLocal详解

dat.gui.js星星圆圈轨迹动画js特效

别被洗脑了,这才是90%中国人的工资真相
随机推荐
UVM in reporting classes_ report_ Get of server_ severity_ Count and get_ Server usage
h5液体动画js特效代码
Consumers pursue the iPhone because its cost performance exceeds that of domestic mobile phones
memcached基础12
Cookie, sessionstorage, localstorage differences
"All majors are persuading them to quit." is it actually the most friendly to college students?
Hot discussion: what are you doing for a meaningless job with a monthly salary of 18000?
Reading a book in idea is too much!
Interface isolation principle
On the operation mechanism of numpy array
numpy 数组运算机制浅探
Did your case really pass?
Markdown table (consolidated)
Why divide the training set and the test set before normalization?
达梦数据库的卸载
C language -- Design of employee information management system
Oracle/PLSQL: From_ Tz function
Oracle/PLSQL: NumToDSInterval Function
二叉樹oj題目
Daily question brushing record (V)