北国孤月 发表于 2010-12-30 16:18:39

#difine pISR_EINT0(*(unsigned*)(_ISR_STARTADDREs+0x84))

#difine pISR_EINT0(*(unsigned*)(_ISR_STARTADDREs+0x84))


这句话是什么意思?

谢谢!!!!!

天嵌_support1 发表于 2010-12-30 17:19:56

1# 北国孤月


执行中断处理函数入口地址

北国孤月 发表于 2010-12-30 19:17:30

2# embedsky_lxt

这句话是不是定义了一个指向指针的指针?

吕氏春秋8266 发表于 2010-12-30 19:40:05

(unsigned*)(_ISR_STARTADDREs+0x84)这是定义一个指针
(*(unsigned*)(_ISR_STARTADDREs+0x84))表示向该指针指向的内存赋值

北国孤月 发表于 2010-12-30 20:47:29

4# 吕氏春秋8266


网上说:(unsigned*)(_ISR_STARTADDREs+0x84) 是把一个数转换为地址,

然后,*(unsigned*)(_ISR_STARTADDREs+0x84)是指向该地址的指针,这是怎么回事,还不不太明白。。

吕氏春秋8266 发表于 2010-12-31 08:46:03

在C语言中,如果P为一个指针,刚*P表示该指针所指向内存的数据
考虑一个C语言中最基本的问题,要求用指针对地址0x54000018的数据(100)进行读写,程序如下:
INT I;
INT *P;                                    定义P为指针
P=(INT *)0x54000018;            将整数0x54000018转换为指针并赋值于P
I=*P;                                       将地址0x54000018保存的数据100赋值于I,即I=100
*P=200;                                  将200保存在0x54000018处。
同理,在上面我们可以定义
P=(unsigned*)(_ISR_STARTADDREs+0x84)即将整数转换为指针并赋值于P
对该地址进行读写引用*P即*P=*(unsigned*)(_ISR_STARTADDREs+0x84)
我们定义#define pISR_EINT0 *P,用pISR_EINT0来代替*P对地址_ISR_STARTADDREs+0x84处的数据进行操作,即
#define pISR_EINT0 ,*(unsigned*)(_ISR_STARTADDREs+0x84)
pISR_EINT0是指向内存 _ISR_STARTADDREs+0x84的数据

pISR_EINT0=100,即将内存_ISR_STARTADDREs+0x84处数据赋值为100
I=pISR_EINT0将将内存_ISR_STARTADDREs+0x84处数据赋值于I.

北国孤月 发表于 2010-12-31 09:35:16

6# 吕氏春秋8266


呀!彻底理解了,谢谢谢谢谢谢了。。。佩服。。。讲得一个字:透彻,
两个字:犀利,
三个字:给力。。。。。。
页: [1]
查看完整版本: #difine pISR_EINT0(*(unsigned*)(_ISR_STARTADDREs+0x84))