今天在阅读RF_Example_Code_v1.0中头文件cc430x613x.h时发现了几部分的疑问。
首先来看一下cc430x613x.h 中的3个#define的例子:
#define DEFC(name, address) __no_init volatile unsigned char name @ address;
#define DEFW(name, address) __no_init volatile unsigned short name @ address;
#define DEFCW(name, address) __no_init union
{
struct
{
volatile unsigned char name##_L;
volatile unsigned char name##_H;
};
volatile unsigned shortname;
} @ address;
前面的两个#define的用法是一样的。首先我可以发现,在宏定义里面都有一个关键字__no_init。查看了《MSP430 IAR C/EC++ Compiler Reference Guide》内的IAR Language Extension Overview 可以发现,__no_init是IAR扩展语法里面的一个扩展关键字。作用是声明一个non-volatile类型的内存地址(Support non-valotile memory)。
于是解决了__no_init的问题。
再者对@这个字符存在一定的疑问,于是上网查了查资料。虽然对于@这个字符的用法还是不是很明确,但是可以明确的是:
#define DEFC(name, address)