ARM如何分配寄存器地址!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM如何分配寄存器地址!相关的知识,希望对你有一定的参考价值。

typedef struct

__IO uint32_t FIODIR;
uint32_t RESERVED0[3];
__IO uint32_t FIOMASK;
__IO uint32_t FIOPIN;
__IO uint32_t FiosET;
__O uint32_t FIOCLR;
GPIO_TypeDef;
在这个结构体中,查周立功中LPC1700表得:FIO1MASK地址为0x2009C030 ,而 FIO1PIN地址为0x2009C034 ,FIO1SET地址为0x2009C038 。
说明FIO1MASK占用了4个地址,同样FIO1PIN与FIO1SET都是占用了4个地址。
本人不明白为什么FIO1MASK占用了4个地址而不是1个地址????????

教你操作寄存器! 首先你要知道这个寄存器的地址.
比如说我知道某寄存器地址是4001140cH, 然后就
*(unsigned long*)0x4001140c=~0;//赋最大值(仅供参考)
arm芯片是统一编址的,对寄存器可间接寻址.
(即 可使用指针)
51单片机 不是, 它地址重叠,
正是用这两种不同的寻址方式来
区分操作的是内存还是寄存器..
参考技术A 地址分配是以字节为单位的,4个是对的 参考技术B 为什么不是 参考技术C 32位,4个字节,当然占用4个地址啊

以上是关于ARM如何分配寄存器地址!的主要内容,如果未能解决你的问题,请参考以下文章

如何在汇编函数中将元素数组作为参数传递时转发ARM寄存器的地址指针

将标签地址获取到 ARM 上的寄存器?

3 . 存储器映射 和 寄存器映射

004.ARM指令之LDR

ARM PC寄存器

ARM NEON:从 NEON 寄存器(Q/D 寄存器)中包含的地址加载数据