目录
0. 《STM32单片机自学教程》专栏总纲
本文作为专栏《STM32单片机自学教程》专栏其中的一部分,返回专栏总纲,阅读所有文章,点击Link:
3.1.STM32F1x系统架构
图3.1-1STM32F1x系统架构图
如图3.1-1所示为STM32F1系列的系统架构图。蓝色为被动单元,绿色为主动单元。主动和被动单元之间通过总线矩阵连接。STM32F1x各总线和设备总结如下图3.1-2.
图3.1-2 STM32F1x总线简介
3.1.1-ICode总线
ICode总线是指令总线,它的主要作用是连接Cortex-M3内核与FLASH存储器的指令接口。具体来说,ICode总线用于加载FLASH闪存中的程序指令。当我们编写的程序被编译后,它会转换为一条条机器指令,并存储在FLASH闪存中。Cortex-M3内核通过ICode总线可以获取这些指令,并按顺序执行代码。因此,ICode总线在STM32F1系列单片机中起到了关键的作用,确保内核能够正确地读取并执行程序指令。ICode总线直接连接Flash接口,不需要经过总线矩阵。
3.1.2-DCode总线
DCode总线是数据总线。它主要负责从Flash存储器或其他非易失性存储器中取指(Fetch),即将指令读取到指令流水线中。具体来说,DCode总线是Cortex-M3内核与存储器系统之间指令传输的通道,确保CPU能够按照程序顺序执行存储在存储器中的指令。此外,DCode总线还用于加载数据,如常量和调试数据等。Cortex-M3内核可以通过DCode总线访问Flash闪存和SRAM中的数据。在实际应用中,变量通常会储存在内部的SRAM中,而Flash闪存中则会储存程序所用到的常量。
那么ICode总线和DCode总线有什么区别呢?
ICode总线主要承担的是指令的预取任务。它将M3内核指令总线和闪存指令接口相连接,确保CPU能够正确且高效地获取存储在Flash闪存中的指令。这一过程对于单