中断问题
#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语言功底不够哦