我是新来的嵌入式编码。我正在研究ARM lm3s8962控制器。
任何人都可以向我解释下面的代码在做什么?它正在实施位撞,但我想知道它是如何实施它。
//*****************************************************************************
//
// Macros for hardware access, both direct and via the bit-band region.
//
//*****************************************************************************
#define HWREG(x) \
(*((volatile unsigned long *)(x)))
#define HWREGH(x) \
(*((volatile unsigned short *)(x)))
#define HWREGB(x) \
(*((volatile unsigned char *)(x)))
#define HWREGBITW(x, b) \
HWREG(((unsigned long)(x) & 0xF0000000) | 0x02000000 | \
(((unsigned long)(x) & 0x000FFFFF) << 5) | ((b) << 2))
#define HWREGBITH(x, b) \
HWREGH(((unsigned long)(x) & 0xF0000000) | 0x02000000 | \
(((unsigned long)(x) & 0x000FFFFF) << 5) | ((b) << 2))
#define HWREGBITB(x, b) \
HWREGB(((unsigned long)(x) & 0xF0000000) | 0x02000000 | \
(((unsigned long)(x) & 0x000FFFFF) << 5) | ((b) << 2))
呃,那里有什么?他们只是宏/程序员快捷方式来做事情。他们自己不做任何事情。 – tangrs 2013-03-12 06:30:58
谢谢你的回复,我想知道过程如何继续,就像hWREG返回hwregh和b的情况一样,但是当涉及到HWREGBITB(X,b)时,它设置了位(如果m不是错)我想知道它是如何设置这一点的,因为我在这么多转换操作中感到困惑,请问你能解释一下吗? thanx再次 – user2159417 2013-03-12 08:11:51