问题已经解决,我在中断服务程序中修改了ARM的工作模式,上代码
static u32 sysreg; /* used as LR register */
#define IENABLE __asm { MRS sysreg, SPSR; MSR CPSR_c, #SYS32Mode }
#define IDISABLE __asm { MSR CPSR_c, #(IRQ32Mode|I_Bit); MSR SPSR_cxsf, sysreg }
照着网上的例程来的,没想到也有问题。。 由于时间关系,后面再去仔细研究下ARM工作模式。 |