首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]XD系列PE生成的宏定义怎么理解?

[求助]XD系列PE生成的宏定义怎么理解?

使用PE时,它自动生成了一些宏定义。不太理解是怎么回事,定义如下:

/******************************************************************/
/* Uniform multiplatform peripheral access macros - 16 bit access */
/******************************************************************/
#define setReg16Bit(RegName, BitName) (RegName |= RegName##_##BitName##_##MASK)
#define clrReg16Bit(RegName, BitName) (RegName &= ~RegName##_##BitName##_##MASK)
#define invertReg16Bit(RegName, BitName) (RegName ^= RegName##_##BitName##_##MASK)
#define testReg16Bit(RegName, BitName) (RegName & RegName##_##BitName##_##MASK)
//------------------------------------------------------------------------------------------------------------------------------------------------------

比方说定义的第一个宏,右边括号内的应该就是具体运算了吧,那么RegName##_##BitName##_##MASK代表什么意思呢?这里的MASK从何而来?##是什么?

请高手指点一二!!!

没人帮帮忙吗?自己顶一下先!
是不是我问的问题太简单,大家不屑于回答啊???来个人帮帮忙啊!!
晕死,等两天了还是没人理我。呜呜!!!版主大人,康桥大大来救救我啊!

##_##就表示用下划线“_”。例如,若写代码如:

setReg16Bit(PORTAB,BIT0);

则等同于:

PORTAB |= PORTAB_BIT0_MASK;

其中PORTAB_BIT0_MASK是在头文件中定义的。

海纳百川  有容乃大

呵呵,斑竹要多关心一下我们这些新手!

不然学的真的很辛苦哦

路是一步一步走出来的!!
我会尽力的。
海纳百川  有容乃大

很少用PE,代码都是自己写的,惭愧啊,,

个人BLOG:http://blog.eccn.com/u/107300/index.htm
感谢版主回复。原来如此!!!
返回列表