STM32系统架构及什么是寄存器

目录

一、STM32芯片架构简图及系统框图

1.1 STM32芯片架构简图

1.1.1 FLASH是什么,用来做什么

1.1.2 SRAM是什么,用来做什么

1.1.3 片上外设是什么,用来做什么

1.2 系统框图

1.2.1 驱动单元

1.2.2 被动单元

二、什么是寄存器

2.1 存储器映射

2.1.1 存储器 Block0 内部区域功能划分

​编辑

2.1.2 存储器 Block1 内部区域功能划分

2.1.3 存储器 Block2 内部区域功能划分

2.2寄存器映射

2.2.1 STM32的外设地址映射

2.2.2 C语言对寄存器的封装

2.2.3 修改寄存器的位操作方法

注意: 文中标注 红色是重要信息,绿色是个人总结

一、STM32芯片架构简图及系统框图
1.1 STM32芯片架构简图
        STM32 芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的 CPU 与主板、内存、显卡、硬盘的关系。
        STM32F103 采用的是 Cortex-M3 内核,内核即 CPU,由 ARM 公司设计。ARM 公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如GPIO、USART(串口)、I2C、SPI等都叫做片上外设。

架构简图 

        个人总结:STM32单片机有很多系列,它其中的内核包括很多,有M0、M3、M4、M7等等各种内核,这些内核是由 ARM 公司进行设计但不生产 相当于盖房子是设计图纸的,而ST、TI等这些公司来进行生产 相当于拿到图纸进行盖房子的建筑公司。他们不仅盖房子,而且还在房子旁边建筑了配套设施,这可以看作是片上外设。

1.1.1 FLASH是什么,用来做什么
FLASH是什么:

FLASH: (Flash memory)闪存,用于存储程序代码和数据。
特性:非易失性存储器,系统断电或重启时,存储在其中的数据不会丢失。
用途:用于存储用户程序、固件和其他必要的信息。
在STM32芯片中,FLASH 的主要作用(用来做什么)包括:

存储程序代码: Flash主要用于存储微控制器的程序代码。在开发STM32应用时,您的编程代码将被烧录到Flash存储器中,以便微控制器能够执行您的应用程序。
非易失性存储: 与RAM(随机访问存储器)不同,Flash是非易失性存储器,这意味着它可以在断电后保持存储内容。这使得Flash成为存储在微控制器上电之间需要保留的重要信息的理想选择。
固件升级: Flash还用于执行固件升级。通过在Flash中存储新的固件版本,您可以通过编程方式更新微控制器的软件,而无需更换芯片。
数据存储: 除了程序代码,Flash还可用于存储一些常量数据、配置信息或其他需要在应用程序之间保持不变的数据。
1.1.2 SRAM是什么,用来做什么
SRAM 是什么: 

SRAM:(Static Random-Access Memory)静态随机访问存储器,是一种用于存储数据的类型的内存。
特性:易失性存储器,系统断电或重启时,存储在其中的数据会丢失。
用途:Flash存储器通常用于存储程序代码,而 SRAM 则用于存储临时变量、中间计算结果和其他需要在程序执行期间频繁读写的数据。
在STM32芯片中,SRAM的主要作用(用来做什么)包括:

数据存储: SRAM用于存储在程序执行期间生成的数据。这可以包括临时变量、堆栈信息、全局变量等。
堆栈操作: 堆栈是一种用于存储函数调用和返回地址的数据结构。在程序执行时,每次函数调用都会将一些信息(如局部变量、返回地址等)存储在堆栈中。由于堆栈的访问模式是先进后出(Last In First Out,LIFO),因此SRAM是一个适合堆栈操作的存储介质。
运行时堆管理: 一些应用程序可能需要在运行时动态分配内存,例如使用malloc和free等函数。这样的内存分配通常是从SRAM中进行的。
中间结果存储: 在一些计算密集型应用中,SRAM用于存储中间计算结果,以提高访问速度并减少对Flash存储器的写入次数。
        总体而言,SRAM在STM32芯片中起到了关键的作用,对于实时性要求高、需要频繁读写数据的应用程序来说,SRAM的快速访问速度和可读写特性是非常重要的。

        个人总结:SRAM 就是一块儿内存,可以高速访问读写的内存,但掉电丢失数据,相当于我们手机里经常说的内存 8G+128G 中的 8G,我们打开某个APP,手机的操作系统就会调用该APP,其中产生的临时变量、函数调用什么的都是在运行内存上进行,所以,买手机大家都看运行内存有多大,当然越大,你的手机使用起来就越流畅,开多个应用也不会卡,当然这也只是你手机运行流畅的一部分原因,还得看手机厂商做的怎么样之类的。

1.1.3 片上外设是什么,用来做什么
        在 STM32 微控制器中,"片上外设"(On-Chip Peripherals)指的是集成在芯片内部的硬件功能模块,用于执行特定的任务或提供特定的功能。这些外设可以大大简化嵌入式系统的设计,因为它们无需外部组件就能执行各种任务。

        STM32 系列微控制器的片上外设种类繁多,不同型号的芯片可能具有不同的外设配置。以下是一些常见的 STM32片 上外设以及它们的一些用途:

GPIO(通用输入/输出): 用于连接和控制外部数字设备,例如LED、按钮、传感器等。
USART/UART(通用同步/异步收发器): 用于串行通信,例如连接到计算机、传感器、其他微控制器等。
SPI(串行外设接口): 用于高速串行通信,适用于连接存储器、传感器、显示屏等。
I2C(Inter-Integrated Circuit): 用于短距离串行通信,适用于连接多个设备,如传感器、EEPROM等。
ADC(模数转换器): 用于将模拟信号转换为数字信号,适用于从传感器中读取模拟数据。
PWM(脉冲宽度调制): 用于生成脉冲信号,通常用于控制电机、LED亮度等。
定时器和计数器: 用于生成定时事件,执行精确的时间控制。
看门狗定时器(WDT): 用于监视系统的运行状况,防止系统死锁或崩溃。
CAN(控制器区域网络): 用于在车辆系统等应用中进行高速通信。
USB控制器: 用于支持USB通信。
        这只是其中一部分外设的示例,不同的STM32型号可能会包含其他特定用途的外设。使用这些片上外设,开发人员可以更轻松地实现各种应用,而无需外部硬件。

1.2 系统框图
       芯片(这里指内核,或者叫CPU)和外设之间通过各种总线连接,其中驱动单元有 4 个,被动单元也有 4 个,具体见图 STM32F10xx 系统框图。为了方便理解,我们都可以把驱动单元理解成是 CPU 部分,被动单元都理解成外设。下面我们简单介绍下驱动单元和被动单元的各个部件。

 系统框图

1.2.1 驱动单元
(1)ICode 总线:

        ICode 中的 I 表示 Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在FLASH 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指的。

        个人总结:我们编辑好我们的代码,经过编译器编译生成计算机可执行的代码。这些代码我们可以通过反汇编查看,其实就是一条条的指令,计算机可以看懂的代码指令,这些指令都存储在我们FLASH上,CPU 通过 ICode 总线,读取指令进行操作。

(2)DCode 总线:

        DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。 我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用 C 语言中的 const 关键字修饰,是放到内部FLASH 当中的;

        变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。 因为数据可以被 Dcode 总线和 DMA 总线访问,所以为了避免访问

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值