基于44B0豪华版的代码,偶已经基本上排除了程序其它地方出错的可能性,问题应该就出在下面的这段代码上,这是一个第一级的中断服务程序,但不知道为什么程序非常不稳定,通常第一次中断能正确处理,后面就不行了。。。偶想了半天也没弄明白,只能求教各位大虾了!!!
================================
EXPORT OSEINT4567ISR OSEINT4567ISR ;save lr and spsr in irq mode SUB lr, lr, #4 STMFD sp!, {lr} MRS lr, SPSR STMFD sp!, {r12,lr} ;switch to svc32 mode, and disable interrupt MSR CPSR_c, #0x93 STMFD sp!, {r0-r12,lr} LDR r3, addr_OSTCBCur LDR r3, [r3] STR sp, [r3] ; OSTCBCur -> stkptr = sp
BL OSIntEnter BL EInt4567Isr BL OSIntExit LDMFD sp!, {r0-r12,lr} ;switch to irq mode MSR CPSR_c, #0x92 ;restore lr and spsr in irq mode LDMFD sp!, {r12,lr} MSR SPSR_cf, lr ;return LDMFD sp!, {pc}^ ===================================