typedef unsigned int uint32_t;
typedef __I uint32_t SYS_PDID_T; //这样的定义是什么意思?[/mw_shl_code]
typedef struct
{
SYS_PDID_T PDID;
SYS_RSTSRC_T RSTSRC;
SYS_IPRSTC1_T IPRSTC1;
SYS_IPRSTC2_T IPRSTC2;
__I uint32_t RESERVE0[2];
SYS_VDCR_T VDCR;
SYS_PORCR_T PORCR;
__I uint32_t RESERVE1[4];
SYS_GPAMFP_T GPA_MFP;
SYS_GPBMFP_T GPB_MFP;
SYS_GPIOHS_T GPIO_HS;
__I uint32_t RESERVE2[47];
__I uint32_t IMGMAP0;
__I uint32_t IMGMAP1;
SYS_REGLOCKADDR_T REGLOCKADDR;
__I uint32_t RESERVE3[7];
SYS_RCFFA_T RCFFA;
__I uint32_t RESERVE4[3];
SYS_PGCDO_T PGCDO;
} SYS_T;[/mw_shl_code]
SYS_T SYS __attribute__((at(SYS_BASE), zero_init));[/mw_shl_code]
//这句定义也不知道是什么意思,结合到程式猜测好像是把SYS_T替换成SYS,程式在操作的时候都是用SYS来操作的[/mw_shl_code]
typedef union
{
__IO uint32_t u32Reg;//不知道这样的定义是怎么一回事,程序当中找不到__IO是什么东西
struct
{
__IO uint32_t GPA_MFS0:1;
__IO uint32_t GPA_MFS1:1;
__IO uint32_t GPA_MFS2:1;
__IO uint32_t GPA_MFS3:1;
__IO uint32_t GPA_MFS4:1;
__IO uint32_t GPA_MFS5:1;
__IO uint32_t GPA_MFS6:1;
__IO uint32_t GPA_MFS7:1;
__IO uint32_t GPA_MFS8:1;
__IO uint32_t GPA_MFS9:1;
__IO uint32_t GPA_MFS10:1;
__IO uint32_t GPA_MFS11:1;
__IO uint32_t GPA_MFS12:1;
__IO uint32_t GPA_MFS13:1;
__IO uint32_t GPA_MFS14:1;
__IO uint32_t GPA_MFS15:1;
__IO uint32_t GPA_TYPEN:16;
} SYS_GPAMFP_T;[/mw_shl_code]
执行SYS.GPA_MFP.u32Reg &= ~u16Multifunction;
这个语句的结果是什么?如果调用这个函数是这样的DrvSYS_DisableMultifunctionGpioa(0x0040);[/mw_shl_code]
查看数据手册,GPA_MFP是一个寄存器,但是在程式的定义当中又查不到定义这个寄存器的地址
DrvSYS_DisableMultifunctionGpioa(UINT16 u16Multifunction)
{
SYS.GPA_MFP.u32Reg &= ~u16Multifunction;
}[/mw_shl_code]
这个函数的功能是对SYS_GPAMFP_T这个联合体中的u32Reg这个寄存器操作,[/mw_shl_code]
这样操作得到的结果是GPA_MFP这个寄存器的bit7清零,但是我不知道是怎么得到的这个结果[/mw_shl_code]
贴上GPA_MFP寄存器图
[/mw_shl_code]
以上文字描述的部分是我想知道的答案,可能描述的有点乱,还望各位高手帮忙解答,谢谢!!!!
[/mw_shl_code] |