导航技术论坛's Archiver

109010118 发表于 2011-4-19 09:15

2021头文件 寄存器定义 求助

在GP2021.H的头文件里有这样的定义
/定义GP2021相关器
#define CODE_SLEW(i)    pGPS[(0+((i)<<3))<<1]


extern unsigned short *pGPS;
这里的意思是不是声明了一个pGPS指针,CODE_SLEW(i)就是这个寄存器的值???
在外部的源文件里pGPS是不是还要定义成一个指针,在外面怎么定义pGPS???
unsigned short *pGPS






我用的是TI公司DSP的编译器CCS,
在头文件里这样定义寄存器
#define CH_CODE_DCO_INCR_HIGH(i)  0x80000000+((8*i+0x5)<<1)
#define CH_CODE_DCO_INCR_LOW(i)  0x80000000+((8*i+0x6)<<1)
然后再外面的源文件对它进行赋值,
void set_code_dco_freq(Uint8 ch, Uint32 code_freq)//设置码环DCO的频率,写控制字到2021
{
        *(Uint16 *)CH_CODE_DCO_INCR_LOW(ch)=(Uint16)(code_freq&0x0000FFFF);
        *(Uint16 *)CH_CODE_DCO_INCR_HIGH(ch)=(Uint16)(code_freq>>16);
}
t跳出一个错误,line 30: error: expression must be a modifiable lvalue
如果像我这样要把寄存器定义为地址的值,应该怎么改呢???

amoer 发表于 2011-5-3 20:34

*(Uint16 *)CH_CODE_DCO_INCR_LOW(ch)这样的写法是取地址里的数据进行赋值,不是一个合格的左值,把最前面的*去掉就可以了

109010118 发表于 2011-5-3 22:25

[b] [url=http://www.hellognss.com/bbs/redirect.php?goto=findpost&pid=4056&ptid=858]2#[/url] [i]amoer[/i] [/b]
去掉*号之后,是不是就把后面那值写进这个地址不?

109010118 发表于 2011-5-3 22:30

[b] [url=http://www.hellognss.com/bbs/redirect.php?goto=findpost&pid=4056&ptid=858]2#[/url] [i]amoer[/i] [/b]
如果*号去掉,不是把指针本身改掉了吗??
我先试试看

yingxionga 发表于 2013-4-2 22:20

[quote] 2# amoer  
去掉*号之后,是不是就把后面那值写进这个地址不?
[size=2][color=#999999]109010118 发表于 2011-5-3 22:25[/color] [url=http://www.hellognss.com/bbs/redirect.php?goto=findpost&pid=4059&ptid=858][img]http://www.hellognss.com/bbs/images/common/back.gif[/img][/url][/size][/quote]
1                  1

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.