ARM中断需要配置的内容:
1、保存现场:
sub lr, lr, #4 @ 计算返回地址 进入中断模式
stmdb sp!, { r0-r12,lr } @ 保存使用到的寄存器:sp=sp-4,*sp=lr,sp=SP-4*SP=r12,......
@sp=sp-4, *sp=r0
@ 注意,此时的sp是中断模式的sp
@ 初始值是上面设置的3072
@sp! 加叹号的作用是更新基址寄存器
ldr lr, =int_return @ 设置调用ISR即EINT_Handle函数后的返回地址,中断程序执行完会
@自动将lr寄存器的值赋给PC,因此需要在执行中断程序前设置好lr
ldr pc, =EINT_Handle @ 调用中断服务函数,在interrupt.c中
中断初始化程序的内容主要包括:
1、设置中断源
2、设置中断通道,主要使用有EINTMASK、INTMSK等寄存
3、设置优先级:PRIORITY寄存器
中断程序里必须有清楚中断标志位:EINTPEND、SRCPND、INTPND等寄存器写1清楚中断标志位