HandleIRQ:
sub lr, lr, #4 @ 计算返回地址
stmdb sp!, { r0-r12,lr } @ 保存使用到的寄存器
@ 注意,此时的sp是中断模式的sp
@ 初始值是上面设置的3072
ldr lr, =int_return @ 设置调用ISR即EINT_Handle函数后的返回地址
ldr pc, =EINT_Handle @ 调用中断服务函数,在interrupt.c中
int_return:
ldmia sp!, { r0-r12,pc }^ @ 中断返回, ^表示将spsr的值复制到cpsr
如上程序,假如现在我已经进入了这个中断,然后保存现场,然后再调用 C 函数来处理一些应用,处理完,返回到这里,再退出中断!!
我想问一下,这条语句干嘛用的【 ldr lr, =int_return @ 设置调用ISR即EINT_Handle函数后的返回地址 】
它是设置 C函数的返回地址吗? 就是调用c ,完成后,通过 lr 来返回吗??
l