一、芯片结构
ICode:Instruction 指令单元,程序存储在FLASH中,CPU通过ICode总线从FLASH读取程序进行执行
4个主动单元:
DCode:Data指的数据,程序中常量放在FLASH中,变量在SRAM中,内核取数据通过DCode数据总线
注意:DMA和Dcode总线都能读取数据,但拿到数据后给的目标不一样,同一时刻到底是DCode还是DMA在取数据,看的是总线矩阵是怎么仲裁的
System:系统总线,CPU与外设之间通过这个总线沟通,所有需要放进和读取的外设的寄存器的数据经过这个总线
DMA:数据总线,它可以取得数据为DCode和System两个总线所取的范围,但是目标不再是CPU,而是DMA通道,所以DMA取数据块,因为不需要经过CPU中转
4个被动单元:
FLASH:内部闪存存储器,存放程序和常量
SRAM:内部RAM,变量和堆栈开销在这里,相当于电脑的内存条
FSMC:英文全称是 Flexible static memory controller,叫灵活的静态的存储器控制器。理解:灵活指的是可以扩展多种存储器,使用灵活,比如:SRAM,NANDFLASH 和 NORFLASH,静态指的是只能扩展静态存储器
AHB-APB:桥接,主要为了时钟分频,为了节能不同的外设需要的时钟不同,保证高性能的同时尽量降低功耗
二、存储器映射
1、存储器映射、寄存器映射概念
#define ODR *(unsigned int *)0x4001 4567;//这是做的寄存器映射
2、总线基地址
3、注意结构体的使用