TI中文支持网
TI专业的中文技术问题搜集分享网站

给寄存器赋值后,从memmory上看不到寄存器值的变化

((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即可。

赞(0)
未经允许不得转载:TI中文支持网 » 给寄存器赋值后,从memmory上看不到寄存器值的变化
分享到: 更多 (0)