MSP430头文件问题
化蝶为蛹10:36:50#defineP1IN_(0x0020)/*Port1Input*/READ_ONLYDEFC(P1IN,P1IN_)其中,#defineDEFC...
化蝶为蛹 10:36:50
#define P1IN_ (0x0020) /* Port 1 Input */
READ_ONLY DEFC( P1IN , P1IN_)
其中,
#define DEFC(name, address) __no_init volatile unsigned char name @ address;
#define READ_ONLY const
问题1是:P1IN是地址0x0020的一个指针呢?并且这个指针放在了ROM中,不会被优化,不会初始化。
问题2是:C430中的取地址符号是 @ 对吗?C中的取地址符号是 & 。@和&用法一样对吗? 展开
#define P1IN_ (0x0020) /* Port 1 Input */
READ_ONLY DEFC( P1IN , P1IN_)
其中,
#define DEFC(name, address) __no_init volatile unsigned char name @ address;
#define READ_ONLY const
问题1是:P1IN是地址0x0020的一个指针呢?并且这个指针放在了ROM中,不会被优化,不会初始化。
问题2是:C430中的取地址符号是 @ 对吗?C中的取地址符号是 & 。@和&用法一样对吗? 展开
1个回答
展开全部
P1IN 是一个寄存器映射,可以当做变量来用,不是指针,(0x0020)就是寄存器地址
@符号就是at,表示将变量定位在指定的地址上,只能在变量声明的时候使用
&是取址符,表示取出变量的地址,目的就是获取变量地址
两个符号是完全不一样的东西.
另外430使用的就是标准C,C的东西都可以用的.
@符号就是at,表示将变量定位在指定的地址上,只能在变量声明的时候使用
&是取址符,表示取出变量的地址,目的就是获取变量地址
两个符号是完全不一样的东西.
另外430使用的就是标准C,C的东西都可以用的.
追问
那请问是不是__no_init volatile unsigned char name @ address的意味有点类似与sfrb(或者sfrw)的用法呢?
905893061 希望能认识您!
追答
意思是一样的
这两个更接近于汇编的用法,新的版本中已经不太使用了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询