裸机可以用,但是freertos无法使用
原因是内存 分配,内存管理问题,可以将显示和SD卡内存分开
从 0 开始,长度为 32 KB 的内存区域,其结束后的下一个地址(即第 32 KB 开始的地址)是:
0x00008000
计算过程
起始地址: 0x00000000
长度: 32 KB
换算为字节: 32 times 1024 = 32,768 字节
换算为十六进制:
32 = 2^5
1 text{ KB} = 2^{10}
32 text{ KB} = 2^5 times 2^{10} = 2^{15}
2^{15} 在十六进制中对应 0x8000
最后一个有效字节地址: 0x00007FFF
第 32 KB 开始的地址: 0x00007FFF + 1 = 0x00008000
结合 STM32H7 的实际应用
如果你是将这个偏移量应用到 SRAM1 (0x24000000) 上:
基准地址: 0x24000000
偏移量: 32 KB (0x8000)
计算结果: 0x24000000 + 0x8000 = 0x24008000
这个地址在哪里?
它位于 SRAM1 的最前端。
0 ~ 32KB: 0x24000000 ~ 0x24007FFF
32KB 开始: 0x24008000 (你问的这里)
32KB ~ 64KB: 0x24008000 ~ 0x2400FFFF
MPU 配置提示
如果你打算用 MPU 保护从 0x24000000 开始的 32 KB 区域:
Base Address: 0x24000000
Size: MPU_REGION_SIZE_32KB
覆盖范围: 0x24000000 到 0x24007FFF
下一个可用地址: 0x24008000
如果你是想把变量放在 32 KB 之后 的位置(避开前 32KB):
请使用地址 0x24008000。
快速对照表 (基于 0x24000000 起始)
偏移大小 十六进制偏移 目标地址 (0x24000000 + 偏移) 说明
32 KB 0x8000 0x24008000 第 32KB 开始
64 KB 0x10000 0x24010000 第 64KB 开始
128 KB 0x20000 0x24020000 第 128KB 开始
256 KB 0x40000 0x24040000 第 256KB 开始
512 KB 0x80000 0x24080000 SRAM1 结束,SRAM2 开始
————————————————
版权声明:本文为CSDN博主「Miko-one」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42949957/article/details/158579055
|
|