知识点1 —— 强制类型转换
#define GPBCON (unsigned long *)0x56000010 //GPBCON是个无符号的长整型地址指针值,是地址
0x56000010在ARM处理器中,只能识别为一个十六进制数值,具体是数据还是地址,它并不能自动区分.
而使用 ((volatile unsigned long *)0x56000010) ,对此数据进行强制转换,表明此数值为一个无符号的长整型地址指针值,关键字volatile告诉编译器它指向的内容是易变的,可能会被硬件等意外地修改.这一点很关键.
(*((volatile unsigned long *)0x56000010)) ,则是获取指针所指向地址处的内容,从而,使用了#define 预处理语句对GPBCON进行定义后,在用户程序中,对GPBCON的操作,就等同于在0x56000010地址上进行读写操作.
发表评论 评论 (0 个评论)