本帖最后由 warship 于 2018-7-2 23:14 编辑
位带功能将外设的各个寄存器的每1bit映射到别名存储区扩充到了1个字(32位),比如GPIO B的IDR8(控制PB8)的BIT位,别名存储地址为0x4221 81A0,当我想置位PB8的时候,直接访问别名存储地址就可以了,即: *(0x422181A0)=0x01;
那么问题来了: 这个地址是专用的吗,不能被其它实际的物理存储器占用吗?
假如可以有其它实际的物理存储器占用该地址,
我用上述指令访问的时候,程序怎么知道我是正常访问这个存储器,还是只利用它来给PB8置位呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
可以推想这么设计的初衷:
片上SRAM共分配了0.5GB的空间,这么大的SRAM是用不了的。
进一步地,ARM只对该空间的底部共64MB进行了定义,
而最底部的32MB是用户能够使用的SRAM(其中最最底部的1MB兼设计为位带区)
接下来的高32MB定义为别名区,这一部分无法作为正常存储器使用
因为,就你们这些小样儿,免费赠送的SRAM最多给到别名区空间以下!!!
免费的大部分情况已经足够用了,共1MB+31MB。真不够的话,自己想办法去!!
就是这些也看具体厂家的设计了,但所见到的103系列,最大也只有区区64kB, 离越界还远着呢。
所以2200 0000至23FF FFFF这一区域你们猴年马月也用不上,老子设计成别名区了。哈哈。
一周热门 更多>