牛卧堂MCU技术交流
标题:
结构体问题
[打印本页]
作者:
wanga87
时间:
2015-12-17 16:04
标题:
结构体问题
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;
}
以上都是新塘库内提供的程序!虽然我看着有问题,但是在库内编译确实是没有问题!
为什么我照着这种结构来编译器却让我给联合体取个名字? 我想知道源程序是怎么通过的!
作者:
CHLIN55
时间:
2015-12-18 21:08
這種結構應該是舊版BSP使用的,
建議樓主參考BSP CMSIS 3.00以後版本的寫法比較好.
作者:
wanga87
时间:
2015-12-23 10:07
我知道是旧版的,我就是想知道一开始他是怎么通过编译的,研究一下他的程序写法!
作者:
szgaos
时间:
2016-3-2 09:13
这个是常规用法,不知你用iar还是mdk,在iar中好用一点
作者:
andrewz
时间:
2016-3-2 15:45
没看过这样的结构体.
一般用我都会给它先取名字.
不然我自己会看不懂.
欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/)
Powered by Discuz! X3.2