【无标题】STM32学习笔记2存储器结构

1.理解什么是内存和IO统一编址

2.知道STM32的4G内存是如何使用的

3.理解变量和内存的关系

4.理解对齐编址的必要性

下面进入正文:

1.因为内存和IO统一编址,所以你可以直接操控寄存器来让IO口工作,这是由硬件决定的。编址的工作由地址线来完成,STM32有32根地址线,故最多可寻址4G的空间。

2.下面是4G内存空间的地址映射(好多空间用不到,保留)

程序存储器、数据存储器、寄存器和IO端口被组织到一个4G字节的线性地址空间

可寻址的存储器空间被分成8个512兆的主块

所有未被分配给片上存储器或外设的存储器区域被视为是保留的

 

0X08000000 - 0X0801FFFF FLASH

0X1FFFF000 - 0X1FFFF800 SYSTEMMEMORY

0X1FFFF800 - 0X1FFFF9FF OPTION BYTES

 

寄存器边界地址如下:

 

 

 

 

 

 

 

 

 

 

 

3.变量和内存的关系

char(字节型变量)a;

无论在哪个CPU都是分配固定8bit的字节空间

假设起始内存地址为0X00008000,则a就占0X00008000这一个空间

如果是int b;

假设起始地址还是0X00000800,那么b占0X00000800;0X00000801;0X00000802;0X00000803这四个地址空间

没错,内存编址是以字节为单位,这是个规定,在任何一款CPU上都是如此。

这里的int(整型变量)也有必要说一下,它在不同的CPU上所占的地址空间不同,例如在51上,就只有2字节,其实它取决于CPU的地址线数!

4.对齐编址和非对齐编址

STM32是以4个地址为单位对齐编址的,如果选别的就为非对齐编址,因为只有4个地址为一个单位刚好可以照顾到地址线,4×8=32嘛!如果不对齐编址,你定义一个整形变量就不方便寻址!这里顺便说一下,在32中尽量多定义整形变量这样可以提高CPU的效率。不要担心内存,你用不完的

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值