嵌入式技术论坛
直播中

Mr_RMS

7年用户 327经验值
擅长:可编程逻辑 嵌入式技术 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[经验]

ARM中断初始化配置

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清楚中断标志位

更多回帖

发帖
×
20
完善资料,
赚取积分