1)字节操作
在嵌入式系统中,很多寄存器可能都是多字节的(如16位和32位),而实际上,我们可能需要在其中写入或读出单个字节,可以用下面的宏:
#define GETBYTE0(x) (x & 0x000000ff) //通过位与(&)操作使得最后8位保持不变,其余位为0
#define GETBYTE1(x) (x & 0x0000ff00)
#define GETBYTE2(x) (x & 0x00ff0000)
#define GETBYTE3(x) (x & 0xff000000)
同样,将一个32位数的指定字节全部置为1或者或者清0,用如下宏:
#define SETBYTE0(x) (x | 0x000000ff) //通过位或(|)操作使得最后8位为1,其余位保持不变
#define SETBYTE1(x) (x | 0x0000ff00)
#define SETBYTE2(x) (x | 0x00ff0000)
#define SETBYTE3(x) (x | 0xff000000)
#define CLRBYTE0(x) (x & 0xffffff00) //通过位与(|)操作使得最后8位为0,其余位保持不变
#define CLRBYTE1(x) (x & 0xffff0
355



被折叠的 条评论
为什么被折叠?



