天嵌 ARM开发社区

 找回密码
 注册
查看: 2353|回复: 6

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

[复制链接]
北国孤月 发表于 2010-12-30 16:18:39 | 显示全部楼层 |阅读模式
#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


呀!彻底理解了,谢谢谢谢谢谢了。。。佩服。。。讲得一个字:透彻,
两个字:犀利,
三个字:给力。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-24 04:05 , Processed in 1.062500 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表