初识stm32

初识Stm32

stm32的电路图

在这里插入图片描述

芯片(这里指内核,或者叫 CPU)和外设之间通过各种总线连接,其中驱动单元有 4 个,被动单

元也有 4 个,具体见图 STM32F10xx 系统框图 。为了方便理解,我们都可以把驱动单元理解成是

CPU 部分,被动单元都理解成外设。

stm芯片架构图

在这里插入图片描述

ICode总线

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

简单来说就是用来读取命令(Instruction)的总线。

驱动单元

Dcode总线

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

因为数据可以被Dcode 总线和 DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来

仲裁,决定哪个总线在取数。

简单来说就是用来读程序数据的总线

数据类型储存地点
常数FLASH
变量SRAM

系统总线

系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通过这根系统

总线来完成的。

系统总线结合数据总线的功能来搭载信息,地址总线来决定将信息送往何处,控制总线来决定如何动作。

DMA总线

Direct Memory Access(直接存储器访问)

DMA 总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在 SRAM,

可以在内部的 FLASH。因为数据可以被 Dcode 总线和 DMA 总线访问,所以为了避免访问冲突,

在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数

被动单元

内部的闪存储存器

内部的闪存存储器即 FLASH,**我们编写好的程序就放在这个地方。**内核通过 ICode 总线来取里面的指令。

简单来说储存程序的

内部的SRAM

Static Random-Access Memory(静态随机存取存储器)

内部的 SRAM,即我们通常说的 RAM,程序的变量,堆栈等的开销都是基于内部的 SRAM。内核通过 DCode 总线来访问它。

简单来说就是用来储存程序变量的

FSMC

FSMC 的英文全称是 Flexible static memory controller,叫灵活的静态的存储器控制器,是STM32F10xx 中一个很有特色的外设,通过 FSMC,我们可以扩展内存,如外部的 SRAM,NAND FLASH 和 NORFLASH。但有一点我们要注意的是,FSMC 只能扩展静态的内存,即名称里面的S:static,不能是动态的内存,比如 SDRAM 就不能扩展。

AHB APB 的桥

从 AHB 总线延伸出来的两条 APB2 和 APB1 总线,上面挂载着 STM32 各种各样的特色外设。我们经常说的 GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上,这个是我们学习 STM32 的重点,就是要学会编程这些外设去驱动外部的各种设备。

简单来说就是这上面挂载着许多外设,我们需要用这个总线去访问。

运行原理图

在这里插入图片描述

总结表

名称作用
ICode总线内核通过ICode来读取程序
Dcode总线内核通过Dcode来读取变量
SRAM存储变量
FSMC扩展外设
AHB 到 APB 的桥挂载外设
FLASH存储程序,存储常量

DMA的用处

假设我们CPU要读取一个变量(在SRAM中),传输到一个内部的外设:
情况1:如果不使用DMA总线,CPU首先要通过Dcode总线把数据从SRAM读取到CPU的通用寄存器中,CPU再把数据传到内部的外设。
情况2:如果使用DMA总线,CPU只需要发送一个命令,将SRAM中的数据通过DMA总线搬到内部的外设。这样CPU就空闲了,可以进行其他的操作。

CPU的通用寄存器中,CPU再把数据传到内部的外设。
情况2:如果使用DMA总线,CPU只需要发送一个命令,将SRAM中的数据通过DMA总线搬到内部的外设。这样CPU就空闲了,可以进行其他的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值