#define PA6 (*((volatile unsigned long *) 0x40004200))
上述定义是什么意思?我只能推断PA6是一个指向十六进制地址的指针。
#define PA6 (*((volatile unsigned long *) 0x40004200))
while (PA6 == 0) {
/* do something else while waiting for PA6 to become non-zero */
}
但是由于指针是volatile
类型,编译器每次都需要执行内存读取操作。
它以实现定义的方式将整数0x40004200
转换为指针volatile unsigned long *
,然后对指针进行解引用。
这似乎类似于内存映射I/O端口的声明。