本帖最后由 warship 于 2018-7-2 23:14 编辑
位带功能将外设的各个寄存器的每1bit映射到别名存储区扩充到了1个字(32位),比如GPIO B的IDR8(控制PB8)的BIT位,别名存储地址为0x4221 81A0,当我想置位PB8的时候,直接访问别名存储地址就可以了,即: *(0x422181A0)=0x01;
那么问题来了: 这个地址是专用的吗,不能被其它实际的物理存储器占用吗?
假如可以有其它实际的物理存储器占用该地址,
我用上述指令访问的时候,程序怎么知道我是正常访问这个存储器,还是只利用它来给PB8置位呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
那么对片上SRAM区的理解也一样:
片上SRAM共分配了0.5GB的空间, 即2000 0000至3FFF FFFF
其中位绑定区占用最低的1MB空间,即2000 0000至200F FFFF(这一区域可当作一般存储器按字节读写,也可使用别名地址按位寻址)
对应上述位绑定的别名区占用32MB,即2200 0000至23FF FFFF(这一空间是STM32规定死的,无法作为正常存储器使用,凡寻址这一地址空间的,默认是对相应的位带区进行位操作)
一周热门 更多>