|
请教高手啦
我下拉周立功的ARM2100模版 然后在target.h中加了
__swi(0x00) void SwiHandle1(int Handle);
#define IRQDisable() SwiHandle1(0)
#define IRQEnable() SwiHandle1(1)
#define FIQDisable() SwiHandle1(2)
#define FIQEnable() SwiHandle1(3)
在startup.s中
;软中断
SoftwareInterrupt
B SoftwareInterrupt (从这里开始改)
CMP R0,#4
LDRLO PC,[PC,R0,LSL#2]
MOVS PC,LR
SwiFunction
DCD IRQDisable
DCD IRQEnable
DCD FIQDisable
DCD FIQEnable
IRQDisable
MRS R0,SPSR
ORR R0,R0,#NoInt
MSR SPSR_c,R0
MOVS PC,LR
IRQEnable
MRS R0,SPSR
BIC R0,R0,#NoInt
MSR SPSR_c,R0
MOVS PC,LR
FIQDisable
MRS R0,SPSR
ORR R0,R0,#NoFIQ
MSR SPSR_c,R0
MOVS PC,LR
FIQEnable
MRS R0,SPSR
BIC R0,R0,#NoFIQ
MSR SPSR_c,R0
MOVS PC,LR (改写到这里结束)
;取指令中止
PrefetchAbort
B PrefetchAbort
其余没变
然后在main.c中用了IRQEnable();
我想请问下程序到了IRQEnable();这一步然后调用函数 怎么就使能IRQ了呢 实在不懂 不懂他的执行过程 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|