我改写中断入口宏定义
我增加了并行执行,没有改动延迟时间。代码运行正常。原代码如下
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。由于位置不一样,效果也不一样!
dong wei1:
回复 Denny%20Yang99373:
溢出倒是没有,我也难得管了。只能能正常进入方式就可以了!