#define write_gpio_bit(x, v)
({
GPDAT(GRAB_PORT((x))) &= ~(0x1 << GRAB_OFS((x)));
GPDAT(GRAB_PORT((x))) |= ((v) << GRAB_OFS((x)));
})
#define GRAB_PORT(x) (((x) & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT)
#define GPIO_PORT_MASK 0x0000ff00
#define GPIO_PORT_SHIFTT 8
((x) & GPIO_PORT_MASK) ---> ( (2<<8 | 8 << 0) & 0x0000ff00) ---> 0x00000200
然后,
0x00000200 >> GPIO_PORT_SHIFT ---> 0x00000200 >> 8 ---> 0x2
#define GRAB_OFS(x) (((x) & GPIO_OFS_MASK) >> GPIO_OFS_SHIFT)
#define GPIO_OFS_MASK 0x000000ff
#define GPIO_OFS_SHIFT 0
((x) & GPIO_OFS_MASK ---> ( ( 2<<8 | 8 << 0) & 0x000000ff ) ---> 0x8
然后,
0x8 >> GPIO_OFS_SHIFT ---> 0x8 >> 0 ---> 0x8
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |