打印

44b0x启动程序的C语言问题

[复制链接]
1979|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
biehoff|  楼主 | 2008-10-6 21:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了44B0X.H这个头文件  发现都是用#define 定义的寄存器地址
好不容易搞明白了
#define rIISFCON    (*(volatile unsigned *)0x1d1800c)
的意思  发现下面有一句
#define IISFIF    ((volatile unsigned short *)0x1d18012)
IISFIF 其实也是一个寄存器啊  怎么定义里面跟前面比 少了一个 * 
少一个 * 大不一样了吧  难道是定义IISFIF 是指针  猜测!
干嘛要这么用  直接象前面那样定义成 后面常数映射的地址就好了啊
有什么玄妙只出 望高手解答

相关帖子

沙发
阿南| | 2008-10-6 23:17 | 只看该作者

一般都是第一种方式

使用特权

评论回复
板凳
biehoff|  楼主 | 2008-11-10 12:33 | 只看该作者

我不是故意挖坟的···

今天试验了下 在ADS环境里

#define IISFIF    ((volatile unsigned short *)0x1d18010)

然后引用

IISFIF=0x55;  //0x55随便写的

编译器报错 illegal in the context of an 1-value<integer constant>

改为
#define IISFIF    (*(volatile unsigned short *)0x1d18010)
才可以通过编译

使用特权

评论回复
地板
biehoff|  楼主 | 2008-11-10 12:34 | 只看该作者

RE

阿南版主你解释下吧 
     “一般都是第一种方式”
是只能用第一种方式吧···

使用特权

评论回复
5
HWM| | 2008-11-10 12:41 | 只看该作者

一个是“常数”,一个是“指针”

“define IISFIF    ((volatile unsigned short *)0x1d18010)

然后引用

IISFIF=0x55;  //0x55随便写的”

向常数赋值自然是错了。

正确的是:

    *IISFIF=0x55;

使用特权

评论回复
6
biehoff|  楼主 | 2008-11-10 16:54 | 只看该作者

RE

我也觉得是这样
你说的 *IISFIF=0x55; 
和 改成define IISFIF    (*(volatile unsigned short *)0x1d18010)
是一样效果吧
但是 开发板送的44b.h文件里就是
define IISFIF    ((volatile unsigned short *)0x1d18010)
估计是手误写错了···

使用特权

评论回复
7
木瓜498283984| | 2012-11-6 16:30 | 只看该作者
虽然是很早的贴了,可是今天帮上我的忙了,还是咱21ic的牛人多啊,谢谢了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

138

帖子

0

粉丝