目录
前言
CM3有着非常复杂的存储器系统。对于原来只接触过51单片机的初学者来说,这种指令系统真的是令人头疼。
CM3的存储器系统可以说是有着脱胎换骨的变化,有着相当多的特性。我自己水平有限,在这里就简单说说自己对于这套系统的了解。
存储器映射
CM3的存储器的映射是预定义好的,规定了存储器的哪个位置使用哪条总线。CM3只有一个单一固定的存储器映射,无论是哪个芯片厂商生产的任何一款CM3单片机,器NVIC和MPU都在相同的位置。不过,虽然如此,CM3对于存储器所定出的条条框框仍然具有相当大的变化空间的。不同的芯片厂商生产的不同型号的单片机有着不相同的存储器空间分配的方法,这在我学习的一开始给我照成了相当大的困扰。
在学习前我们首先应该搞清楚实物单片机与理论上的CM3的差别。CM3理论上的SRAM的空间为512MB,地址为0X20000000--0X3FFFFFFF。但是在我用实物STM32F103ZE上这个SRAM只有64KB的大小,地址为0X20000000--0X20100000。类似的还有储存空间的代码区。CM3理论上给出的空间为从0X00000000到0X1FFFFFFF,总共为512MB。但是到实物上,代码区的空间为0X80000000--0X1FFFFFFF,总共为512KB。
这个问题我一开始并没有注意到,导致我在0X20100000以后的地址空间写数据时都无法成功写入,并且也解决了为什么我的PC指针总是0X80000000以后的数值(因为芯片制造商根本就没有给代码区0X80000000之前的空间,那么程序计数器指针当然不可能会有0X80000000之前的值!)