#define pISR_IRQ (*(unsigned *)(_ISR_STARTADDRESS + 0x18))
#define pISR_FRQ (*(unsigned *)(_ISR_STARTADDRESS + 0x1c))
#define pISR_TIMER0 (*(unsigned *)(_ISR_STARTADDRESS + 0x48))
请问一下,这几个宏是表示什么意思,,???
_ISR_STARTADDRESS 是什么意思?
+ 0x48是什么意思??
(*(unsigned *) 是什么意思
pISR_TIMER0表示一个地址,,怎么又*(unsigned *) 呢,。,??
------解决方案--------------------
_ISR_STARTADDRESS 一般是一个地址 比如可能是0x08ff003C,一般是一组寄存器的基地址
+0x48 就是特定寄存器的地址
然后把这个地址通过(unsigned *) 强制转化为一个指针
再通过 * 把这个指针的值取出来 其实就是去取出这个寄存器的值
所以pISR_IRQ 就是取出 _ISR_STARTADDRESS + 0x18 这个地址所对应寄存器内的值
其他两个也同理
------解决方案--------------------
对指针概念理解不透,C语言功底不够哦
------解决方案--------------------
感觉lz理解错了应该是先看(unsiged *)(_ISR_STARTADDRESS +0X18),就是把后面的内容强转成(unsiged *)的格式,然后在取*。