关于stm32内存操作

1、想操作SRAMBit Band区地址为 0x2000 0018字节的第2

计算别名区对应子地址:0x2200 0000 +18*32+(2*4) = 0x2200 0248

所以,0x2200 0248地址的操作,就是对0x2000 0018字节的第2位进行操作;

如图是跟Bit Banding 有关系的存储器结构:

STM32存储器 <wbr>— <wbr><2>STM32存储器知识的相关应用(IAP、Bit <wbr>Banding)

 

STM32有两个Bit Band区域,分别是:

0x2000 0000——0x2010 0000:该地址是STM32SRAM1MB的地址区域;

0x4000 0000——0x4010 0000:该地址是STM32Peripherals1MB的地址区域;

 

另外,STM32还有两个对应的Bit Band区域的别名区,分别是:

0x2200 0000——0x23FF FFFF:共32MB的空间,对应相应1MB的每一个位;

0x4200 0000——0x43FF FFFF:共32MB的空间,对应相应1MB的每一个位;

接下来的问题是如何确定Bit Band区字节的位所对应的那个别名区的字(word)。Bit Band区和别名区是一一对应的,具体的公式为:

bit_word_addr=bit_band_base+ (byte_offset×32) + (bit_number×4)

bit_band_base32MB别名区首地址;

byte_offset1MB位段区偏移量,即为bit-band 区中包含目标位的字节的编号;

bit_number:位段中目标位的位位置(0-7);

举个例子(通过别名区访问地址):

1、想操作SRAMBit Band区地址为 0x2000 0018字节的第2

计算别名区对应子地址:0x2200 0000 +18*32+(2*4) = 0x2200 0248

所以,0x2200 0248地址的操作,就是对0x2000 0018字节的第2位进行操作;

 

2、想操作PeripheralsBit Band区地址为0x4000 0021字节的第7

(可能是一个功能寄存器);

计算别名区对应子地址:0x4200 0000+21*32+7*4=0x4200 02BC

所以,对0x4200 02BC的操作,就是对0x4000 0021字节的第7位进行操作;

 

对比使用Bit Banding功能和直接访问Bit Band区域,如图:

STM32存储器 <wbr>— <wbr><2>STM32存储器知识的相关应用(IAP、Bit <wbr>Banding)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值