这些都没有问题,硬件仿真时寄存器IF 已经为1。 已INTCTLSTAT.PRDINTEN12经设置为enable ,并且INTCTLSTAT.PRDINTSTAT12 也已经为1。
我的思路是这样的:我设置了全局变量flag=1,在中断子程序中 令flag=0,在主程序中while(flag)等待定时器中断 ; 可是程序就一直卡在这里。
我在软件仿真的情况下,按setp into 能够进入中断服务子程序中,但跳出来后程序还是卡在while(flag) 那里。
在硬件仿真时,按setp into 也没有显示进入中断函数(是不是硬件仿真时直接跳过的不显示 但是 是执行过的)因为我看到IF 寄存器从1置成0 了。
您帮我看看CMD 文件和vectors.asm 文件是否有问题?
CMD
-stack 0x00001000 /* Stack Size */
-heap 0x00001000 /* Heap Size */
MEMORY
[
VECS: o = 0x80000000 l = 0x00000f00
DSPL2RAM: o = 0x00800800 l = 0x00040000
DSPL1PRAM: o = 0x00E00000 l = 0x00008000
DSPL1DRAM: o = 0x00F00000 l = 0x00008000
DSPL2RAM2: o = 0x11800000 l = 0x0003FFFF
DSPL1PRAM2: o = 0x11E00000 l = 0x00008000
DSPL1DRAM2: o = 0x11F00000 l = 0x00008000
SHAREDRAM: o = 0x80000f00 l = 0x0001ffff
SDRAM: o = 0xC0000000 l = 0x20000000
]
SECTIONS
[ ".vectors" > VECS
.bss > DSPL2RAM
.cinit > DSPL2RAM
.cio > DSPL2RAM
.const > DSPL2RAM
.stack > DSPL2RAM
.sysmem > DSPL2RAM
.text > DSPL2RAM
.switch > DSPL2RAM
.far > DSPL2RAM
.calcbuffer > DSPL2RAM
.compxbuf > DSPL2RAM
.bufs > SHAREDRAM
.buffer > SDRAM
.buffertemp > SDRAM
.compxbuffer> SDRAM
]
这个CMD 程序把程序都放在SHARERAM中运行, 我想问问这样有问题吗?
(根据物理地址查看datasheet 知道 上面 CMD 的DSPL2RAM 也是在shareram 的空间内);
vectors.asm
.global _vectors
.global _c_int00
.global _T64P0_TINT12_ISR
.ref _c_int00
VEC_ENTRY .macro addr
STW B0,*--B15
MVKL addr,B0
MVKH addr,B0
B B0
LDW *B15++,B0
NOP 2
NOP
NOP
.endm
_vec_dummy:
B B3
NOP 5
.sect ".vectors"
.align 1024
_vectors:
_vector0: VEC_ENTRY _c_int00 ;RESET
_vector1: VEC_ENTRY _vec_dummy ;NMI
_vector2: VEC_ENTRY _vec_dummy ;RSVD
_vector3: VEC_ENTRY _vec_dummy
_vector4: VEC_ENTRY _T64P0_TINT12_ISR
_vector5: VEC_ENTRY _vec_dummy
_vector6: VEC_ENTRY _vec_dummy
_vector7: VEC_ENTRY _vec_dummy
_vector8: VEC_ENTRY _vec_dummy
_vector9: VEC_ENTRY _vec_dummy
_vector10: VEC_ENTRY _vec_dummy
_vector11: VEC_ENTRY _vec_dummy
_vector12: VEC_ENTRY _vec_dummy
_vector13: VEC_ENTRY _vec_dummy
_vector14: VEC_ENTRY _vec_dummy
_vector15: VEC_ENTRY _vec_dummy
谢谢!!