DSP寄存器地址与变量的关系
时间:10-02
整理:3721RD
点击:
接触DSP设计有段时间了,还是没搞明白DSP头文件中定义的变量是如何映射到地址的?就拿操作时间的控制寄存器TCR_BITS来说,头文件中是这么定义的struct TCR_BITS { // bits description Uint16 rsvd1:4; // 3:0 reserved
Uint16 TSS:1; // 4 Timer Start/Stop
Uint16 TRB:1; // 5 Timer reload
Uint16 rsvd2:4; // 9:6 reserved
Uint16 SOFT:1; // 10 Emulation modes
Uint16 FREE:1; // 11
Uint16 rsvd3:2; // 12:13 reserved
Uint16 TIE:1; // 14 Output enable
Uint16 TIF:1; // 15 Interrupt flag
};
问题来了:在我操作 TCR_BITS 的时候,比如写成TCR_BITS.TSS = 1,怎么能写入到这个寄存器呢?中间根本就没看到地址的赋值什么的呀?
Uint16 TSS:1; // 4 Timer Start/Stop
Uint16 TRB:1; // 5 Timer reload
Uint16 rsvd2:4; // 9:6 reserved
Uint16 SOFT:1; // 10 Emulation modes
Uint16 FREE:1; // 11
Uint16 rsvd3:2; // 12:13 reserved
Uint16 TIE:1; // 14 Output enable
Uint16 TIF:1; // 15 Interrupt flag
};
问题来了:在我操作 TCR_BITS 的时候,比如写成TCR_BITS.TSS = 1,怎么能写入到这个寄存器呢?中间根本就没看到地址的赋值什么的呀?
怎么没人回答呢?自己顶一下
在CMD文件GlobalVariableDefs.c文件中,将寄存器定义成段,然后在CMD文件中给段分配了存放地址。 个人理解,供你参考。
GlobalVariableDefs.c文件中将外设寄存器名称定义成"SECTION",然后在DSP28xx_Headers_nonBIOS.cmd中将"SECTION"分配到相应的地址中