精华内容
下载资源
问答
  • 要取任意一行存储单元中的地址,就要将这一行置1,其他行全部置0,但是存储单元并不能自己控制这个过程,这时候译码器就可以控制到底读取哪一行地址。假设一共有8行存储单元,从0开始编号,则3位二进制数就可以表示...

    这个问题已经困扰了了我好久了,终于又找到了教学视频看了才明白,这可能要怪我数字电路没有学好。下边放一张详细图解释下原理

    详细解释图

    右边是一行一行的存储单元,左下角是控制存储单元存取的译码器。要取任意一行存储单元中的地址,就要将这一行置1,其他行全部置0,但是存储单元并不能自己控制这个过程,这时候译码器就可以控制到底读取哪一行地址。假设一共有8行存储单元,从0开始编号,则3位二进制数就可以表示读取哪一行存储单元的地址(111(二进制)=7(十进制))。

    如有错误或者不当的地方,请多多指教!

    展开全文
  • 程序存储器(program storage): ...指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段

    程序存储器(program storage):

    在计算机主存储器中专门用来存放程序,子程序的一个区域。

    指令寄存器(IR):用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR)中,然后再传送至IR。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。

    程序计数器(PC):为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的地址,以此实现转移。有些机器中也称PC为指令指针IP(Instruction Pointer)。

    地址寄存器:用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止 。当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用地址寄存器和数据缓冲寄存器。


    展开全文
  • 介绍两部分内容:什么是存储器映射什么是寄存器寄存器映射 为了让大家对...什么是存储器映射 程序存储器、数据存储器寄存器和I/O端口排列在同一顺序的4GB地址空间内。这就是我们曾提到过的被控总线的连接部分,...

    介绍两部分内容:

    • 什么是存储器映射
    • 什么是寄存器及寄存器映射

    为了让大家对存储器与寄存器有一个更清楚的认识,并且为之后使用 C 语言来访问 STM32 寄存器内容打下基础。等明白了如何使用 C 语言封装底层寄存器,也就为后面学习库函数的开发做好了铺垫。什么是存储器映射
    程序存储器、数据存储器、寄存器和I/O端口排列在同一顺序的4GB地址空间内。这就是我们曾提到过的被控总线的连接部分,而编程时就是操作这一块地方。存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。 STM32F103ZET6 数据手册中存储器映射图如下所示。

    ad4e0a39de1dea604ab10aa6335a5d80.png


    从上图中可以看到 ARM 把这 4GB 的存储器空间平均分成了 8 块区域,每块区域的大小是 512MB,这个容量是非常大的,因此芯片厂商就在每块容量范围内设计各自特色的外设。但是每块区域容量占用越大,芯片成本就越高,所以说我们使用的 STM32 芯片都是只用了其中一部分。ARM 在对这 4GB 容
    量分块的时候是按照其功能划分,每块都有它特殊的用途。
    在这 8 个 Block 里面,要特别注意Block0、Block1 和 Block2 这 3 个块。因为其中包含了 STM32 芯片的内部 Flash、RAM 和片上外设。下面还是根据存储器映射图内信息来简单的介绍下这3个 Block 里面的具体区域功能划分。

    • Block0 内部区域功能划分

    Block0 主要用于设计片内的 FLASH, STM32F103 系列芯片内部 FLASH 最大是 512KB,我们使用的 STM32F103ZET6 的 FLASH 是 512KB。要在芯片内部集成更大的 FLASH 或者 SRAM 都意味着芯片成本的增加,所以往往片内集成的FLASH 都不会太大。512KB 的 FLASH 已经足够我们一般的应用开发。从图中可以看到 Block0 内部又划分了好多个功能块,我们按地址从低到高顺序依次介绍。
    0x0000 0000-0x0007 FFFF:取决于 BOOT 引脚,为 FLASH、系统存储器、SRAM 的别名。
    0x0008 0000-0x07FF FFFF:预留。
    0x0800 0000-0x0807 FFFF:片内 FLASH,我们编写的程序就放在这一区域

    0x0808 0000-0x1FFF EFFF:预留。
    0x1FFF F000-0x1FFF F7FF:系统存储器,里面存放的是 ST 出厂时烧写好的isp 自举程序,用户无法改动。使用串口下载的时候需要用到这部分程序。
    0x1FFF F800-0x1FFF F80F:选 项 字 节 ,用 于 配 置 读 写 保 护 、BOR 级别、软件/硬件看门狗以及器件处于待机或停止模式下的复位。当芯片不小心被锁住之后,我们可以从 RAM 里面启动来修改这部分相应的寄存器位。
    0x1FFF F810-0x1FFF FFFF:预留。

    • Block1 内部区域功能划分

    Block1用于设计片内的SRAM, 例如STM32F103ZET6 的 SRAM是64KB。从存储器映射图中可以看到 Block1 内部又划分了几个功能块,我们按地址从低到高顺序依次介绍。
    0x2000 0000-0x2000 FFFF:SRAM,容量为 64KB。
    0x2001 0000-0x3FFF FFFF:预留。

    • Block2 内部区域功能划分

    Block2 用于设计片内外设, 根据外设总线速度的不同, Block2 被划分为 AHB和 APB 两部分, APB 又被分成 APB1 和 APB2 总线。 这些都可以在上面存储器映射图中可看到。下面我们按地址从低到高顺序依次介绍。
    0x4000 0000-0x4000 77FF:APB1 总线外设。
    0x4000 7800-0x4000 FFFF:预留。
    0x4001 0000-0x4001 3FFF:APB2 总线外设。
    0x4001 4000-0x4001 7FFF:预留。
    0x4001 8000-0x4002 33FF:AHB 总线外设。
    0x4002 4400-0x5FFF FFFF:预留。
    在Block3、Block4、Block5中包含了FSMC扩展区域,可用于扩展如 SRAM,NORFLASH 和 NANDFLASH 等的外部存储器。什么是寄存器及寄存器映射
    简单来说,通过给特定功能的内存单元起一个别名,此别名即所谓的寄存器。寄存器映射就是给(已分配好地址且有特定功能的)内存单元起别名的过程。

    d939b70dd05a2cbf3f85ba5fa25b8bdb.png
    嵌入式开发直播课 - 深度剖析STM32第四讲:DMA专题讲解 - 创客学院直播室www.makeru.com.cn
    4a1745fa2b7bcefbaef82d231f2dcdc1.png
    展开全文
  • 存储器寄存器

    2020-08-25 16:20:51
    存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。 2、什么是寄存器寄存器映射 通过给有特定功能的内存单元起一个...

    1.什么是存储器映射

    存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射。

     

     

     

    2、什么是寄存器及寄存器映射

             通过给有特定功能的内存单元起一个别名,这个别名就是我们所说的寄存器。给已经分配好地址的有特定功能的内存单元起别名的过程叫寄存器映射。

    3、如何访问STM32寄存器内容

             访问STM32寄存器也就是操作STM32的内存单元,根据C语言指针的特点,可以使用指针来操作STM32的内存单元。

    假如我们要让STM32的GPIOC的第0管脚输出低电平,我们怎么使用C语言来处理?

             首先我们要知道GPIOC挂接在哪个总线上,需要知道其地址,STM32总线地址如下:

     

     

    使用C语言宏

    1)定义外设基地址:

    periph周围的

    #define PERIPH_BASE ((unsigned int)0x40000000)

    (强制定义为32位无符号整型)

    2)定义APB2总线基地址:

    #define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000)

    3)定义其端口地址:

    #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)

    有了外设端口地址后,还需要知道GPIOC端口的寄存器地址,如下表格:

     

    4、定义其端口寄存器地址:

    #define GPIOC_CRL                 *(unsigned int*)(GPIOC_BASE+0x00)

    #define GPIOC_CRH                *(unsigned int*)(GPIOC_BASE+0x04)

    #define GPIOC_IDR                  *(unsigned int*)(GPIOC_BASE+0x08)

    #define GPIOC_ODR                *(unsigned int*)(GPIOC_BASE+0x0C)

    #define GPIOC_BSRR               *(unsigned int*)(GPIOC_BASE+0x10)

    #define GPIOC_BRR                 *(unsigned int*)(GPIOC_BASE+0x14)

    #define GPIOC_LCKR               *(unsigned int*)(GPIOC_BASE+0x18)

    (主要在STM32中不认为是地址,而认为是立即数,所以强制类型为指针,转换成指针。为了操作指针·里的数据,就需要再加一个指针符号)
    这些寄存器具体的功能可以参考STM32F1中文参考手册。

     

    清除/置位寄存器      BRY/BSY   w写限权

     

    控制 GPIOC 引脚 0 输出低电平(即通过BSRR 寄存器的 BR0 置 1)

    GPIOC_BSRR = (0x01<<(16+0));    (左移16位)

     

    控制 GPIOC 引脚 0 输出高电平(即通过BSRR 寄存器的 BS0 置 1)

    GPIOC_BSRR = 0x01<<0;

     

    读取GPIOC端口所有引脚的电平(读 IDR 寄存器)

    unsigned int temp;

    temp = GPIOC_IDR;      

    (因为前面定义过了,所以不用写成temp = *(unsigned int *)GPIOC_IDR
     

     我们这里仅仅以GPIO这个外设为例,给大家讲解了如何使用C语言对寄存器封装的,对于其他的外设也是使用同样方法。其实到了后面的实验程序的编写时,我们都是使用ST公司提供的固件库,他把STM32所有外设都已经封装好了,我们这里分析这个封装过程只是想让大家更加清楚理解如何使用C来封装寄存器的。

     

    展开全文
  • 存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射(具体地址分配参考芯片数据手册及中文参考手册) 2.什么是寄存器及...
  • 程序存储器、数据存储器寄存器和I/O 端口排列在同一个顺序的4 GB 地址空间内 存储器映射: 存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个...
  • stm32存储器寄存器

    2020-09-27 21:54:24
    存储器映射:存储器本身没有地址,给存储器分配地址的过程就是存储器映射 这是ARM公司设计的stm32每部分地址控制哪部分内容,实际上并不会把4GB全部使用 寄存器寄存器映射 通过给有特定功能的内存单元起一个别名...
  • 一、寄存器寄存器映射存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射(具体地址分配参考芯片数据手册及中文参考手册)。...
  • 存储器寄存器(2)

    2021-01-16 14:29:35
    存储器本身不具备地址信息,它的地址是由芯片厂商或用户分配。 给存储器分配地址的过程叫出存储器映射。如果在分配一个地址则叫重映射。 1.2、存储区域划分 开发版4G容量的ARM按功能划分表 二、什么是寄存器...
  • 介绍两部分内容:什么是存储器映射什么是寄存器寄存器映射 为了让大家对...什么是存储器映射 程序存储器、数据存储器寄存器和I/O端口排列在同一顺序的4GB地址空间内。这就是我们曾提到过的被控总线的连接部分,...
  • 存储器本身不具有地址的信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就叫存储器映射。如果再分配一个地址就叫做重映射。 如下图所示STM32 F407ZGT6中存储器映射图。 2、什么是寄存器 给有特定...
  • 先明白定义再说区别和原理: <br />1、程序存储器(program storage)  在计算机的主存储器中专门用来存放程序、子程序的一个区域。 <br />2、指令寄存器(IR ):用来保存当前正在执行的一条...
  • stm32学习之路---存储器寄存器介绍

    千次阅读 2018-12-02 18:49:12
    存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射(具体地址分配参考芯片数据手册及中文参考手册) 比如分组block2里面的外设...
  • 一、寄存器寄存器映射存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射(具体地址分配参考芯片数据手册及中文参考手册)。...
  • 一、RAM存储器 如上图所示,数据的写入和读出都不是同一个口,而且写入后的数据是直接到加法器中的。这样数据就会变得不好控制,所以需要改进,如下图 ...现实计算机中不仅仅只有几层,如以G为单位...其中的地址...
  • 寄存器在CPU的内部,它的访问速度快,但容量小(8086微处理器只有14个16位...存储器在CPU的外部,它的访问速度比寄存器慢,容量大(20根地址线寻址1M内存空间)、成本低,存储单元用地址来标识,地址可用各种方式形成。
  • 地址转换函数在每一个任务中定义,在一个任务中的虚拟地址空间映射到物理内存的一个部分,而另一个任务的虚拟地址空间映射到物理存储器中的另外区域。...就是把一个地址连接到另一个地址。例如,内存单元A的地址为X,...
  • 内存中字的存储前面所学的内容,接触到的都以字节为存储单元进行存储,现在我们要讲以字为存储...高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。我们将起始地址为N的字单元简称...
  • 关于LogisimLogisim在仿真软件行列中算是比较直观的软件了,它能...指令的形式也是多种多样,按照格式可分为有二三单地址指令,根据访问部件的不同可分为立即数,RR,SS,RS等指令本实验通过Logisim实现:1.寄存器->...
  • 关于LogisimLogisim在仿真软件行列中算是比较直观的软件了,它能...指令的形式也是多种多样,按照格式可分为有二三单地址指令,根据访问部件的不同可分为立即数,RR,SS,RS等指令本实验通过Logisim实现:1.寄存器->...
  • 还有要明白存储器的分段管理模式,存储单元的地址的表示法和物理地址的形成方式,当然也不难理解。 一 寄存器寄存器是CPU的内部数据存储资源,是汇编程序能用到的硬件资源之一,由于存取速度比内存快很多...
  • 程序存储器、数据存储器寄存器和 I/O 端口排列在同一个顺序的 4 GB 地址空间内。也就是被总线连接的部分。我们在编程的时候,也是对这些功能部件进行操作。存储器本身不具有地址信息,它的地址是由芯片厂商或用户...
  • 寄存器点亮LED灯,存储器映射,寄存器映射 存储区区域功能的划分的过程,将存储器分为不同的Block,每个Block有其对应的地址,给存储器分配地址的过程就叫存储器映射。 每个单元有不同功能,可控制对应的...
  • pic单片机,想必大家都比较熟悉。其中,pic单片机简介、pic单片机优势以及pic单片机不足等内容,皆是入门级知识。本文将向大家介绍pic单片机的...特殊功用寄存器地址对用户不透明。  一、操作寄存器
  • 【嵌入式系统】存储器映射与寄存器映射原理 一、存储器映射 图1 存储器映射 存储器在产家制作完成后是一片没有任何信息的物理存储器,而CPU要进行访存就涉及到内存地址的概念,因此存储器映射就是为物理内存按一定...
  • 寄存器

    2019-05-16 18:21:01
    程序员可见: 通用寄存器(R0) ...存储器地址寄存器(MAR) 存储操作数在内存中的地址。 存储器数据寄存器(MDR) 存放读出或写入主存数据的主存数据寄存器。 地址寄存器(AR) 用来保存...
  • 整块4G存储器开始地址标为0x0000_0000,结束地址为0xFFFF_FFFF,地址的位数是32位,那么2^32=4,294,967,296。 由于一个基本的存储单元是8bits即1Byte(每个地址对应一个存储单元,这样如果只是访问某一bit就要使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,772
精华内容 1,108
关键字:

存储器地址寄存器