关于stm32内存操作
来源:互联网 发布:ssd主控测试软件 编辑:程序博客网 时间:2024/06/16 05:24
1、想操作SRAM中Bit Band区地址为 0x2000 0018字节的第2位
计算别名区对应子地址:0x2200 0000 +(18*32)+(2*4) = 0x2200 0248
所以,对0x2200 0248地址的操作,就是对0x2000 0018字节的第2位进行操作;
如图是跟Bit Banding 有关系的存储器结构:
STM32有两个Bit Band区域,分别是:
0x2000 0000——0x2010 0000:该地址是STM32的SRAM低1MB的地址区域;
0x4000 0000——0x4010 0000:该地址是STM32的Peripherals低1MB的地址区域;
另外,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_base:32MB别名区首地址;
byte_offset:1MB位段区偏移量,即为bit-band 区中包含目标位的字节的编号;
bit_number:位段中目标位的位位置(0-7);
举个例子(通过别名区访问地址):
1、想操作SRAM中Bit Band区地址为 0x2000 0018字节的第2位
计算别名区对应子地址:0x2200 0000 +(18*32)+(2*4) = 0x2200 0248
所以,对0x2200 0248地址的操作,就是对0x2000 0018字节的第2位进行操作;
2、想操作Peripherals中Bit Band区地址为0x4000 0021字节的第7位
(可能是一个功能寄存器);
计算别名区对应子地址:0x4200 0000+(21*32)+(7*4)=0x4200 02BC
所以,对0x4200 02BC的操作,就是对0x4000 0021字节的第7位进行操作;
对比使用Bit Banding功能和直接访问Bit Band区域,如图:
- 关于stm32内存操作
- 关于STM32的FLASH操作
- 关于STM32的FLASH操作【摘】
- 关于STM32的FLASH操作【摘】
- 关于STM32的FLASH操作【转载】
- 关于STM32能否使用malloc申请动态内存的问题
- 关于STM32能否使用malloc申请动态内存的问题
- STM32 DMA->内存到内存
- stm32内存分配
- STM32动态内存分配
- STM32 内存分布探究
- STM32内存与堆栈
- STM32内存分布学习
- stm32 内存管理
- stm32内存管理总结
- stm32 内存问题
- STM32内存之一
- stm32内存分配
- 鼠标事件中各种位置
- BN算法
- c# winform 关于DataGridView的一些操作(很全,绝对够用)
- Lift Hopping UVA
- rocketmq测试1-rocketmq,2m2s集群搭建
- 关于stm32内存操作
- c++对文件进行操作之读取文件夹下面的图片名称
- 自旋锁原理及java自旋锁
- 顺时针打印矩阵(数组)
- Spring Bean的装配
- meshlab编译过程(2)-编译meshlab_full.pro
- Java改变生成随机数的平均值(改变生成随机数的概率)
- settings
- 使用Apriori算法进行关联分析