ZLG工程师,
您好!
其实在18号下午5点我打过一次电话,但是楞是没把自己要表达的意思表达清楚,只能在发帖了.....
$IRQ_Label
1 SUB LR, LR, #4
2 STMFD SP!, {R0-R3, R12, LR}
3 MRS R3, SPSR
4 STMFD SP!, {R3}
5 STMFD SP, {LR}^ ; 保存用户状态的SP,注意不能回写
; 如果回写的是用户的SP,所以后面要调整SP
6 SUB SP, SP, #4
7 MSR CPSR_c, #(NoInt | SYS32Mode)
8 BL $IRQ_Exception_Function
Timer0_Handler HANDLER Timer0
我说说我理解的脉络:
-> 程序运行(USE模式)
->发生Timer0 IRQ中断 (利用宏跳转到上面代码) 这个时候为IRQ模式 需要保存USE模式下的任务环境,代码
1-4完成了此功能 在这些代码中出现的SP 就是SP_irq
接下来,因为需要跳转到Timer0去处理,需要切换成SYS模式,为了处理完子程序,
问题就是
不清楚代码5 6 起什么作用了? 能不能按我上面说的脉络,帮我解释下?
辛苦了! |