This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6000,关于.fphead位置不一样,导致代码运行异常。请教老师们!!



我改写中断入口宏定义

我增加了并行执行,没有改动延迟时间。代码运行正常。原代码如下

VEC_ENTRY .macro addr

    STW B0,*--B15
||   MVKL addr,B0
     MVKH addr,B0
    B B0
||   LDW *B15++,B0
NOP 2
NOP 1
NOP 1

NOP 1

;.fphead  n,1,,W,BU,nobr,nosat,0001110
.endm

改写后:比上面代码增加了延迟时间,.fphead产生的位置发送改变。代码运行异常!

VEC_ENTRY .macro addr
    STW B0,*--B15
||   MVKL addr,B0
     MVKH addr,B0
    B B0
||   LDW *B15++,B0

NOP 2
NOP 1
NOP 1

NOP 1

;.fphead  n,1,,W,BU,nobr,nosat,0001110
NOP 1
NOP 1
.endm

      反汇编仅仅是.fphead位置不一样。前面能一直正常进入ISR,后来这个就进入ISR若干次后,程序就跑飞。这是什么原因呢??

     备注:汇编代码没有写.fphead仅仅为了说明本例子,在我用分号的位置产生fphead。由于位置不一样,效果也不一样!