typedef struct
{
union
{
__IO uint32_t u32ISPCON;
struct
{
__IO uint32_t ISPEN:1;
__IO uint32_t BS:1;
__I uint32_t RESERVE0:2;
__IO uint32_t CFGUEN:1;
__IO uint32_t LDUEN:1;
__IO uint32_t ISPFF:1;
__IO uint32_t SWRST:1;
__IO uint32_t PT:3;
__I uint32_t RESERVE1:1;
__IO uint32_t ET:3;
__I uint32_t RESERVE2:17;
} ISPCON;
};
union
{
__IO uint32_t u32ISPADR;
__IO uint32_t ISPADR;
};
union
{
__IO uint32_t u32ISPDAT;
__IO uint32_t ISPDAT;
};
union
{
__IO uint32_t u32ISPCMD;
struct
{
__IO uint32_t FCTRL:4;
__IO uint32_t FCEN:1;
__IO uint32_t FOEN:1;
__I uint32_t RESERVE:26;
} ISPCMD;
};
union
{
__I uint32_t u32ISPTRG;
struct
{
__IO uint32_t ISPGO:1;
__I uint32_t RESERVE:31;
} ISPTRG;
};
union
{
__I uint32_t u32DFBADR;
__I uint32_t DFBADR;
};
union
{
__IO uint32_t u32FATCON;
struct
{
__IO uint32_t FPSEN:1;
__IO uint32_t FATS:3;
__IO uint32_t LFOM:1;
__I uint32_t RESERVE:27;
} FATCON;
};
} FMC_T;
结构体里面包含联合体,但是联合体却没有命名,后面就像下面一样引用了!if (FMC->ISPCON.ISPFF == 1)
{
FMC->ISPCON.ISPFF = 1;
return E_DRVFMC_ERR_ISP_FAIL;
} 以上都是新塘库内提供的程序!虽然我看着有问题,但是在库内编译确实是没有问题!
为什么我照着这种结构来编译器却让我给联合体取个名字? 我想知道源程序是怎么通过的!
|