*(volatile unsigned long *) 语法
#define GPJ2CON (*(volatile unsigned long *) 0xE0200280)
开始对于上面的语法不太理解,但通过拆分,我们可以看的更明白:
1、(unsigned long *)变量,代表“变量”是一个unsigned long类型的指针;例如:(unsigned long *)i ,语句中 i 即为 (unsigned long *)的一个指针;
2、volatile是一个修饰符,告诉编译器此段代码不要优化;因此,(volatile unsigned long *)变量,意思是未优化指针类型的变量;例如:(volatile unsigned long *)i ,语句中 i 即为 (volatile unsigned long *)的一个指针;
3、(volatile unsigned long *) 0xE0200280,此处把变量换成了固定地址,意思是(volatile unsigned long *)指针指向固定的地址 0xE0200280
4、前面再加一个*,即 (volatile unsigned long *) 0xE0200280 代表 GPJ2CON 是一个变量,我们既可以给固定地址中赋值,也可以从固定地址中取值。例如:(volatile unsigned long *)i ,语句中 i 即为 (volatile unsigned long *)的一个指针,而 *i 即代表 i 中存储的值,我们既可以对其赋值,又可以从其中取值;
*(volatile unsigned long *) 语法的更多相关文章
- (C)理解#define write(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b))
理解 #define write(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b)) 嵌入式系统编程,要求程序员能够利用C语言访问固 ...
- C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- 嵌入式中的 *(volatile unsigned int *)0x500 解释
C语言中*(volatile unsigned int *)0x500的解释: 如下: (unsigned int *)0x500:将地址0x500强制转化为int型指针*(unsigned int ...
- 指针之 *((volatile unsigned long *)(x))解析
今天重新温习了一下C语言的指针部分,突然想到了经常会碰见的一种宏定义:#define PGAS (*((volatile unsinged long *)(x))) 在解析该宏定义前,先看看指针变量的 ...
- (*(volatile unsigned long *)详解
(*(volatile unsigned long *) 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实 ...
- gcc -02引起内存溢出'unsigned i'应修订为'volatile unsigned i'
2017-12-13 10:44:19gcc -02引起内存溢出'unsigned i'应修订为'volatile unsigned i' 1.3.100 driver/char/random.cst ...
- 【嵌入式】——对#define GPBCON (*(volatile unsigned long*)0x56000010)的理解
#define GPBCON (*(volatile unsigned long*)0x56000010) 1:volatile 当计算机需要一个数值的时候,会先把内存中的值读取到寄存器,然后下次在使 ...
- #define GPFCON (* (volatile unsigned long * )0x56000050 )
int a; int *p; p = &a; *p = 0x100; //a=0x100 p = (int *)0x56000050; *p =0x100; *( ( int * ) 0x56 ...
- 嵌入式开发(*(volatile unsigned long *)) 认识
一个.说明 (*(volatile unsigned long *)) 这个语句对于不同的计算机体系结构,设备可能是port映射,也可能是内存映射的. 假设系统结构支持独立的IO地址空间.而且是por ...
随机推荐
- C# TextBox 只能输入数字
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { TextBox txt = sender as TextBox ...
- xunsearch增量索引改进版
最近测试了xunserach全文索引程序.xunsearch只有LINUX版,所以想用windows服务器请使用其它全文索引程序.xunsearch本身不像coreseek那样自带增量索引的功能,所以 ...
- HBase 安装过程记录
http://blog.csdn.net/chenxingzhen001/article/details/7756129 环境: 操作系统Centos 6.4 32-bit 三台节点 ip ...
- Maximum number of WAL files in the pg_xlog directory (2)
Jeff Janes: Hi, As part of our monitoring work for our customers, we stumbled upon an issue with our ...
- AR、美颜、机器人:计算机视觉库几乎无所不在
最近日本推出的反美颜应用Primo可能让感到不胜惶恐.其实,这样反人类的应用,你也能写出,不过必须了解的一些技术,就是计算机视觉.目前,计算机视觉库包括FastCV.OpenCV.JavaCV等. 相 ...
- python3.0_day9_scoket基础之篇
一.socket简单介绍 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求 ...
- Python 统计IIS日志行数
__author__ = 'Administrator' import codecs def blocks(file, size=65536): while True: b = file.read(s ...
- messagepcak 资料
1,今天在hacknews上看到很多人对messagepack的争论.首先了解什么是MessagePack:MessagePack is a binary-based efficient object ...
- apache commons vfs 文件夹监控
package test.vfs; import java.io.File; import org.apache.commons.logging.Log; import org.apache.comm ...
- FAQ unzip无法解压文件
[root@TEST144239 tmp]# unzip linx64_11gR2_database_1of2.zipArchive: linx64_11gR2_database_1of2.zipw ...