|
UCOS II的程序问题、#define __IO_REG32_BIT(NAME, ADDRESS,
[复制链接]
#define __IO_REG32_BIT(NAME, ADDRESS, ATTRIBUTE, BIT_STRUCT)\
volatile __no_init ATTRIBUTE union \
{ \
unsigned long NAME; \
BIT_STRUCT NAME ## _bit; \
} @ ADDRESS
上面的程序看不懂了,,
在下面这句程序中进行了引用:
__IO_REG32_BIT(IODIR, 0xE0028000,__READ ,__gpio_bits);
对NAME操作便可以对ADDRESS的寄存器进行操作,那它又是具体怎么运行的呢?例如:
IODIR=1<<4;
请大家帮忙分析一下了!谢谢!
结构体,__gpio_bits的定义如下:
typedef struct {
__REG32 P0_0 : 1;
__REG32 P0_1 : 1;
__REG32 P0_2 : 1;
__REG32 P0_3 : 1;
__REG32 P0_4 : 1;
__REG32 P0_5 : 1;
__REG32 P0_6 : 1;
__REG32 P0_7 : 1;
__REG32 P0_8 : 1;
__REG32 P0_9 : 1;
__REG32 P0_10 : 1;
__REG32 P0_11 : 1;
__REG32 P0_12 : 1;
__REG32 P0_13 : 1;
__REG32 P0_14 : 1;
__REG32 P0_15 : 1;
__REG32 P0_16 : 1;
__REG32 P0_17 : 1;
__REG32 P0_18 : 1;
__REG32 P0_19 : 1;
__REG32 P0_20 : 1;
__REG32 P0_21 : 1;
__REG32 P0_22 : 1;
__REG32 P0_23 : 1;
__REG32 P0_24 : 1;
__REG32 P0_25 : 1;
__REG32 P0_26 : 1;
__REG32 P0_27 : 1;
__REG32 P0_28 : 1;
__REG32 P0_29 : 1;
__REG32 P0_30 : 1;
__REG32 P0_31 : 1;
} __gpio_bits;
|
|