请教这个定义在驱动程序里是什么意思?
问一下,有谁用过这个#define io_p2v(x) ((x) | 0xa0000000)定义,这个定义是什么意思?在程序里面就可以用它来直接对芯片的寄存器赋值了,如下:
#define rSPCON0 io_p2v(0x59000000 + 0x00)
*(unsigned int *)rSPCON0 = (*(unsigned int *)rSPCON0)|SPI_CLOCK_ENABLE|SPI_SELECT_MASTER;(在设备驱动程序中) #define io_p2v(x)((x) | 0xa0000000)这个是宏定义,不懂可以翻书,任何C语言的书籍应该都会讲的;
#define rSPCON0 io_p2v(0x59000000 + 0x00)依然是宏定义
上面两个宏定义的作用就是定义rSPCON0寄存器的地址,具体地址看芯片手册了
*(unsigned int *)rSPCON0 = (*(unsigned int *)rSPCON0)|SPI_CLOCK_ENABLE|SPI_SELECT_MASTER;(在设备驱动程序中)
最重要是理解*(unsigned int *)rSPCON0 ,这个理解了整个也就理解。
(unsigned int *)rSPCON0 的意思是将rSPCON0 代表的地址强制转换为指针,前面加“*”就是对该指针所指的地址赋值,也就是向rSPCON0 寄存器赋值了
不知道理解是否正确,欢迎拍砖
另外不知道这里为什么没有加volatile关键字,??
页:
[1]