((CSL_IntcRegsOvly)CSL_CGEM0_5_REG_BASE_ADDRESS_REGS)->EVTCLR[0]=0xFFFFFFFF;
((CSL_IntcRegsOvly)CSL_CGEM0_5_REG_BASE_ADDRESS_REGS)->EVTCLR[1]=0xFFFFFFFF;
((CSL_IntcRegsOvly)CSL_CGEM0_5_REG_BASE_ADDRESS_REGS)->EVTCLR[2]=0xFFFFFFFF;
((CSL_IntcRegsOvly)CSL_CGEM0_5_REG_BASE_ADDRESS_REGS)->EVTCLR[3]=0xFFFFFFFF;
CSL_IntcRegsOvly 的内容如下:
typedef struct {
volatile Uint32 EVTFLAG[4];
volatile Uint8 RSVD0[16];
volatile Uint32 EVTSET[4];
volatile Uint8 RSVD1[16];
volatile Uint32 EVTCLR[4];
volatile Uint8 RSVD2[48];
volatile Uint32 EVTMASK[4];
volatile Uint8 RSVD3[16];
volatile Uint32 MEVTFLAG[4];
volatile Uint8 RSVD4[16];
volatile Uint32 EXPMASK[4];
volatile Uint8 RSVD5[16];
volatile Uint32 MEXPFLAG[4];
volatile Uint8 RSVD6[20];
volatile Uint32 INTMUX1;
volatile Uint32 INTMUX2;
volatile Uint32 INTMUX3;
volatile Uint8 RSVD7[112];
volatile Uint32 INTXSTAT;
volatile Uint32 INTXCLR;
volatile Uint32 INTDMASK;
} CSL_IntcRegs;
typedef volatile CSL_IntcRegs *CSL_IntcRegsOvly;
CSL_CGEM0_5_REG_BASE_ADDRESS_REGS 的内容如下
#define CSL_CGEM0_5_REG_BASE_ADDRESS_REGS (0x01800000)
我想的是这语句是给寄存器EVTCLR0,EVTCLR1 EVTCLR2 EVTCLR3赋值的,而他们的地址是从0180 0040h 到 0180 004Ch,可是自己并没有看到他们的值变成0xFFFFFFFF.给EVTMASK赋值的语句也是这样,这是怎么回事,是我找错地址了吗?
Andy Yin1:
地址没错,写EVTCLR寄存器是对EVTFLAG寄存器清零,并不会反映到EVTCLR寄存器。
对intc寄存器的操作可以直接调用csl intc lib中提高的函数,这些函数定义在pdk_intall_Path\packages\ti\csl\src\intc,如对EVCLR寄存器的操作对应CSL_intcEventClear,在csl_intcAux.h中,使用时在工程中包含pdk_intall_Path\packages\ti\csl\lib\ti.csl.intc.ae66e或者ti.csl.intc.ae66即可。
TI中文支持网