网易首页 > 网易号 > 正文 申请入驻

360度全方位无死角深度刨析STM32 结构,初学者建议收藏

0
分享至

360度全方位无死角深度刨析STM32结构,初学者建议收藏

从“2.2 ARM与STM32的关系”可知,ARM公司负责设计内核,半导体芯片厂商拿到内核授权后,根据产品需求,添加各类组件,生产芯片售卖。如图 6.1.1所示,为STM32的组成示意图,其中Cortex-M3内核、调试系统都是ARM公司设计,内部总线、外设、存储、时钟复位等都由ST公司开发。

在编程之前,对STM32的总线结构、存储结构、外设寄存器等有个大致了解,有助于理解编程中的一些操作。此外,中断与异常(Nested Vectored Interrupt Controller,NVIC)、时钟复位(Reset and Clock,RCC)也很重要,且与编程紧密相关,在后面相关实验章节里再专门讲解。

对于开发者,掌握一款MCU的开发需要重点关注四大模块:时钟复位、中断异常、存储映射和外设寄存器组。

STM32总线结构

总线(Bus)是各种信号线的集合,是嵌入式系统中各布件之间传输数据信息、地址信息和控制信息的公共通道。

与总线相关的主要参数有总线宽度、总线频率和总线带宽。总线宽度是指总线能同时传输的数据位数,如8位、32位、64位;总线频率是指总线的工作速度,频率越高,速度越快;总线带宽用来描述总线传输数据的快慢,总线带宽=总线宽度x总线频率/8,单位为MB/s。

STM32的总线结构如图 6.1.2所示,可以分为6部分。

.ICode总线:(Instruction bus)用于访问存储空间里指令的总线;

.DCode总线:(Data bus):用于访问存储空间里数据的总线;

.System总线:用于访问指令、数据以及调试模块接口;

.DMA总线:用于内存与外设之间的数据传输;

.Bus matrix(总线矩阵):用于总线之间的访问优先级管理控制;

.APB总线:用于外设接口的数据传输;ARM公司推出AMBA片上总线结构,该总线主要包含先进高速总线(Advanced High-speed Bus,AHB)和先进外设总线(Advanced Peripheral Bus,APB),分别连接高速设备和低速设备。基于这个总线结构,ICode、Dcode、System Bus都是AHB总线。这里AHB系统总线经过两个AHB-APB桥转换成了两个APB总线。APB1上挂接有DAC、UART等外设,其最高频率可达36MHz;APB2上挂接有ADC、GPIO等外设,其最高频率可达72MHz。

在MCU每次复位后,所有的外设时钟都会默认处于关闭状态。因此,在使用外设前需要操作复位和时钟寄存器(Reset and Clock Control,RCC)开启所需外设的时钟。

STM32存储结构

CPU通过总线访问各个外设,现在通往外设的“路”已经铺好,还需要规定各个外设的“门牌号”,以便精准控制每个外设。ARM Cortex-M3系列的处理器,采用存储器与I/O设备(外设)统一编址的方式,将部分存储器地址范围用于外设,这种通过存储器地址访问外设的方式,称为存储器地址映射。

对于32位的处理器,可寻址的范围为232字节,即232 = 4 × 1024 × 1024 × 1024 = 4,也就是0x00000000至0xFFFFFFFF。ARM将这4G空间从低地址到高地址依次划分为代码区(Code)、片上SRAM区(SRAM)、片上外设(Peripheral)、片外RAM(External RAM)、片外外设(External Device)和系统级(System level),如图 6.1.3所示。

ARM公司只是大概的规定了存储器空间的映射,允许各芯片厂商在指定范围内自行定义和使用这些存储空间,未分配的空间为保留的地址空间。

STM32在ARM规定的基础上,将4G空间分为了Block0、Block1、Block2、……、Block7,共8块,每块大小为512MB,如下表 6.1.1所示,详细结构如图 6.1.4所示。

.0x0000 0000 ~ 0x1FFF FFFF(512MB):作为代码区,用于存放下载的代码。系统上电后,将从该部分读取代码;

.0x2000 0000 ~ 0x3FFF FFFF(512MB):作为SRAM区,用于存放运行代码。系统上电后,将从Flash读取代码,放到SRAM里,CPU再从SRAM读取代码运行;

.0x4000 0000 ~ 0x5FFF FFFF(512MB):作为片上外设区,用于存放厂商外设寄存器。要操作外设,即修改这里对应的外设寄存器;注意这里的RCC和PortB外设的地址范围,后面很快就会用到;

.0x6000 0000 ~ 0x9FFF FFFF(1GB):作为片外RAM,用于扩展RAM。当SRAM或者Flash不够用时,MCU通过FSMC外接其它IC芯片,则在这个地址范围读写IC芯片数据;

.0xA000 0000 ~ 0xDFFF FFFF(1GB):作为片外外设区,用于读写扩展IC芯片的寄存器。ST只用了这里的一半空间,另外一空间未使用;

.0xE000 0000 ~ 0xFFFF FFFF(512MB):作为内核外设区,用于存放Cortex-M3内核的内部外设。CortexM3内核的内部外设有NVIC、Systick等;

STM32寄存器

寄存器是用来存储二进制数据的时序逻辑电路,由众多晶体管组成。

前面提到的寄存器,都是外设寄存器。这些外设寄存器由芯片厂商设计,与存储器统一编址,常用C语言的指针来表示外设寄存器地址,实现对外设寄存器的访问和操作。

在嵌入式系统中,除了外设寄存器,还有一类叫CPU内部寄存器。这些内部寄存器由ARM设计,在CPU内部,常用汇编语言直接操作,用于暂存参与运算的数据和内核的一些控制。

开发人员,通常只操作外设寄存器实现需求功能,后面实验会详细讲解外设寄存器。而内部寄存器在实际开发中接触会比较少,后面汇编点灯实验会涉及部分相关知识,本小结简单介绍下内部寄存器。

ARM Cortex-M3微处理器的内部寄存器,又分为普通寄存器和特殊功能寄存器。普通寄存器如图 6.1.5所示。

.R0-R12(General-Purpose Registers):用于数据操作的32位通用寄存器;一些16位的Thumb指令,只能访问低寄存器(R0~R7);

.R13(Stack Pointers,SP)Cortex-M3包含两个堆栈指针寄存器;同一时刻只能看到其中一个;(1)主堆栈指针寄存器(Main Stack Pointer,MSP):操作系统(OS)内核和异常处理程序使用的默认堆栈指针;(2)进程堆栈指针寄存器(Process Stack Pointer,PSP):用于用户代码;

.R14(Link Register,LR):链接寄存器;调用子例程时,返回地址将存储在链接寄存器中;

.R15(Program Counter,PC):程序计数器;总是指向下一条指令所在单元的地址,可以写入该寄存器以控制程序流;Cortex-M3处理器还具有许多特殊寄存器,如图 6.1.6所示。

.xPSR(Program Status registers):程序状态寄存器;用于存放程序运作中的各种状态信息以及中断等状态;由应用状态寄存器(APSR)、中断状态寄存器(IPSR)和执行状态寄存器(EPSR)组成;

.PRIMASK、FAULTMASK和BASEPRI:中断屏蔽寄存器;用于控制异常和中断的屏蔽

.CONTROL:控制寄存器;用于定义特权状态和当前使用哪一个堆栈指针;

【总结】

STM32由ARM公司设计的Cortex-M3内核与ST公司开发的外设资源组成。

Cortex-M3内核有内部寄存器,主要用于运算和内核的控制,这块对于初学者较难,暂时了解即可。

Cortex-M3内核通过总线和外设连接,重点了解大部分外设都挂载APB即可。

STM32采用存储器与外设统一编址的方式,控制外设,则对应操作指定地址的外设寄存器即可,这是后续实验的重点。我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~简介里也有。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
李连杰利智上山修行120天,称为了世界和平,21岁小女儿乖巧陪同

李连杰利智上山修行120天,称为了世界和平,21岁小女儿乖巧陪同

开开森森
2024-06-16 07:24:44
著名女优玩偶姐姐HongKongDoll,被爆料真实面目?

著名女优玩偶姐姐HongKongDoll,被爆料真实面目?

吃瓜党二号头目
2024-06-13 10:15:52
成都地铁被诬陷偷拍男子将直播带货

成都地铁被诬陷偷拍男子将直播带货

环球网资讯
2024-06-16 11:33:52
法国股市崩了,市值一周蒸发超万亿元!马克龙:正处于非常严峻时刻!财长:法国恐脱欧、陷金融危机

法国股市崩了,市值一周蒸发超万亿元!马克龙:正处于非常严峻时刻!财长:法国恐脱欧、陷金融危机

每日经济新闻
2024-06-16 10:12:06
闹大了!陈芋汐代言李宁,造型酷似日本风,网友直接炸锅了

闹大了!陈芋汐代言李宁,造型酷似日本风,网友直接炸锅了

吃鱼思故渊
2024-06-15 21:49:52
格兰德:克罗斯当时想要与格策持平的薪水,他如今是最成功的球员

格兰德:克罗斯当时想要与格策持平的薪水,他如今是最成功的球员

直播吧
2024-06-16 09:04:20
中纪委周末再打“虎”:正部级吴英杰被查

中纪委周末再打“虎”:正部级吴英杰被查

澎湃新闻
2024-06-16 11:26:26
漫天狂嘘!欧洲杯第1场催眠大战:2-1领先不攻了,球迷愤怒

漫天狂嘘!欧洲杯第1场催眠大战:2-1领先不攻了,球迷愤怒

叶青足球世界
2024-06-16 04:58:35
姜萍妈妈回老家:母女开心庆贺,父亲手捧鲜花,亲戚一起大团聚

姜萍妈妈回老家:母女开心庆贺,父亲手捧鲜花,亲戚一起大团聚

素素娱乐
2024-06-16 08:19:00
国内县级融媒体的近况:每年开销1200多万,节目收视率却为0,唯一作用就是拍领导开会

国内县级融媒体的近况:每年开销1200多万,节目收视率却为0,唯一作用就是拍领导开会

风向观察
2024-06-16 12:45:26
一针69.7万,医保谈判到3万!可澳洲184块,为何却说中国价最低?

一针69.7万,医保谈判到3万!可澳洲184块,为何却说中国价最低?

风起云间
2024-06-14 21:44:22
小米汽车销量连续下跌,两周减少了22%!什么原因?

小米汽车销量连续下跌,两周减少了22%!什么原因?

每日经济新闻
2024-06-13 16:46:18
疑似成飞垂直起降战机被拍到在试飞!有望对世界产生深远影响

疑似成飞垂直起降战机被拍到在试飞!有望对世界产生深远影响

战域笔墨
2024-06-16 10:11:27
王思聪新女友曝光!年仅21岁高颜值网红,符合他的一贯审美

王思聪新女友曝光!年仅21岁高颜值网红,符合他的一贯审美

甜小娱儿
2024-06-16 10:53:48
女性私处的“芳草”,竟然是越“浓密”越“渴望”?

女性私处的“芳草”,竟然是越“浓密”越“渴望”?

水白头
2024-06-16 00:06:07
魔怔了?美国洛杉矶移除“禁止转弯”交通标志,因涉嫌歧视“弯的”

魔怔了?美国洛杉矶移除“禁止转弯”交通标志,因涉嫌歧视“弯的”

不掉线电波
2024-06-16 09:33:45
13年前,冲动买了10万个比特币的新东方老师,如今过得怎样了?

13年前,冲动买了10万个比特币的新东方老师,如今过得怎样了?

百年历史老号
2024-06-16 06:55:46
上海电影节众男星状态:45岁邓超显沧桑,李治廷寸头造型阳刚帅气

上海电影节众男星状态:45岁邓超显沧桑,李治廷寸头造型阳刚帅气

扒虾侃娱
2024-06-15 21:23:43
中国重大决策:不能让中国的洪水白白流走

中国重大决策:不能让中国的洪水白白流走

科技良言
2024-06-16 07:28:13
带着家庭作业踢欧洲杯 西班牙16岁天才亚马尔首秀错失进球

带着家庭作业踢欧洲杯 西班牙16岁天才亚马尔首秀错失进球

封面新闻
2024-06-16 07:10:19
2024-06-16 13:56:49
大方老师单片机
大方老师单片机
领单片机速学资料,点我头像~
259文章数 1144关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

上海一家三口出动去香港过周末 在高铁动卧睡一晚就到

头条要闻

上海一家三口出动去香港过周末 在高铁动卧睡一晚就到

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

艺术
房产
亲子
本地
公开课

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

房产要闻

万华对面!海口今年首宗超百亩宅地,重磅挂出!

亲子要闻

陪宝宝看鲨鱼,跟海底动物们来个亲密接触,就差美人鱼了

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版