使用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,代码都是自己写的,惭愧啊,,
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |