Board logo

标题: [求助]XD系列PE生成的宏定义怎么理解? [打印本页]

作者: wangnan    时间: 2008-5-18 17:39     标题: [求助]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从何而来?##是什么?

请高手指点一二!!!


作者: wangnan    时间: 2008-5-18 20:07

没人帮帮忙吗?自己顶一下先!
作者: wangnan    时间: 2008-5-19 13:17

是不是我问的问题太简单,大家不屑于回答啊???来个人帮帮忙啊!!
作者: wangnan    时间: 2008-5-20 15:59

晕死,等两天了还是没人理我。呜呜!!!版主大人,康桥大大来救救我啊!
作者: strongchen    时间: 2008-5-21 11:47

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

setReg16Bit(PORTAB,BIT0);

则等同于:

PORTAB |= PORTAB_BIT0_MASK;

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


作者: g_xiaocheng    时间: 2008-5-21 15:08

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

不然学的真的很辛苦哦


作者: strongchen    时间: 2008-5-21 15:52

我会尽力的。
作者: 康桥人    时间: 2008-5-21 16:58

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


作者: wangnan    时间: 2008-5-21 22:42

感谢版主回复。原来如此!!!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0