您的位置 首页 产品

ARM寄存器地址界说

今天学习DMA,需要传递地址,我想从串口传到寄存器来点亮led灯,只是学习一下DMA的原理,首先说明一点的是程序还很烂,没有做成功。其中发…

今日学习DMA,需求传递地址,我想从串口传到寄存器来点亮led灯,仅仅学习一下DMA的原理,首要阐明一点的是程序还很烂,没有做成功。其间发现了一个问题,便是寄存器的地址#define rGPBCON (*(volatile unsigned *)0x56000010)我看了这个的时分,究竟这是界说的一个什么呢?上网搜了一下,总结一下。

1.首要这是界说的一个变量,这一点要十分理解,由于rGPBCON便是一个寄存器变量,咱们能够给他赋值对他读写操作,这是一个变量,而不是一个指针或许地址。

2.这是一个地址固定的变量,曾经分配的变量地址是随机的,但这儿的地址是固定的,便是0x56000010。

3.#define rGPBCON (*(volatile unsigned *)0x56000010)宏界说的进程,首要把0x56000010这个物理地址强制转换为指针变量

(volatile unsigned *)0x56000010 这便是一个指针变量。然后再用*符号对指针变量操作相当于*p是一个变量。其间由于这儿是寄存器映射到内存是虚地址,所以需求用关键字volatile写回,而不是读缓冲器中的值。

4. 关于rGPBCON这个特别寄存器究竟有没有这样一个寄存器?

这个我一向很利诱,直到今日,我才理解,其实没有这样一个寄存器,这个寄存器是0x56000010开端的四个字节的内存地址的别号,rGPBCON是占用内存的,而不存在IO空间或许说IO寄存器。由于ARM底子久没有IO空间,直接映射到内存空间。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/276573.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部